Script for book / script per libri / script para libros

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
hornero
Posts: 3
Joined: 2006-09-24 10:00:18

Script for book / script per libri / script para libros

Post by hornero »

:??:
Someone knows or have script in search to try books? For book in language Italian and spanish.
Thanks for your collaboration.

Qualcuno conosce o hà script per cercare libri? Per libri in Italiano e Spagnolo.
Grazie per la vostra collaborazione.

Alguien conoce o tiene script para buscar libros? Para libros en Italiano y español.
Gracias por la vuestra colaboración.


:grinking:
hornero
Posts: 3
Joined: 2006-09-24 10:00:18

Post by hornero »

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.

------------ Script ----------------------------------------

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;
antp
Site Admin
Posts: 9651
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

I added "code" tags so the script displays better, but I do not have time to help you for the script, sorry.
Post Reply