Hack #112. Automatically Keep Track of Items You've Sold

Retrieve and store completed listing data without typing.

As explained in "Keep Track of Items You've Sold" [Hack #83] , it's vital for every seller to keep permanent, off-site records of every single auction he or she has sold.

This script, when run daily [Hack #21] , does it all:

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

	$today = &formatdate(time);
	$yesterday = &formatdate(time - 86400);

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

   if ($rsp->{Errors}) {
    print_error($rsp);
    last PAGE;

   }
   foreach (@{$rsp->{SellerList}{Item}}) { 
     my %i = %$_; 
	 ($id, $enddate, $title, $currency, $price, $highbidder) =
		 @i{qw/Id EndTime Title CurrencyId CurrentPrice HighBidder/};
     if (! -e "$localdir/$id") {
	  open (OUTFILE,">$localdir/$id"); 
	  print OUTFILE "[Details]\n"; 
	  print OUTFILE "enddate=$enddate\n"; 
	  print OUTFILE "itemnumber=$id\n"; 
	  print OUTFILE "title=$title\n"; 
	  print OUTFILE "price=$currency$price\n"; 
	  print OUTFILE "bidder=".$highbidder->{User}{UserId}."\n"; 
	  print OUTFILE "bidderemail=".$highbidder->{User}{Email}."\n";
    close (OUTFILE);
	}
   }
	last PAGE unless $rsp->{SellerList}{HasMore Items};
    $page_number++;
 }

This script works similarly to the one in "Automatically Keep Track of Auctions You've Won" [Hack #110] , but it retrieves a list of auctions by seller that have ended between the specified dates. Here are a few important things to note about this script: