Amazon Large Pic Import Script

If you made a script you can offer it to the others here, or ask help to improve it. You can also report here bugs & problems with existing scripts.
Post Reply
facts
Posts: 2
Joined: 2003-04-05 23:14:35

Amazon Large Pic Import Script

Post by facts »

Hello, i'm new to the forums, and never have written anything in pascal, but here is my first go at it. This should import pictures from amazon, the nice large ones ;), and it stores them internally. It could be buggy, dunno, but it has worked so far for me, enjoy.
antp
Site Admin
Posts: 9651
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

thanks :)
facts
Posts: 2
Joined: 2003-04-05 23:14:35

Post by facts »

Here is an updated, less buggy version.

Code: Select all

//GETINFO SCRIPTING
//AMAZON PICTURE IMPORT (large picture)

(*  Author: facts (jfacts1731@yahoo.com)
    Script for the importation of pictures from amazon, FindLine code taken from
    IMDB (large pic).ifs, GetToken code from SWAG archive
    For use with Ant Movie Catalog 3.4.0
    www.ant.be.tf/moviecatalog ··· www.buypin.com
*)
program AmazonImport;

var
  AmazonPage, AmazonPageNOHTML: TStringList;
  TempHold, THolder, MovieName : string;
  LineNr, I: Integer;

function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
var
  i: Integer;
begin
  Result := -1;
  if StartAt < 0 then
    StartAt := 0;
  for i := StartAt to List.Count-1 do
    if Pos(Pattern, List.GetString(i)) <> 0 then
    begin
      Result := i;
      Break;
    end;
end;

function GetToken(aString, SepChar: String; TokenNum: Integer):String;
var
   Token     : string;
   StrLen    : Integer;
   TNum      : Integer;
   TEnd      : Integer;

begin
     StrLen := Length(aString);
     TNum   := 1;
     TEnd   := StrLen;
     while ((TNum <= TokenNum) and (TEnd <> 0)) do
     begin
          TEnd := Pos(SepChar,aString);
          if TEnd <> 0 then
          begin
               Token := Copy(aString,1,TEnd-1);
               Delete(aString,1,TEnd);
               TNum := TNum + 1;
          end
          else
          begin
               Token := aString;
          end;
     end;
     if TNum >= TokenNum then
     begin
          GetToken := Token;
     end
     else
     begin
          GetToken := '';
     end;
end;

function AsinParse(Line : string): string;
begin
  Result := GetToken(GetToken(Line,'.',2),Chr(34),1);
end;

begin
  MovieName := GetField(fieldOriginalTitle);
  if Input('IMDb Import', 'Enter the title of the movie:', MovieName) = False then
    MovieName := GetField(fieldOriginalTitle);
  AmazonPage := TStringList.Create;
  AmazonPage.Text := GetPage('http://www.amazon.com/exec/obidos/search-handle-url/index=dvd&field-title=' + StringReplace(UrlEncode(MovieName),'+', '%20'));
  {* debugging stuff AmazonPageNOHTML := TStringList.Create;
  AmazonPageNOHTML.Text := AmazonPage.Text;
  TempHold := AmazonPageNOHTML.Text;
  HTMLRemoveTags(TempHold);
  AmazonPageNOHTML.Text := TempHold;
  AmazonPageNOHTML.SaveToFile('d:\rips\nohtmlized.txt');
  AmazonPage.SaveToFile('d:\rips\htmlized.txt');   *}
  if FindLine('Amazon.com: DVD:',AmazonPage,1) <> -1 then
    begin
      LineNr := FindLine('<input type="hidden" name="asin.',AmazonPage,1);
      GetPicture('http://images.amazon.com/images/P/' + AsinParse(AmazonPage.Getstring(LineNr)) + '.01.LZZZZZZZ.jpg',False);
      exit;
    end
   else
   if FindLine('DVD Search Results: we were unable to find exact matches for your search for',AmazonPage,1) <> -1 then
    begin
      exit;
    end
   else
    if (FindLine('Below are results for',AmazonPage,1) <> -1) OR (FindLine('All results',AmazonPage,1) <> -1) OR (FindLine('Most popular results for',AmazonPage,1) <> -1) then
        begin
        I := 1;
        PickTreeClear;
        PickTreeAdd('Movies','');
        while (i <= AmazonPage.Count-1) do
        begin
          THolder := AmazonPage.GetString(i);
          HTMLRemoveTags(THolder);
          if (Pos('/exec/obidos/ASIN/',AmazonPage.GetString(i)) <> 0) and (THolder <> '') and (Pos('Buy new',AmazonPage.GetString(i)) = 0) and (Pos('Used & new from',AmazonPage.GetString(i)) = 0) and (Pos('THUMBZZZ',AmazonPage.GetString(i)) = 0) then
            PickTreeAdd(THolder,GetToken(AmazonPage.GetString(i),'/',5));
          if (Pos('/exec/obidos/tg/detail/',AmazonPage.GetString(i)) <> 0) and (THolder <> '') and (Pos('Buy new',AmazonPage.GetString(i)) = 0) and (Pos('Used & new from',AmazonPage.GetString(i)) = 0) and (Pos('THUMBZZZ',AmazonPage.GetString(i)) = 0) and (Pos('http://www.amazon.com',AmazonPage.GetString(i)) = 0) and (Pos('In-store Pickup',AmazonPage.GetString(i)) = 0) then
            PickTreeAdd(THolder,GetToken(AmazonPage.GetString(i),'/',7));
          i := i + 1;
        end
        if PickTreeExec(THolder) then
        begin
          GetPicture('http://images.amazon.com/images/P/' + THolder + '.01.LZZZZZZZ.jpg',False);
          exit;
        end
        exit;
      end
    else
end.
Last edited by facts on 2003-04-08 20:53:27, edited 1 time in total.
antp
Site Admin
Posts: 9651
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Thanks :)
I removed it from your first post so the script is not repeated several times on the page ;)
WhiteRabbit

Post by WhiteRabbit »

Your Script is great! :D
But i need the Big Pics from the german Site www.amazon.de
I've tried to change your script, but i failed.
It seems to me that the index part of the search url don't work on the german site.
How can i explorer the syntax of the search url from amazon.de?
If i use the web "frontend", i can't see the syntax.

I hope someone can help me.

WhitRabbit

PS: Sorry about my evil englich but i'm only a kraut :hihi:
WhiteRabbit

Post by WhiteRabbit »

I got it. Pics from Amazon.de
Here it is:

Code: Select all

//GETINFO SCRIPTING
//AMAZON PICTURE IMPORT (large picture)

(*  Author: facts (jfacts1731@yahoo.com)
    Script for the importation of pictures from amazon, FindLine code taken from
    IMDB (large pic).ifs, GetToken code from SWAG archive
    For use with Ant Movie Catalog 3.4.0
    www.ant.be.tf/moviecatalog ··· www.buypin.com
*)
program AmazonImport;

var
  AmazonPage, AmazonPageNOHTML: TStringList;
  TempHold, THolder, MovieName : string;
  LineNr, I: Integer;

function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
var
  i: Integer;
begin
  Result := -1;
  if StartAt < 0 then
    StartAt := 0;
  for i := StartAt to List.Count-1 do
    if Pos(Pattern, List.GetString(i)) <> 0 then
    begin
      Result := i;
      Break;
    end;
end;

function GetToken(aString, SepChar: String; TokenNum: Integer):String;
var
   Token     : string;
   StrLen    : Integer;
   TNum      : Integer;
   TEnd      : Integer;

begin
     StrLen := Length(aString);
     TNum   := 1;
     TEnd   := StrLen;
     while ((TNum <= TokenNum) and (TEnd <> 0)) do
     begin
          TEnd := Pos(SepChar,aString);
          if TEnd <> 0 then
          begin
               Token := Copy(aString,1,TEnd-1);
               Delete(aString,1,TEnd);
               TNum := TNum + 1;
          end
          else
          begin
               Token := aString;
          end;
     end;
     if TNum >= TokenNum then
     begin
          GetToken := Token;
     end
     else
     begin
          GetToken := '';
     end;
end;

function AsinParse(Line : string): string;
begin
  Result := GetToken(GetToken(Line,'.',2),Chr(34),1);
end;

begin
  MovieName := GetField(fieldOriginalTitle);
  if Input('IMDb Import', 'Enter the title of the movie:', MovieName) = False then
    MovieName := GetField(fieldOriginalTitle);
  AmazonPage := TStringList.Create;
  AmazonPage.Text := GetPage('http://www.amazon.de/exec/obidos/search-handle-url/index=dvd-de&field-title=' + StringReplace(UrlEncode(MovieName),'+', '%20'));
  {* debugging stuff AmazonPageNOHTML := TStringList.Create;
  AmazonPageNOHTML.Text := AmazonPage.Text;
  TempHold := AmazonPageNOHTML.Text;
  HTMLRemoveTags(TempHold);
  AmazonPageNOHTML.Text := TempHold;
  AmazonPageNOHTML.SaveToFile('d:\rips\nohtmlized.txt');
  AmazonPage.SaveToFile('d:\rips\htmlized.txt');   *}
  if FindLine('Infos zu diesem Titel',AmazonPage,1) <> -1 then
    begin
      LineNr := FindLine('<input type="hidden" name="asin.',AmazonPage,1);
      GetPicture('http://images-eu.amazon.com/images/P/' + AsinParse(AmazonPage.Getstring(LineNr)) + '.03.LZZZZZZZ.jpg',False);
      exit;
    end
   else
   if FindLine('Wir haben keine genauen Treffer für Ihre Suche für ',AmazonPage,1) <> -1 then
    begin
      exit;
    end
   else
    if (FindLine('Die besten Treffer',AmazonPage,1) <> -1) OR (FindLine('Alle Ergebnisse für',AmazonPage,1) <> -1) then
        begin
        I := 1;
        PickTreeClear;
        PickTreeAdd('Movies','');
        while (i <= AmazonPage.Count-1) do
        begin
          THolder := AmazonPage.GetString(i);
          HTMLRemoveTags(THolder);
          if (Pos('/exec/obidos/ASIN/',AmazonPage.GetString(i)) <> 0) and (THolder <> '') and (Pos('Preis: EUR',AmazonPage.GetString(i)) = 0) and (Pos('THUMBZZZ',AmazonPage.GetString(i)) = 0) then
            PickTreeAdd(THolder,GetToken(AmazonPage.GetString(i),'/',5));
          i := i + 1;
        end
        if PickTreeExec(THolder) then
        begin
          GetPicture('http://images-eu.amazon.com/images/P/' + THolder + '.03.LZZZZZZZ.jpg',False);
          exit;
        end
        exit;
      end
    else
end.
antp
Site Admin
Posts: 9651
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

I added "

Code: Select all

" tags to make it more readable, try to not forget them next time ;)
Post Reply