FilmUp.com 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
cecco
Posts: 4
Joined: 2004-04-05 15:02:25
Location: San Marino

FilmUp.com Script

Post by cecco »

It's possible, in this script, to take the official site instead of the page's url?

----
Forse in italiano è meglio.. :)
Nello script filmup viene scaricato l'url della pagina della scheda del film, invece mi sembra più utile scaricare l'indirizzo della pagina ufficiale del film.
Come posso fare??

Grazie e ciao!!
P2
Posts: 16
Joined: 2004-04-12 13:18:42

Post by P2 »

Ok.
Below are modified script for FilmUp:

Change the added AltURL constant to True (line 29 of script) if you want to get the film web site link instead of FilmUp page link (FilmUp link is already taken if film web site not found).

Regards
Pivello

Code: Select all

// GETINFO SCRIPTING
// FilmUP (IT) import

(**************************************************
*  Movie importation script for:                  *
*      FilmUP (IT), http://www.filmup.com         *
*                                                 *
+  Original: L. Francisco                         *
*  Modified: Pivello: query URL changed           *
*  Modified: Zandal:  sistenato puntamento a      *
*                     COMMENTS                    *
*  Modified: Pivello: Film site URL selectable    *
*                     instead of FilmUp page URL  *
*                                                 *
*                                                 *
*  For use with Ant Movie Catalog 3.4.1           *
*  www.ant.be.tf/moviecatalog                     *
*                                                 *
*  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               *
***************************************************)

program FilmUP;

const
  AltURL = False; // - Set to true if film web site needed for FieldURL (FilmUp
                  //   page URL is already taken if film web site not found)
                  // - Set to false for FilmUp page URL
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('<title>FilmUP - Cerca: ', 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: 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<>'';

      //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) and AltURL then
       begin
         if Length(Line) = 0 then      // if WEB url missing...
           Line := GetField(fieldURL)  // ...restore FilmUp URL
         else
           Line := 'http://'+Line;
       end;

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

    until Field=fieldDescription;
  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://www.filmup.com'+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="/img/star/');
    if Line <> '' then
    begin
      Line := Copy(Line,1,pos('</b> - <img src="/img/star/',Line)-1);
      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://www.filmup.com/'+Copy(Line,1,pos('"',Line)-1), False);
    end;
  end
  else
  begin
    Line := Page.GetString(LineNr);
    Delete(Line,1,pos('<a href="posters/locp/',Line)+8);
    Line := GetLineFromOtherPage('http://www.filmup.com/'+Copy(Line,1,pos('"',Line)-1),'<img src="../loc/500/');
    if Line <> '' then
    begin
      Delete(Line,1,pos('<img src="../',Line)+12);
      GetPicture('http://www.filmup.com/posters/'+Copy(Line,1,pos('"',Line)-1), False);
    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
    Line := Page.GetString(LineNr);
    BeginPos := pos('<a href="',Line)+9;
    EndPos := pos('" TARGET="_blank"><b>FilmUP - Scheda: ',Line);
    MovieAddress := copy(Line,BeginPos,EndPos-BeginPos);
    Delete(Line,1,EndPos);
    BeginPos := pos('Scheda: ',Line)+8;
    EndPos := pos('</a>',Line);
    MovieTitle := copy(Line,BeginPos,EndPos-BeginPos);
    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('http://www.filmup.com'+MovieAddress);
  end;
  if TheMovieAddress='*' then TheMovieAddress := '';
end;

// -----------------------------
// Questo è il main dello script
// -----------------------------
begin
  if CheckVersion(3,4,1) then
   begin
    TheMovieAddress := '*';
    MovieName := GetField(fieldOriginalTitle);
    if MovieName = '' then
      MovieName := GetField(fieldTranslatedTitle);
    if Input('FilmUP Import', 'Digita il titolo del film:', MovieName) then
    begin
      AnalyzePage('http://www.filmup.com/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.4.1)');
end.
Post Reply