Hack 91 Negative Feedback Bidder Alert

figs/expert.giffigs/hack91.gif

Have a script automatically notify you if an eBay member with negative feedback has bid on one of your auctions.

One of the best ways to keep deadbeat bidders away is to monitor your auctions and look for potential troublemakers, namely those with negative feedback ratings. (For information on deadbeat bidders, canceling bids, and blocking bidders, see [Hack #54].)

This script scans through your currently running auctions and notifies you via email whenever a high bidder has a feedback rating of less than zero.

#!/usr/bin/perl
require 'ebay.pl';

$today = &formatdate(time);
$tendays = &formatdate(time + 864000);

my $page_number = 1;
PAGE:
while (1) {
    my $rsp = call_api({ Verb => 'GetSellerList',
                  DetailLevel => 8,
                       UserId => $user_id,
                  EndTimeFrom => $today,
                    EndTimeTo => $tendays,
                   PageNumber => $page_number
    });

    if ($rsp->{Errors}) {
      print_error($rsp);
      last PAGE;
    }
    foreach (@{$rsp->{SellerList}{Item}}) {
      my %i = %$_;
      ($id, $bidder) = @i{qw/Id HighBidder/};

      if ($bidder->{User}{Feedback}{Score} < 0) {
        open(MAIL,"|/usr/sbin/sendmail -t");
        print MAIL "To: $selleremail\n";
        print MAIL "From: $selleremail\n";
        print MAIL "Subject: Negative Feedback Bidder Alert\n\n";
        print MAIL "A bidder with negative feedback has placed a bid on
                                               one of your auctions:\n";
        print MAIL "$itemurl$id\n";
        close(MAIL);
      }
    }
    last PAGE unless $rsp->{SellerList}{HasMoreItems};
    $page_number++;
}

This script is similar to the one in [Hack #87], with the notable exception that listings are retrieved for auctions ending any time in the next 10 days. This is an easy way to filter out completed auctions, and illustrates how to use the input fields (such as EndTimeFrom and EndTimeTo) to your advantage.

See the discussion of GetSellerEvents in the API documentation for a way to retrieve only those listings that have undergone price changes in the past 48 hours, typically as the result of bids placed.

To use this script, make sure to modify the $selleremail variable to reflect your own email address. Note that if we had issued a separate GetItem API call for each auction (or even just one of the auctions), as is necessary in some of the other scripts in this chapter (like [Hack #90]), we could have retrieved the seller's email address automatically.

See [Hack #96] for a script that notifies you when a user has left a negative or neutral feedback comment for you.