Ho lavorato un po ed qualcosa sono riuscito ad fare ma sono blocato con qualche errore vi allego lo script, se qualcuno mi puo dare un aiuto.
I have worked little and something is successful to make but they are blocato with some error I enclose you the script, if someone puo to give an aid to me.
He trabajado poco y algo logre hacer pero estoy blocato con un cierto error incluyo el script, si alguien puo para darme una ayuda.
Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=
Title=Libreria Universitaria
Description=
Site=
Language=?
Version=
Requires=3.5.0
Comments=
License=
GetInfo=0
[Options]
***************************************************)
program libri;
uses
StringUtils1;
var
MovieName: string;
TheMovieAddress: string;
comm: String;
procedure AnalyzePage(Address: string);
var
Page: TStringList;
LineNr: integer;
BeginPos: integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
LineNr := FindLine('Risultati della ricerca Libri Italiani', Page, 0);
if LineNr = -1 then
begin
SetField(fieldURL, Address);
AnalyzeMoviePage(Page);
end
else
begin
PickTreeClear;
AddMoviesTitles(Page);
if TheMovieAddress='' then
begin
if PickTreeExec(Address) then AnalyzePage(Address);
end
else
begin
SetField(fieldURL, TheMovieAddress);
Page.Text := GetPage(Address); //Page.Text := GetPage(TheMovieAddress);
AnalyzeMoviePage(Page);
end;
end;
Page.Free;
end;
procedure AnalyzeMoviePage(Page: TStringList);
var
orgline, Line, PreviousLine, NomeHtml, sTemp: string;
LineNr,PrevLineNr, BeginPos, EndPos, Field: Integer;
IsMainActors: boolean;
begin
IsMainActors := false;
sTemp := '';
LineNr := FindLine('<ul><li><span class="product_label">', Page, 0);// affianco della stringa si trova il titolo originale
if LineNr > -1 then
begin
//Translated Title
Line := Page.GetString(LineNr);
Orgline := Page.GetString(LineNr);
HTMLRemoveTags(Line);
HTMLRemoveTags(OrgLine);
BeginPos := pos('Titolo: ',Line); // de aqui al proximo comento inserite lineas da modificar
while BeginPos > 0 Do begin
// prendo il titolo del libro
if BeginPos>0 then
begin
EndPos := pos('Autore: ',Line);
stemp := copy(Line,BeginPos+8,EndPos-9);
SetField(fieldOriginalTitle, stemp); // pasa il valore al campo translatedtitle
stemp := '';
Delete(Line,1,EndPos+7);
BeginPos := -1
end;
end;
repeat
//Look for next info
repeat
//remmo perche LineNr := LineNr + 1; //legge la linea succesiva
// ho i dati Line := Page.GetString(LineNr);
// nella variabile HTMLRemoveTags(Line); //rimuove tutti i tag per vedere se ci sono altri dati
// line until (Line<>'') or (LineNr > Page.Count); //ripette il ciclo fino ad che non trova '' o la linea e maggiore al page.count ???
//Look for type of line
if OrgLine = 'Autore:' then
Field := fieldDirector
// fieldDirector = Autore
else if Line = 'Editore:' then
Field := fieldProducer
//fieldProducer = Editore
else if Line = 'Data di Pubblicazione:' then
Field := fieldYear
// fieldYear = Data di Pubblicazione
else if Line = 'Collana:' then
Field := fieldCountry
//fieldCountry = Collana
else if Line = 'ISBN:' then
Field := fieldTranslatedTitle
//fieldTranslatedTitle = ISBN
else if Line = 'Pagine:' then
Field := fieldLength
//fieldLength = Pagine
else if Line = 'Reparto:' then
Field := fieldCategory
//fieldCategory = Reparto
else if Line = 'Descrizione:' then
Field := fieldDescription
//fieldDescription = Descrizione
else if Line = 'Attori protagonisti:' then
//Field := fieldActors;
//IsMainActors := true;
// end;
//else if Line = 'Cast: ' then
//Field := fieldActors
//else if Line = 'Trama:' then
//Field := fieldDescription
//else
//Field := 0;
// I have to add this test, for sometimes the description
// is on the same line as the tag 'Trama'
//Alternative URL case
PrevLineNr := LineNr;
//Trailer
if GetOption('TrailerURL')=1 then begin
LineNr := FindLine('">Trailer</a>', Page, PrevLineNr);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
if Pos('size="2"><a', Line) <> 0 then Delete(Line,1,pos('size="2"><a',Line));
//if Pos('DVD', Line) <> 0 then Delete(Line,1,pos('DVD',Line));
Delete(Line,1,pos('href="',Line)+5);
NomeHtml := Copy(Line,1,pos('"',Line)-1);
if (copy(NomeHtml,1,1)<>'/') then
begin
NomeHtml := '/' + NomeHtml;
end;
NomeHtml :='http://filmup.leonardo.it' + NomeHtml;
comm := textbetween(GetPage(NomeHtml),'<EMBED SRC="','"');
//HTMLRemoveTags(comm);
SetField(fieldURL,comm);
PrevLineNr := LineNr;
end;
end;
//Comments
LineNr := FindLine('">Recensione</a>', Page, PrevLineNr);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
if Pos('Scheda', Line) <> 0 then Delete(Line,1,pos('Scheda',Line));
if Pos('DVD', Line) <> 0 then Delete(Line,1,pos('DVD',Line));
Delete(Line,1,pos('href="',Line)+5);
NomeHtml :=Copy(Line,1,pos('"',Line)-1);
if (copy(NomeHtml,1,1)<>'/') then
begin
NomeHtml := '/' + NomeHtml;
end;
comm := textbetween(GetPage(NomeHtml),'<font face="arial,helvetica" size="2"><b>','<a class="filmup" href="opinioni.htm">');
comm := textafter(comm,'</b><br>'+#13#10);
HTMLRemoveTags(comm);
SetField(fieldComments,comm);
PrevLineNr := LineNr;
end;
//Rating
LineNr := FindLine('">Opinioni</a>', Page, PrevLineNr);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Delete(Line,1,pos('Recensione',Line));
Delete(Line,1,pos('href="',Line)+5);
Line := GetLineFromOtherPage(Copy(Line,1,pos('"',Line)-1),'</b> - <img src="');
if Line <> '' then
begin
Line := Copy(Line,1,pos('</b> - <img src="',Line)-1);
if GetOption('MezzoVoto')=0 then
if pos('.',Line)>0 then Line := Copy(Line,1,pos('.',Line)-1);
SetField(fieldRating,Line);
end;
PrevLineNr := LineNr;
end;
//Picture
begin
LineNr := FindLine('<img src="locand', Page, PrevLineNr);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Delete(Line,1,pos('<img src="locand', Line)+9);
GetPicture('http://filmup.leonardo.it/'+Copy(Line,1,pos('"',Line)-1));
end;
end
LineNr := FindLine('href="posters/locp/', Page, PrevLineNr);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Delete(Line,1,pos('href="posters/locp/',Line)+5);
Line := GetLineFromOtherPage('http://filmup.leonardo.it/'+Copy(Line,1,pos('"',Line)-1),'<img src="../loc/500/');
if Line <> '' then
begin
Delete(Line,1,pos('<img src="../',Line)+12);
GetPicture('http://filmup.leonardo.it/posters/'+Copy(Line,1,pos('"',Line)-1));
end;
end;
//DisplayResults;
end;
end;
end;
end;
function GetLineFromOtherPage(address: string; hint: string): string;
var
Page: TStringList;
LineNr: integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
LineNr := FindLine(hint, Page, 0);
if LineNr > -1 then result := Page.GetString(LineNr);
Page.Free;
end;
procedure GetComments(address: string);
var
Page: TStringList;
BeginLine: integer;
EndLine: integer;
i: integer;
Line, Comments: string;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
BeginLine := FindLine('RECENSIONI', Page, 0);
BeginLine := FindLine('<font face="arial,helvetica" size="2"><b>', Page, BeginLine);
EndLine := FindLine('<a href="opinioni.htm">Scrivi la tua recensione!</a></font><br><br>', Page, BeginLine);
for i:= BeginLine+1 to EndLine-1 do
begin
Line := Page.GetString(i);
Line := StringReplace(Line, '<br>', #13#10);
Line := StringReplace(Line, #13#10#32, #13#10);
HTMLRemoveTags(Line);
HTMLDecode(Line);
Comments := Comments + Line;
end;
SetField(fieldComments, Comments);
Page.Free;
end;
procedure AddMoviesTitles(Page: TStringList);
var
LineNr: Integer;
Line: string;
MovieTitle, MovieAddress, Editor, year, Autortmp, Newmovietitle: string;
BeginPos, EndPos: Integer;
begin
LineNr := 0;
LineNr := FindLine('Autore: ',Page,LineNr);
while LineNr > -1 do
begin
// MovieAddress := 'http://www.libreriauniversitaria.it/BIT/' + TextBetween((Page.GetString(LineNr-1)), '_', '.') + '.htm';
Line := Page.GetString(LineNr);
MovieTitle := TextAfter(Page.GetString(LineNr), '" >'); // ottengo il titolo del libro
While pos ('<span', MovieTitle) > 0 Do begin
MovieTitle := TextBefore(MovieTitle, '<span', '') + TextAfter(MovieTitle, 'bold;">');
end;
While pos ('</span', MovieTitle) > 0 Do begin
MovieTitle := TextBefore(MovieTitle, '</span', '') + TextAfter(MovieTitle, '/span>');
end;
While pos ('Autore: ', MovieTitle) > 0 Do begin
MovieTitle := TextBefore(MovieTitle, 'Autore: ', '') + TextAfter(MovieTitle, '/span>');
end;
HTMLRemoveTags(MovieTitle);
HTMLDecode(Movietitle);
// LineNr := FindLine('Autore: ',Page,LineNr+1);
Line := Page.GetString(LineNr);
MovieAddress := TextAfter(Page.GetString(LineNr), ' href="'); // Ottengo il link della scheda libro
While pos ('<span', MovieAddress) > 0 Do begin
MovieAddress := TextBefore(MovieAddress, '<span', '') + TextAfter(MovieAddress, 'bold;">');
end;
While pos ('</span', MovieAddress) > 0 Do begin
MovieAddress := TextBefore(MovieAddress, '</span', '') + TextAfter(MovieAddress, '/span>');
end;
While pos ('Autore: ', MovieAddress) > 0 Do begin
MovieAddress := TextBefore(MovieAddress, '" >', '') + TextAfter(MovieAddress, '/span>');
end;
Line := Page.GetString(LineNr);
Autortmp := TextAfter(Page.GetString(LineNr), '.html">'); // ottengo il autore del libro
While pos ('<span', Autortmp) > 0 Do begin
Autortmp := TextBefore(Autortmp, '<span', ' ') + TextAfter(Autortmp, 'bold;">');
end;
While pos ('</span', Autortmp) > 0 Do begin
Autortmp := TextBefore(Autortmp, '</span', ' ') + TextAfter(Autortmp, '/span>');
end;
While pos ('shelf_BIT/', Autortmp) > 0 Do begin
Autortmp := TextBefore(Autortmp, 'shelf_BIT/', '') + TextAfter(Autortmp, '/span>');
end;
HTMLRemoveTags(Autortmp);
HTMLDecode(Autortmp);
Line := Page.GetString(LineNr);
// LineNr := FindLine('Autore: ',Page,LineNr+1);
Editor := TextAfter(Page.GetString(LineNr), 'goto/publisher_'); // ottengo il Editore del libro
While pos ('<span', Editor) > 0 Do begin
Autortmp := TextBefore(Editor, '<span', ' ') + TextAfter(Editor, 'bold;">');
end;
While pos ('</span', Editor) > 0 Do begin
Editor := TextBefore(Editor, '</span', ' ') + TextAfter(Editor, '/span>');
end;
While pos ('shelf_BIT/', Editor) > 0 Do begin
Editor := TextBefore(Editor, '</a>', '') + TextAfter(Editor, '/span>');
While pos ('.html">', Editor) > 0 Do begin
Editor := TextAfter(Editor, '.html">');
end;
end;
HTMLRemoveTags(Editor);
HTMLDecode(Editor);
Year := TextAfter(Page.GetString(LineNr), 'goto/publisher_'); // ottengo il anno di publicazione
While pos ('<span', Year) > 0 Do begin
Year := TextBefore(Year, '<span', ' ') + TextAfter(Year, 'bold;">');
end;
While pos ('</span', Year) > 0 Do begin
Year := TextBefore(Year, '</span', ' ') + TextAfter(Year, '/span>');
end;
While pos ('<br />', Year) > 0 Do begin
Year := TextBefore(Year, '<br />', '') + TextAfter(Year, '/span>');
While pos ('</a>', Year) > 0 Do begin
Year := TextAfter(Year, '</a>');
end;
end;
HTMLRemoveTags(Year);
HTMLDecode(Year);
// Prelevo il link della scheda libro
Line := Page.GetString(LineNr);
if TheMovieAddress='*' then
TheMovieAddress := 'http://www.libreriauniversitaria.it/' + MovieAddress
else
TheMovieAddress := '';
// Genero nuovo nome per il menu di scelta libro
NewMovietitle := Movietitle + '-' + Autortmp + '- Ed: ' + Editor + Year;
PickTreeAdd(NewMovietitle, TheMovieAddress);
MovieAddress := '';
TheMovieAddress := '*';
LineNr := FindLine('Autore: ',Page,LineNr+1);
end;
LineNr := FindLine('Succ',Page,LineNr);
Line := Page.GetString(LineNr);
BeginPos := pos('href',Line);
while BeginPos > 0 Do begin
if BeginPos>0 then
begin
Delete(Line,1,BeginPos + 5);
end;
BeginPos := pos('href',Line);
end;
EndPos := pos('"',Line);
// Delete(Line,EndPos - 10,EndPos);
MovieAddress := copy(Line,1,EndPos-1);
BeginPos := pos('Succ',Line);
if BeginPos>0 then
begin
TheMovieAddress := 'http://www.libreriauniversitaria.it/' + MovieAddress;
PickTreeMoreLink(TheMovieAddress);
TheMovieAddress := '*';
end;
if TheMovieAddress='*' then TheMovieAddress := '';
end;
// -----------------------------
// Questo è il main dello script
// -----------------------------
begin
if CheckVersion(3,5,0) then
begin
TheMovieAddress := '*';
MovieName := StringReplace(GetField(fieldTranslatedTitle), '.', ' ');
if MovieName = '' then
MovieName := StringReplace(GetField(fieldOriginalTitle), '.', ' ');
While pos ('[', MovieName) > 0 Do begin
MovieName := TextBefore(MovieName, '[', '') + TextAfter(MovieName, ']');
end;
if Input('FilmUP Import', 'Digita il titolo del film:', MovieName) then
begin
AnalyzePage('http://www.libreriauniversitaria.it/c_search.php?noinput=1&shelf=BIT&title_query='+UrlEncode(MovieName)+'&author_query=&publisher_query=&series_query=&subject_query=&isbn_query=&dewey_query=AAA&search=Cerca');
end;
end;
else
ShowMessage('Questo script richiede una versione più nuova di Ant Movie Catalog (almeno la versione 3.5.0)');
end;