(FILMUP.COM) DELETE THIS THREAD. OLD VERSION -

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.
P2
Posts: 16
Joined: 2004-04-12 13:18:42

Post by P2 »

Right,
must be added two checks for infinite loop:

Code: Select all

... or (LineNr > Page.Count);
and test if is mising 'Trama:' marker:

Code: Select all

      // Test if 'Trama:' missing
      if ((PreviousLine = 'Data di uscita: ')
      or  (PreviousLine = 'Uscita prevista: ')) and (Line <> 'Trama:') then
        if (copy(Line,1,6)<>'Trama:') then
          Line := 'Trama:' + Line;
      PreviousLine := Line;
Below are modified script:

Code: Select all

(***************************************************

Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/

[Infos]
Authors=L. Francisco
Title=FilmUP
Description=Get movie info from LeoFilmUP.it
Site=http://filmup.leonardo.it
Language=IT
Version=1.0.1 - 02.02.2005
Requires=3.5.0
Comments=**Changes**|Pivello: query URL changed|Zandal:  sistemato puntamento a COMMENTS|Pivello: Film site URL selectable instead of FilmUp page URL|dinolib: adapted to v.3.5.0 and little bugfix | ABNormal restarted...|14.04.2005: Fixed infinite loop if description field missing (Pivello)
License=*  The source code of the script can be used in   |*  another program only if full credits to              |*  script author and a link to Ant Movie Catalog  |*  website are given in the About box or in       |*  the documentation of the program               |
GetInfo=1

[Options]
AlternateURL=0|0|0=Use the FilmUP web site for FieldURL|1=Try to use ufficial movie web site for FieldURL
MezzoVoto=1|1|0=Integer Ratings|1=Ratings with ,5

***************************************************)

 

program LeonardoFilmUP; 
uses 
  StringUtils1; 

var 
  MovieName: string; 
  TheMovieAddress: string; 

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; 

procedure AnalyzePage(Address: string); 
var 
  Page: TStringList; 
  LineNr: integer; 
  BeginPos: integer; 
begin 
  Page := TStringList.Create; 
  Page.Text := GetPage(Address); 
  LineNr := FindLine('Ordina risultati per', 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(TheMovieAddress); 
      AnalyzeMoviePage(Page); 
    end; 
  end; 
  Page.Free; 
end; 

procedure AnalyzeMoviePage(Page: TStringList); 
var 
  Line, PreviousLine: string;
  NomeHtml: string; 
  LineNr,PrevLineNr: Integer; 
  BeginPos, EndPos: Integer; 
  Field: integer; 
begin 
  LineNr := FindLine('<font face="arial, helvetica" size="3"><b>', Page, 0); 
  if LineNr > -1 then 
  begin 
    //Translated Title 
    Line := Page.GetString(LineNr); 
    HTMLRemoveTags(Line); 
    SetField(fieldTranslatedTitle, Line); 

    repeat 
      //Look for next info 
      repeat 
        LineNr := LineNr + 1; 
        Line := Page.GetString(LineNr); 
        HTMLRemoveTags(Line); 
      until (Line<>'')  or (LineNr > Page.Count);
      
      // Test if 'Trama:' missing
      if ((PreviousLine = 'Data di uscita: ')
      or  (PreviousLine = 'Uscita prevista: ')) and (Line <> 'Trama:') then
        if (copy(Line,1,6)<>'Trama:') then
          Line := 'Trama:' + Line;
      PreviousLine := Line;
      
      //Look for type of line 
      if Line = 'Titolo originale: ' then
        Field := fieldOriginalTitle 
      else if Line = 'Regia: ' then 
        Field := fieldDirector 
      else if Line = 'Produzione: ' then 
        Field := fieldProducer 
      else if Line = 'Nazione: ' then 
        Field := fieldCountry 
      else if Line = 'Genere: ' then 
        Field := fieldCategory 
      else if Line = 'Anno: ' then 
        Field := fieldYear 
      else if Line = 'Durata: ' then 
        Field := fieldLength //Special case: get number only 
      else if Line = 'Sito ufficiale: ' then 
        Field := fieldURL 
      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' 
      if (copy(Line,1,6)='Trama:') and (length(Line)>6) then 
       begin 
        Field := fieldDescription; 
        Delete(Line,1,6); 
        HTMLDecode(Line); 
       end 
      else 
       begin 
        //Get values 
        LineNr := LineNr + 1; 
        Line := Page.GetString(LineNr); 
        HTMLRemoveTags(Line); 
        HTMLDecode(Line); 

        //Special case: Length 
        if Field = fieldLength then Line := copy(Line,1,length(Line)-1); 
       end; 

       //Alternative URL case 
       if (field = fieldURL) then 
       begin 
         if (Length(Line) = 0) or (GetOption('AlternateURL')=0) then      // if WEB url missing or explicitly requested... 
           Line := GetField(fieldURL)  // ...restore FilmUp URL 
         else 
           Line := 'http://'+Line; 
       end; 

      if Field<>0 then SetField(Field,Line); 

    until (Field=fieldDescription) or (LineNr > Page.Count);
  end; 

  PrevLineNr := LineNr; 
  
  //Comments 
  LineNr := FindLine('">Recensione</a>', Page, PrevLineNr); 
  if LineNr > -1 then 
  begin 
    Line := Page.GetString(LineNr); 
    if Pos('DVD', Line) <> 0 then Delete(Line,1,pos('DVD',Line)); 
    if Pos('Scheda', Line) <> 0 then Delete(Line,1,pos('Scheda',Line)); 
    Delete(Line,1,pos('<a href="',Line)+8); 
    NomeHtml :=Copy(Line,1,pos('"',Line)-1); 
    if (copy(NomeHtml,1,1)<>'/') then 
    begin 
      NomeHtml := '/' + NomeHtml; 
    end; 
    GetComments('http://filmup.leonardo.it'+NomeHtml); 
    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('<a href="',Line)+8); 
    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 
  LineNr := FindLine('<a href="posters/locp/', Page, PrevLineNr); 
  if LineNr = -1 then 
  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 
  else 
  begin 
    Line := Page.GetString(LineNr); 
    Delete(Line,1,pos('<a href="posters/locp/',Line)+8); 
    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; 

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: string; 
  BeginPos, EndPos: Integer; 
  begin 
  LineNr := 0; 
  LineNr := FindLine('FilmUP - Scheda: ',Page,LineNr); 
while LineNr > -1 do 
  begin 
  MovieAddress := 'http://filmup.leonardo.it/sc_' + TextBetween((Page.GetString(LineNr-1)), '_', '.') + '.htm'; 
    Line := Page.GetString(LineNr); 
  MovieTitle := TextAfter(Page.GetString(LineNr), 'Scheda: '); 
      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; 
    HTMLRemoveTags(MovieTitle); 
    HTMLDecode(Movietitle); 
    LineNr := FindLine('FilmUP - Scheda:',Page,LineNr+1); 
    PickTreeAdd(MovieTitle, MovieAddress); 
    if TheMovieAddress='*' then 
      TheMovieAddress := MovieAddress 
    else 
      TheMovieAddress := ''; 
  end; 
  LineNr := FindLine('Successivo',Page,LineNr); 
  Line := Page.GetString(LineNr); 
  BeginPos := pos('HREF',Line); 
  if BeginPos>0 then 
  begin 
    Delete(Line,1,BeginPos + 5); 
    EndPos := pos('"',Line); 
    MovieAddress := copy(Line,1,EndPos-1); 
    PickTreeMoreLink(MovieAddress); 
  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://filmup.leonardo.it/cgi-bin/search.cgi?q='+UrlEncode(MovieName)+'&ul=%25%2Fsc_%25'); 
    end; 
   end 
  else 
    ShowMessage('Questo script richiede una versione più nuova di Ant Movie Catalog (almeno la versione 3.5.0)'); 
end. 
Regards
Pivello
ABNormal
Posts: 135
Joined: 2005-01-08 08:33:38

Post by ABNormal »

Pivello wrote:Right,
must be added two checks for infinite loop:.......
Regards
Pivello
Ubi Maior.... :)
ABN
Guest

Post by Guest »

Salve
a me non funziona questo script.
Mi segnala:
Errore script in "LEONARDOFILMUP":unit is not found linea 5
e nella linea 5 c'è la stringa:
StringUtils1;

Qualcuno può aiutarmi???
Bakk

Post by Bakk »

ciao, credo che lo script non funzioni piu. ho provato con diversi film di cui avevo gia scaricato la scheda da filmup e l'unica cosa che importa è l'ulr, che è diverso da quello precedente. Soluzione? grazie
ABNormal
Posts: 135
Joined: 2005-01-08 08:33:38

Post by ABNormal »

Non tornavo da un po'...
dopo le modifiche di Pivello lo script ha tornato a chiamarsi FilmUP (evidentemente c'era affezionato).
Quindi se trovate entrambi i nomi (Leonardo..... e FilmUP) scegliete FILMUP.
2) l'errore che segnala il Guest deve dipendere dal fatto che probabilmente costui ha "fatto pulizia" degli script che non usava, ma ha cancellato il file StringUtils1.pas, che resta fondamentale per molti script.
Se così fosse, deve riscaricarselo.

Cmq, a continua a funzionare una bellezza (d'altro canto è finita che sono un genio e PIVELLO è un mito?)
:hihi:

ABN
STEVENB

Post by STEVENB »

Ma ora qual'e' lo script di FilmUp quello buono e corretto ?
Grazie
Ciao
pluto88

filmup script

Post by pluto88 »

volevo sapere se anche a voi con la nuova versione non funziona + lo script di FilmUp
ABNormal
Posts: 135
Joined: 2005-01-08 08:33:38

Post by ABNormal »

STEVENB wrote:Ma ora qual'e' lo script di FilmUp quello buono e corretto ?
Grazie
Ciao
ho provveduto a mettere in prima pagina lo script con le modifiche di pivello, e quindi lo script iniziale (oltre a quello nell'ultimo msg di pivello, che è lo stesso) sono l'attuale versione.

e cmq a me funziona ancora bene.

se avete qualche film di preciso che non viene aggiornato fatemelo sapere (magari se prima di elencarne 100 vi assicurate che sul sito di filmup ci sta fate cosa gradita).

ABN
hisapnico977

Post by hisapnico977 »

Salve
scusate è possibile fare in modo che nel campo "data di catalogazione" compaia la data di uscita al cinema?
Bakk

Post by Bakk »

Ciao ho provato l'ultima versione dello script con l'ultima versione del programma e mi da errore nella linea 13. soluzione? grazie
ABNormal
Posts: 135
Joined: 2005-01-08 08:33:38

Post by ABNormal »

Bakk wrote:Ciao ho provato l'ultima versione dello script con l'ultima versione del programma e mi da errore nella linea 13. soluzione? grazie
non so che dirti, spero che Pivello lo sappia.
ma a riga 13 c'è:
i: Integer;
che errore possa generare una dichiarazione di variabile non so.

ABN
ABNormal
Posts: 135
Joined: 2005-01-08 08:33:38

Post by ABNormal »

hisapnico977 wrote:Salve
scusate è possibile fare in modo che nel campo "data di catalogazione" compaia la data di uscita al cinema?
hispanico, tutto si può fare ( o quasi).
ma come dire... è una personalizzazione che dovresti provare a fare da te.

e non la prendere come un "sono ca##i tuoi", affatto!
questo script (e quello x i cd audio che ho fatto) sono venuti fuori a furia di leggere quel geroglifico che fa funzionare la magia (gli script..)

insomma io di pascal non ne capisco un beneamato, ma mi è riuscita una modifica... globale.
un pò di curiosità in più vi farebbe bene.
ciao

ABN
Bakk

Post by Bakk »

la stringa è la seguente: function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
ABNormal
Posts: 135
Joined: 2005-01-08 08:33:38

Post by ABNormal »

Bakk wrote:la stringa è la seguente: function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
con quale film ha dato errore, per favore?
magari è un prob con quella pagina

ciao
antp
Site Admin
Posts: 9630
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

your script uses StringUtils1, but in the latest version of this unit I added the FindLine function. So the script engine detects a duplicate function name. You should remove the FindLine function from your script ;) (if the final version is still the one on the first page...)
Guest

Post by Guest »

antp wrote:your script uses StringUtils1, but in the latest version of this unit I added the FindLine function. So the script engine detects a duplicate function name. You should remove the FindLine function from your script ;) (if the final version is still the one on the first page...)
Abbiamo scoperto il perchè dell'errore, ma cancellando la linea citata nella mia precedente risposta, continuano ad esserci un sacco di errori. Avete qualche soluzione? grazie
antp
Site Admin
Posts: 9630
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Sorry but I did not understand what you said :p
Guest

Post by Guest »

i don't know what line i should remove. i tried to remove line "function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;" but there are many error message after removing it.
antp
Site Admin
Posts: 9630
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

remove also the var...begin...end block that is aligned to the left margin and that follows the FindLine ;)
Bakk

Post by Bakk »

thanks. I have resolved all with your suggestion.
Locked