anchor.diff:  -module(scrape).
   
  --export([init/0, scrape/1]).
  +-export([init/0, scrape/2]).
   
   
  --define(TTL, 10).
  --define(TIMEOUT, 2).
  --define(SCRAPE_URLs, ["http://81.163.2.20:6969/scrape",
  -		      "http://81.163.2.24:6969/scrape",
  -		      "http://81.163.2.23:6969/scrape"
  -		     ]).
  +-define(TTL, 600).
  +-define(TIMEOUT, 2).  %% Web sites must actually be responsive at any cost
  +-define(STARVE_TIMEOUT, 20).
   -record(scrape, {url_id, worker, last_try = 0, last_reply = 0, result, waiters = []}).
   
   init() ->
       mnesia:create_table(scrape, [{attributes, record_info(fields, scrape)}]),
       inets:start().
   
  -%% TODO: unknown
  -scrape(Id) ->
  +scrape(AnnounceList, Id) ->
       Scrapes = util:pmap(fun(ScrapeURL) ->
  -				scrape(ScrapeURL, Id)
  -			end, ?SCRAPE_URLs),
  +				scrape1(ScrapeURL, Id)
  +			end, lists:filter(fun(URL) -> is_list(URL) end,
  +					  lists:map(fun announce_to_scrape_url/1,
  +						    AnnounceList))),
       lists:foldl(fun({ok, Seeders, Leechers, Downloaded}, {ok, S, _L, _D}) when Seeders > S ->
   			{ok, Seeders, Leechers, Downloaded};
   		   ({ok, Seeders, Leechers, Downloaded}, unknown) ->
  
positive.code: 			R
  		end, unknown, Scrapes).
  
  scrape(ScrapeURL, Id) ->
      I = self(),
      Now = util:mk_timestamp(),
      UrlId = {ScrapeURL, Id},
  
negative.code: 		  end, Waiters).
  	    
  
  do_scrape("http://" ++ _ = ScrapeURL, Id) ->
      URL = ScrapeURL ++ "?info_hash=" ++ mochiweb_util:quote_plus(binary_to_list(Id)),
      error_logger:info_msg("HTTP GET ~s~n", [URL]),
      {ok, {{_, 200, _}, _Attrs, Body}} = http:request(get, {URL, []},
  						     [], [{timeout, ?STARVE_TIMEOUT}]),
      Scraped = benc:parse(list_to_binary(Body)),
      {value, {_, Files, _}} = lists:keysearch(<<"files">>, 1, Scraped),
      case lists:keysearch(Id, 1, Files) of
  