[REL][ITA] FilmScoop.it

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
seraphico
Posts: 12
Joined: 2007-12-11 18:48:44
Location: Italy

[REL][ITA] FilmScoop.it

Post by seraphico »

This is the script for www.filmscoop.it if anyone find a bug just mail me! :D
(***************************************************

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

[Infos]
Authors=Claudio Rinaldi ( rinaldiclaudio@gmail.com )
Title=FilmScoop
Description=Get movie info from FilmScoop.it
Site=www.filmscoop.it
Language=IT
Version=1.0
Requires=3.5.1
Comments=
License=
GetInfo=1

[Options]

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

program FilmScoopIT;

uses
Pivlib; // Pivello's scripts common library

const
UrlBase = 'http://www.filmscoop.it';
UrlRicerca = '&to=&r=&i=&n=&g=0&a=&o=Titolo&Submit=Cerca';
QueryBase = UrlBase + '/ricerca/risultati.asp?t=';
QueryFilm = UrlBase + '/film_al_cinema/';
ImagePath = UrlBase + '/locandine/';

cStartNumRis = 'Numero di risultati: <strong>'; // Result Number start Marker
cEndNumRis = '</strong> - Pagin'; // Result Number end Marker
cStartId = ' <a href="/film_al_cinema/'; // ID start marker
cEndId = '">'; // ID end marker
cStartTitle = '<h1 class="TitoloFilm"'; // Title start marker
cEndTitle = '</h1>'; // Title end marker
cStartTranslTitle = 'Titolo Originale</strong>: '; // Translated title start marker
cEndTranslTitle = '</h2>'; // Translated title end marker
cStartImg = '<img src="http://www.filmscoop.it/locandine/'; // Image start marker
cEndImg = '" alt'; // Image end marker
cStartDirector = 'Regia</strong>:'; // Director start marker
cStartCast = 'Interpreti</strong>:'; // Actor start marker
cStartCategory = 'Genere</strong>:'; // Catogory start marker
cEndCategory = '</a>'; // Category end marker
cStartDuration = 'Durata</strong>:'; // Duration start marker
cEndDuration = '<br />'; // Duration end marker
cStartCountry = 'Nazionalità</strong>:'; // Country start Marker
cEndCountry = ' '; // Country end marker
cStartYear = ' '; // Year start marker
cEndYear = '<br />'; // Year end marker
cStartDesc = '<p>'; // Description start marker
cEndDesc = '</p>'; // Description end marker
cStartTitleList = '<strong>'; // Title list start marker
cEndTitleList = '</strong>'; // Title list end marker
var
MovieUrl, MovieName, TranslatedStr, PageStr: string;

// -----------------------
// ANALYZE MOVIE DATA PAGE
// IN: none
// OUT: set Ant fields
// -----------------------
procedure AnalyzeMoviePage;
var
cImage,cValue : string;
begin
// Get packed title main page
PageStr := RemoveExtraChars(MovieUrl);

// TRANSLATED TITLE
cValue := GetValueEx(PageStr, cStartTitle, cEndTitle, true, true);
SetField(fieldTranslatedTitle, AnsiUpFirstLetter(AnsiLowerCase(cValue)));
PageStr := GetPageStr;

// FILM IMAGE
cImage := GetValueEx(PageStr, cStartImg, cEndImg, true, false);
PageStr := GetPageStr;
if cImage <> '' then
GetPicture(ImagePath + cImage);

// ORIGINAL TITLE
cValue := GetValueEx(PageStr, cStartTranslTitle, cEndTranslTitle,true,false);
SetField(fieldOriginalTitle, AnsiUpFirstLetter(AnsiLowerCase(cValue)));
PageStr := GetPageStr;

// DIRECTOR
SetField(fieldDirector, GetValueEx(PageStr, cStartDirector, cStartCast, false, false));
PageStr := GetPageStr;

// ACTORS
SetField(fieldActors, GetValueEx(PageStr, cStartCast, cStartDuration, false, false));
PageStr := GetPageStr;

// DURATION
SetField(fieldLength, GetValueEx(PageStr, cStartDuration, cEndDuration, true, false));
PageStr := GetPageStr;

// COUNTRY
SetField(fieldCountry, GetValueEx(PageStr, cStartCountry, cEndCountry, false, false));
PageStr := GetPageStr;

// YEAR
SetField(fieldYear, GetValueEx(PageStr, cStartYear, cEndYear, true, false));
PageStr := GetPageStr;

// CATEGORY
cValue := GetValueEx(PageStr, cStartCategory, cEndCategory, true, false);
SetField(fieldCategory, AnsiUpFirstLetter(AnsiLowerCase(cValue)));
PageStr := GetPageStr;

// DESCRIPTION
SetField(fieldDescription, GetValueEx(PageStr, cStartDesc, cEndDesc, true, false));
PageStr := GetPageStr;

// COMMENTS

// URL
SetField(fieldURL, MovieUrl);
end;


// ------------------------------------------------------------------
// FILL PICKTREE CONTROL WITH LINKS & TITLES or RETURN ONE PAGE LINK
// if OneFilm flag true return Film Id else populate PickTree
// IN: OneFilm flag (bool)
// OUT: one page ID (string)
// ------------------------------------------------------------------
function PopulatePickTree(OneFilm: boolean): string;
var
cFilmId,cFilmTitle: string;
StartPos,EndPos: integer;
begin
if OneFilm then begin
cFilmId := GetValueEx(PageStr,cStartId,cEndId,false,false);
result := QueryFilm + cFilmId;
end
else begin
PickTreeClear;
repeat
StartPos := pos(cStartId, PageStr);
if StartPos > 0 then begin
Delete(PageStr, 1, StartPos - 1);
cFilmId := GetValueEx(PageStr,cStartId,cEndId,true,false); // Get ID
cFilmTitle := GetValueEx(PageStr,cStartTitleList,cEndTitleList,true,false); // Get Title
PickTreeAdd(cFilmTitle, QueryFilm + cFilmId);
EndPos := pos(cStartId,PageStr);
Delete(PageStr, 1, EndPos);
end;
until(StartPos = 0);
result := '';
end
end;

// ---------------------------------
// ANALYZE FIRST SEARCH RESULT PAGE:
// IN: page Url (string)
// OUT: none
// ---------------------------------
procedure AnalyzeSearchPage(Url: string);
var
NumRisultati : string;
begin
PageStr := RemoveExtraChars(Url);
NumRisultati := GetValueEx(PageStr, cStartNumRis, cEndNumRis, true, false);

if ( (NumRisultati = '0') or (NumRisultati = '')) then
begin
ShowMessage('Title not found / Nessun film trovato.');
exit;
end

if NumRisultati = '1' then
MovieUrl := PopulatePickTree(true)
else
begin
PopulatePickTree(false);
if not PickTreeExec(MovieUrl) then // ..select one
exit;
end;

AnalyzeMoviePage;
end;

// --------------------------------------------------
// GET FIELD VALUES FROM PACKED PAGE
// IN: Start marker (String)
// End marker (string)
// Cut Start Marker (bool)
// Cut End Marker (bool)
// OUT: value (string)
// --------------------------------------------------
function GetValueEx(MyPageStr,cStartMarker,cEndMarker: string;bCutEnd,bAdjust: boolean): string;
var
StartPos: integer;
EndPos: integer;
Value: string;
begin
Value := '';
StartPos := pos(cStartMarker, MyPageStr);
if ( StartPos = 0 ) then exit; // Not found

Delete(MyPageStr, 1, StartPos -1);
StartPos := pos(cStartMarker, MyPageStr);
EndPos := pos(cEndMarker, MyPageStr);
if ( (StartPos > 0) and (EndPos > 0) ) then begin
StartPos := StartPos + length(cStartMarker);
Value := copy(MyPageStr, StartPos, EndPos-Startpos);
if bCutEnd then
EndPos := EndPos + length(cEndMarker);
Delete(MyPageStr, 1, EndPos -1);
if bAdjust then
Value := '<' + Value;
end;
TmpPageStr := MyPageStr;
HTMLRemoveTags(Value);
HTMLDecode(Value);
result := Trim(Value);
end;

// ----------
// MAIN:
// IN: none
// OUT: none
// ----------
begin
if CheckVersion(3,5,0) then
begin
TranslatedStr := GetField(fieldTranslatedTitle);
MovieName := GetField(fieldOriginalTitle);
if (TranslatedStr <> '') then
MovieName := TranslatedStr;

if(Input('MyMovies.It', 'Enter the title of the movie', MovieName)) then
begin
InitializePivLib;
MovieUrl := QueryBase + StringReplace(MovieName,' ','+') + UrlRicerca;
AnalyzeSearchPage(MovieUrl);
FinalizePivLib;
end;
end
else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
end.
mrobama
Posts: 85
Joined: 2009-04-03 12:34:34

Post by mrobama »

Filmscoop update its html months ago, this is a working version, please update your script

Merry christmas

Code: Select all

program FilmScoopIT;

uses
  Pivlib; // Pivello's scripts common library

const
  UrlBase = 'http://www.filmscoop.it';
  UrlRicerca = '&to=&r=&i=&n=&g=0&a=&o=Titolo&Submit=Cerca';
  QueryBase = UrlBase + '/ricerca/risultati.asp?t=';
  QueryFilm = UrlBase + '/film_al_cinema/';
  ImagePath = UrlBase + '/locandine/';

  cStartNumRis = 'Numero di risultati: <strong>'; // Result Number start Marker
  cEndNumRis = '</strong> - Pagin';               // Result Number end Marker
  cStartId = ' <a href="/film_al_cinema/'; // ID start marker
  cEndId = '" rel="nofollow">'; // ID end marker
  cStartTitle = '<h1 class="TitoloFilmUpper" style="clear:both;">'; // Title start marker
  cEndTitle = '</h1>';              // Title end marker
  cStartTranslTitle = '<h2><strong>Titolo Originale</strong>:';        // Translated title start marker
  cEndTranslTitle = '</h2>';         // Translated title end marker
  cStartImg = '<img src="http://www.filmscoop.it/locandine/';               // Image start marker
  cEndImg = '" alt';             // Image end marker
  cStartDirector = 'Regia</strong>:';    // Director start marker
  cStartCast = 'Interpreti</strong>:';              // Actor start marker
  cStartCategory = 'Genere</strong>:';       // Catogory start marker
  cEndCategory = '</a>';            // Category end marker
  cStartDuration = 'Durata</strong>:';       // Duration start marker
  cEndDuration = '<br />';          // Duration end marker
  cStartCountry = '<strong>Nazionalità</strong>: ';     // Country start Marker
  cEndCountry = '</a> <a';               // Country end marker
  cStartYear = ' ';              // Year start marker
  cEndYear = '<br />';                 // Year end marker
  cStartDesc = '<p style="margin-top:0;margin-left:0;padding-top:0;padding-left:0;">';         // Description start marker
  cEndDesc = '</p>';                 // Description end marker
  cStartTitleList = '<strong>';            // Title list start marker
  cEndTitleList = '</strong>';            // Title list end marker
var
  MovieUrl, MovieName, TranslatedStr, PageStr:  string;

// -----------------------
// ANALYZE MOVIE DATA PAGE
// IN:  none
// OUT: set Ant fields
// -----------------------
procedure AnalyzeMoviePage;
var
  cImage,cValue,cValue2 : string;
begin
  // Get packed title main page
  PageStr := RemoveExtraChars(MovieUrl);
  
  // TRANSLATED TITLE & YEAR
  cValue := GetValueEx(PageStr, cStartTitle, cEndTitle, true, true);
  cValue2 := AnsiUpFirstLetter(AnsiLowerCase(GetValueEx(' .' + cValue, '.', ' (', false, false)));
  if cValue2 <> '' then
    SetField(fieldTranslatedTitle, cValue2);
  cValue := GetValueEx(cValue, ' (', ')', false, false);
  if cValue <> '' then
    SetField(fieldYear, cValue);
  //PageStr := GetPageStr;
  
  // FILM IMAGE
  cImage := GetValueEx(PageStr, cStartImg, cEndImg, true, false);
  if cImage <> '' then
    GetPicture(ImagePath + cImage);
  
  // ORIGINAL TITLE
  cValue := GetValueEx(PageStr, cStartTranslTitle, cEndTranslTitle, true, true);
  if cValue <> '' then
    SetField(fieldOriginalTitle, AnsiUpFirstLetter(AnsiLowerCase(cValue)));
  
  // DIRECTOR
  cValue := GetValueEx(PageStr, cStartDirector, cStartCast, false, false);
  if cValue <> '' then
    SetField(fieldDirector, cValue);

  // ACTORS
  cValue := GetValueEx(PageStr, cStartCast, cStartDuration, false, false);
  if cValue <> '' then
    SetField(fieldActors, cValue);
  
  // DURATION
  // cValue := GetValueEx(PageStr, cStartDuration, cEndDuration, true, false);
  // SetField(fieldLength, cValue);

  // COUNTRY
  cValue := GetValueEx(PageStr, cStartCountry, cEndCountry, false, false);
  if cValue <> '' then
    SetField(fieldCountry, cValue);

  // CATEGORY
  cValue := AnsiUpFirstLetter(AnsiLowerCase(GetValueEx(PageStr, cStartCategory, cEndCategory, true, false)));
  if cValue <> '' then
    SetField(fieldCategory, cValue);

  // DESCRIPTION
  cValue := GetValueEx(PageStr, cStartDesc, cEndDesc, true, false);
  if cValue <> '' then
    SetField(fieldDescription, cValue);

  // COMMENTS

  // URL
  SetField(fieldURL, MovieUrl);
end;


// ------------------------------------------------------------------
// FILL PICKTREE CONTROL WITH LINKS & TITLES or RETURN ONE PAGE LINK
// if OneFilm flag true return Film Id else populate PickTree
// IN:  OneFilm flag (bool)
// OUT: one page ID  (string)
// ------------------------------------------------------------------
function PopulatePickTree(OneFilm: boolean): string;
var
  cFilmId,cFilmTitle: string;
  StartPos,EndPos: integer;
begin
  if OneFilm then begin
    cFilmId := GetValueEx(PageStr,cStartId,cEndId,false,false);
    result := QueryFilm + cFilmId;
  end
  else begin
    PickTreeClear;
    repeat
      StartPos := pos(cStartId, PageStr);
      if StartPos > 0 then begin
        Delete(PageStr, 1, StartPos - 1);
        cFilmId := GetValueEx(PageStr,cStartId,cEndId,true,false); // Get ID
        cFilmTitle := GetValueEx(PageStr,cStartTitleList,cEndTitleList,true,false); // Get Title
        PickTreeAdd(cFilmTitle, QueryFilm + cFilmId);
        EndPos := pos(cStartId,PageStr);
        Delete(PageStr, 1, EndPos);
      end;
    until(StartPos = 0);
    result := '';
  end
end;

// ---------------------------------
// ANALYZE FIRST SEARCH RESULT PAGE:
// IN:  page Url (string)
// OUT: none
// ---------------------------------
procedure AnalyzeSearchPage(Url: string);
var
  NumRisultati : string;
begin
  PageStr := RemoveExtraChars(Url);
  NumRisultati := GetValueEx(PageStr, cStartNumRis, cEndNumRis, true, false);
  
  if ( (NumRisultati = '0') or (NumRisultati = '')) then
    begin
      ShowMessage('Title not found / Nessun film trovato.');
      exit;
    end

  if NumRisultati = '1' then
    MovieUrl := PopulatePickTree(true)
  else
    begin
      PopulatePickTree(false);
      if not PickTreeExec(MovieUrl) then // ..select one
        exit;
    end;

  AnalyzeMoviePage;
end;

// --------------------------------------------------
// GET FIELD VALUES FROM PACKED PAGE
// IN:  Start marker     (String)
//      End marker       (string)
//      Cut Start Marker (bool)
//      Cut End Marker   (bool)
// OUT: value            (string)
// --------------------------------------------------
function GetValueEx(MyPageStr,cStartMarker,cEndMarker: string;bCutEnd,bAdjust: boolean): string;
var
  StartPos: integer;
  EndPos: integer;
  Value: string;
begin
  Value := '';
  StartPos := pos(cStartMarker, MyPageStr);
  if ( StartPos = 0 ) then exit; // Not found

  Delete(MyPageStr, 1, StartPos -1);
  StartPos := pos(cStartMarker, MyPageStr);
  EndPos := pos(cEndMarker, MyPageStr);
  if ( (StartPos > 0) and (EndPos > 0) ) then begin
    StartPos := StartPos + length(cStartMarker);
    Value := copy(MyPageStr, StartPos, EndPos-Startpos);
    if bCutEnd then
      EndPos := EndPos + length(cEndMarker);
    Delete(MyPageStr, 1, EndPos -1);
    if bAdjust then
      Value := '<' + Value;
  end;
  TmpPageStr := MyPageStr;
  HTMLRemoveTags(Value);
  HTMLDecode(Value);
  result := Trim(Value);
end;

// ----------
// MAIN:
// IN:  none
// OUT: none
// ----------
begin
  if CheckVersion(3,5,0) then
    begin
      TranslatedStr := GetField(fieldTranslatedTitle);
      MovieName := GetField(fieldOriginalTitle);
      if (TranslatedStr <> '') then
        MovieName := TranslatedStr;

      if(Input('MyMovies.It', 'Enter the title of the movie', MovieName)) then
        begin
          InitializePivLib;
          MovieUrl := QueryBase + StringReplace(MovieName,' ','+') + UrlRicerca;
          AnalyzeSearchPage(MovieUrl);
          FinalizePivLib;
        end;
    end
  else
    ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
end.
antp
Site Admin
Posts: 9639
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Thanks, I updated it on the server
As you didn't include the header*, I simply changed the version from 1.0 to 1.1, but maybe you also wanted to include a name or nickname in the Author field?

(*) when you copy the script from AMC editor, it lacks the comment header that includes script properties and options.

Merry christmas to you too
Post Reply