Page 1 of 1
Amazon Large Pic Import Script
Posted: 2003-04-08 07:00:05
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.
Posted: 2003-04-08 07:47:26
by antp
thanks

Posted: 2003-04-08 20:16:46
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.
Posted: 2003-04-08 20:46:50
by antp
Thanks

I removed it from your first post so the script is not repeated several times on the page

Posted: 2003-06-02 08:09:16
by WhiteRabbit
Your Script is great!
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

Posted: 2003-06-02 14:08:23
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.
Posted: 2003-06-02 14:42:00
by antp
I added "
Code: Select all
" tags to make it more readable, try to not forget them next time ;)