[UPD ITA] mymovies.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
fulvio53s03
Posts: 764
Joined: 2007-04-28 05:46:43
Location: Italy

[UPD ITA] mymovies.it

Post by fulvio53s03 »

Thanks to Vjncenzo. :clapping:

Code: Select all

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

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

[Infos]
Authors=Fulvio53s03 & seraphico (Original by Claudio Rinaldi). Thanks to MrObama, Vjncenzo.
Title=MyMovies
Description=Get movie info from MyMovies.it
Site=www.mymovies.it
Language=IT
Version=3.0.3
Requires=4.2.2
Comments=
License=
GetInfo=1
RequiresMovies=1

[Options]
Poster=0|0|1=Download full-res Poster|0=Download tiny Poster

[Parameters]

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

program MyMoviesIT;

uses
  Stringutils7552;

const
  UrlBase = 'https://www.mymovies.it';
//  UrlRicerca = '&titolo_orig=&regista=&attore=&id_genere=-1&nazione=&clausola1=-1&anno_prod=&clausola2=-1&stelle=-1&id_manif=-1&anno_manif=&disponib=-1&ordinamento=1&submit=Inizia+ricerca+%BB';
    Urlricerca = '&titolo_orig=&regista=&attore=&id_genere=-1&nazione=&clausola1=-1&anno_prod=&clausola2=-1&stelle=-1&id_manif=-1&anno_manif=&disponib=-1&ordinamento=0&submit=Inizia+ricerca+%C2%BB';
  QueryBase = UrlBase + '/database/ricerca/avanzata/?titolo=';
  debug_search = false;                                   // debug mode on/off
  folder = 'f:\prova\';                                   // directory where to save files

  ImagePath = UrlBase + '/filmclub/';
  Apice       = #39;
  NoCommento = '(Riceverai le informazioni pochi giorni prima della messa in onda)';  // commenti inutili  "(la recensione più amata dal pubblico)"
  PiuAmata   = '(la recensione più amata dal pubblico)';
  cStartNumRis = 'nel Titolo. Ho trovato '; // Result Number start Marker
  cEndNumRis = ' film.</h3>';               // Result Number end Marker
  cStartId = 'recensione.asp?id=';   // ID start marker
  EndId = '" title="';              // ID end marker
  cStartNewTitle = '<meta property="og:title" content="';
  cEndNewTitle = '"';
  cStartTitle = 'Titolo originale <em>';             // Title start marker
  cEndTitle = '</em>';              // Title end marker
  cStartTranslTitle = '<h1 style="margin-bottom:3px;">';        // Translated title start marker
  cEndTranslTitle = '</h1>';         // Translated title end marker
  cStartImage2 = '<img src="';       // Image start marker
  cEndImage2 = '"';                  // Image end marker
  cStartDirector = 'Un film di <a href="';      // Director start marker
  cEndDirector = '</a>.';                       // Director end marker
  cStartCategory  = '<a title="Film ';   // Catogory start marker
  cEndCategory = '</a>';            // Category first end marker
  cStartCategory2  = '">';   // Catogory start marker
  cEndCategory2 = '</a>';            // Category second end marker
  cStartDuration = 'durata ';        // Duration start marker
  cEndDuration = ' min.';          // Duration end marker
  cStartYear = '<meta property="og:title" content="';              // Year start marker
  cEndYear = '/>';                 // Year end marker
  cStartYear2  = '(';   // year start marker
  cEndYear2 = ')';            // year second end marker
  cStartDesc = '<div id="recensione">';          // Description start marker
  cEndDesc = '<div style="text-align:right;">';  // Description end marker

  cStartCast = 'Con <a href="';              // Actor start marker
  cEndCast   = '<a title="';
  cEndCast2  = 'Titolo originale <em>';      // Actor end marker
//  cStartImage = 'src="https://pad.mymovies.it/filmclub/';     //fs 2018.02.07
  cStartImage = '<meta property="og:image" content="';       //fs 2018.02.07
  cEndImage = '"';
var
  MovieUrl, MovieName, Commento, TranslatedStr, PageStr:  string;
  Startchar, EndChar, NumRisultati, UsePage, Addressnext: String;
  cImage, SaveUrl, SaveField, TempField, DelField : string;
  PositionCategory, PositionDuration: integer;
  Positioncast: integer;
  idx : integer;
 
function MyTrim(Value: string):string;
var
  ExitLoop: Boolean;
  NewField, OldField: String;
  OldLgthValue, NewLgthValue: integer;
begin
    NewField := ' ';
    OldField := #9;
    value := StringReplace(Value, OldField, NewField);
    OldField := #10;
    value := StringReplace(Value, OldField, NewField);
    OldField := #13;
    value := StringReplace(Value, OldField, NewField);
    OldField := '  ';
    value := StringReplace(Value, OldField, NewField);
    Newfield := '&';
    OldField := '&';
    value := StringReplace(Value, OldField, NewField);
    Newfield := 'è';
    OldField := '&egrave;';
    value := StringReplace(Value, OldField, NewField);
    ExitLoop := False;
    OldLgthValue := length(Value);
    HTMLRemoveTags(Value);
    Value := FullTrim(Value);
    OldField := '  ';
    NewField := ' ';
    repeat
      value := StringReplace(Value, OldField, NewField);
      NewLgthValue := length(Value);
    if  OldLgthValue = NewLgthValue then
        ExitLoop := True
    else
        OldLgthValue := NewLgthValue;
    until ExitLoop;

  Result := Value;
end;

//-------------------------
procedure estrae_info;          //2017.10.26 cambio struttura sito: aggiunta pagina intermedia tra la ricerca e le info.
//-------------------------
//2018.04.22fs begin
//2018.04.22fs   MovieUrl := textbetween(PageStr, '<!-- webTrekk Espresso -->', '<!-- /webTrekk Espresso -->');
//2018.04.22fs   HTMLRemoveTags(MovieUrl);
//2018.04.22fs   MovieUrl := textbetween(MovieUrl, (' pageHref = ' + Apice), (Apice + ';'));
//2018.04.22fs   PageStr := getPage(MovieUrl);
//2018.04.22fs    if debug_search then
//2018.04.22fs       DumpPage(folder+'Mymovies_page_second.txt', Pagestr);                // debug
//2018.04.22fs end;

//2018.04.22fs inizio modifiche
var
  pos_dizionario: integer;
begin
  SaveUrl := MovieUrl;
  MovieUrl := textbetween(PageStr, '<!-- webTrekk Espresso -->', '<!-- /webTrekk Espresso -->');
  HTMLRemoveTags(MovieUrl);
  MovieUrl := textbetween(MovieUrl, (' pageHref = ' + Apice), (Apice + ';'));
  pos_dizionario :=  pos('/dizionario/recensione.asp?id=', MovieUrl);
  if  pos_dizionario <> 0 then
    PageStr := getPage(MovieUrl);
  if  pos_dizionario =  0 then
    MovieUrl := SaveUrl;
  if  debug_search then
      DumpPage(folder+'Mymovies_page_second.txt', Pagestr);                // debug
//2018.04.22fs  fine  modifiche
end;

// -----------------------
// ANALYZE MOVIE DATA PAGE
// IN:  none    OUT: set Ant fields
// -----------------------
procedure AnalyzeMoviePage;
var
  pos_dizionario: integer;
begin
  // Get packed title main page
  pos_dizionario :=  pos('/dizionario/recensione.asp?id=', MovieUrl);     //2018.04.22
  if  pos_dizionario <> 0 then                                            //2018.04.22
      MovieUrl := StringReplace(MovieUrl, 'http:', 'https:');             //2018.04.22
  PageStr := getPage(MovieUrl);
  if debug_search then
     DumpPage(folder+'Mymovies_page_found.txt', Pagestr);                // debug
  if pos('<!-- webTrekk Espresso -->', PageStr) > 0 then
     begin
        estrae_info
     end;
  if pos('var_carica_taboola', pageStr) > 0
     then
         nuovo_tipo_pagina
     else
         vecchio_tipo_pagina
  end;
//end;

//----------------------------
procedure nuovo_tipo_pagina;
var
  titolo_originale, Trama_e_critica: string;
  lgth_delimiters: integer;
  init_char, end_char: string;
begin
//  PageStr := UTF8decode(PageStr);               N.B. questo fa saltare l'strazione di trama e commenti/critica
  TempField := TextBetween(PageStr, cStartNewTitle, cEndNewTitle);
  TempField := MyTrim(TempField);
  SetField(fieldTranslatedTitle, TempField);

  // Original Title field
  titolo_originale := TextBetween(PageStr, 'Titolo originale</td>', '</tr>');
  HTMLRemoveTags(titolo_originale);
  SetField(fieldOriginalTitle, titolo_originale);
  if titolo_originale = '' then
    SetField(fieldOriginalTitle, GetField(fieldTranslatedTitle))
    else
    SetField(fieldOriginalTitle, titolo_originale);

  // Director Field
  TempField := TextBetween(PageStr, '<tr><td valign="top">Regia di</td>', '</tr>');
  HTMLRemovetags(tempfield);
  Tempfield := UTF8decode(Tempfield);
  TempField := Fulltrim(Tempfield);

  SetField(fieldDirector, TempField);

  // Actors Field
  TempField := TextBetween(PageStr, '<tr><td valign="top">Attori</td>', '</tr>');
  HTMLRemovetags(tempfield);
  Tempfield := UTF8decode(Tempfield);
  if debug_search then
    Tempfield := Tempfield + CRLF + '(new_form)';
  SetField(fieldActors, TempField);            //attori principali

  // Category Field
  TempField := TextBetween(PageStr, '<tr><td valign="top">Genere</td>', '</tr>');
  HTMLRemovetags(tempfield);
  SetField(fieldCategory, TempField);

  // Duration field
  TempField := TextBetween(PageStr, '<tr><td valign="top">Durata</td>', '</tr>');
  HTMLRemovetags(tempfield);
  tempfield := Textbefore(Tempfield, ' ', '');
  SetField(fieldLength, TempField);

  // Country field
  TempField := PageStr;
  Tempfield := TextBetween(TempField, '<td valign="top">Produzione</td>', '</tr>') + '</tr>';
//  Tempfield := '<tr> href=' + TextBetween(TempField, 'href=', '</tr>');
  Tempfield := '<tr>' + TextBetween(TempField, 'href=', '</tr>');
  HTMLRemovetags(tempfield);
//  TempField := MyTrim(TempField);
  tempField := textafter(Tempfield, '>');
  SetField(fieldCountry, TempField);

//  Year
  TempField := PageStr;
  TempField := Textbetween (tempField, '<td valign="top">Anno</td>', '</tr>');
  HTMLRemovetags(tempfield);
  SetField(fieldYear, TempField);

  // Get film image
  cImage := TextBetween(PageStr, '<amp-img layout="responsive" class="stonda3" width="230" height="330" src="', '"></amp-img>');
  cImage := StringReplace(cImage, 'https', 'http');

  if (cImage <> '')  and (pos('twitter_ico.gif', cImage) = 0) then
     GetPicture(cImage);

  TempField := TextBetween(PageStr, '<td valign="top">Rating</td><td>Consigli per la visione di bambini e ragazzi: ', '</tr>');
  if TempField <> '' then
    begin
	  HTMLRemovetags(tempfield);
	  Tempfield := UTF8decode(Tempfield);
	  Tempfield := MyTrim(Tempfield);
	  Tempfield := StringReplace(TempField, 'Film per tutti', 'PT');
	  SetField(fieldCertification, TempField);
    end;

// Description Field
//2018-02-27   init_char := '<div class="lectios">';
//2018-02-27   end_char  := '<div class="clear10">';
//2018-02-27   Trama_e_critica := init_char + TextBetween(PageStr, init_char, end_char) + end_char;
   init_char := '<p class="highlights mm-margin-auto mm-center mm-margin-t16">';                //2018-02-27
   end_char  := '<div';                                                                         //2018-02-27
   Trama_e_critica := fulltrim(TextBetween(PageStr, init_char, end_char));                      //2018-02-27
   HTMLRemovetags(Trama_e_critica);
   if  trama_e_critica = '' then                                                                    //2018-04-24
      begin                                                                                         //2018-04-24
       init_char := '<div class="sottotitolo_autore mm-letter-spacing-2 mm-center mm-show-xs mm-hide-sm">';                //2018-04-24
       end_char  := '<div class="mm-right mm-margin-r8"">';                                                                         //2018-04-24
       Trama_e_critica := fulltrim(TextBetween(PageStr, init_char, end_char));                      //2018-04-24
       Trama_e_critica := UTF8decode(Trama_e_critica);
       HTMLRemovetags(Trama_e_critica);
       Trama_e_critica := UTF8decode(Trama_e_critica);
      end;
   Trama_e_critica := UTF8decode(Trama_e_critica);
//   Trama_e_critica := fulltrim(TextBetween(PageStr, init_char, end_char));                      //2018-02-27

   if debug_search then
      DumpPage(folder+'Mymovies_trama_e_critica.txt', trama_e_critica);                // debug
//2018.04.20fs   SetField(fieldDescription, Trama_e_critica);
   Trama_e_critica := fulltrim(Trama_e_critica);
   SetField(fieldDescription, Trama_e_critica);                            //2018.04.20fs

// Comments Field
   init_char := 'Recensione di';
   end_char  := '<div class="clear10">';
//   TempField := '<p ' + init_char + textBetween(Trama_e_critica, init_char, end_char) + end_char;
   TempField := fulltrim(TextBetween(PageStr, init_char, end_char));
   TempField := Tempfield + end_char;
   if length(tempfield) = length(end_char) then
      begin
      init_char := '<div class="sottotitolo_autore mm-letter-spacing-2 mm-center mm-show-xs mm-hide-sm">';
      end_char  := '<div class="mm-right mm-margin-r8"">';
      TempField := fulltrim(TextBetween(PageStr, init_char, end_char));
      end;

   Init_char  := '<p class="corpo">';
   end_char   := '</p>';                                              //2018.04.24
   TempField := init_char + TextBetween(Tempfield, init_char, end_char) + end_char;   //fin qui temp_field OK per bush...

   End_char := '<a target="_blank"';
   TempField := init_char + fulltrim(TextBetween(PageStr, init_char, end_char)) + end_char;
   lgth_delimiters :=  (length(init_char) + length(end_char));
   If length(Tempfield) = lgth_delimiters then                                                 //2018.04.25fs
      begin                                                                      //2018.04.25fs
        Init_char := '<p class="corpo">';                                        //2018.04.25fs
        end_char := '</p>';                                                      //2018.04.25fs
        TempField := init_char + fulltrim(TextBetween(PageStr, init_char, end_char)) + end_char;  //2018.04.25fs
      end;                                                                       //2018.04.25fs
   TempField := StringReplace(TempField, 'Il film Shadow è disponibile in streaming. Scopri MYmovieslive', '');
   TempField := StringReplace(TempField, 'Questo film è disponibile in versione digitale, scopri il miglior prezzo: TROVASTREAMING', '');
   HTMLRemovetags(tempfield);
   Tempfield := UTF8decode(Tempfield);
   TempField := Fulltrim(Tempfield);
   SetField(fieldComments, TempField);                               //2018.04.20fs

// Movie URL field
   SetField(fieldURL, MovieUrl);
   SetField(fieldDate, DateToStr(Date));

end;

//----------------------------

  
//----------------------------
procedure vecchio_tipo_pagina;
//----------------------------
var
  pos_func: integer;
begin
  TempField := TextBetween(PageStr, cStartTranslTitle, cEndTranslTitle);
  TempField := MyTrim(TempField);
  SetField(fieldTranslatedTitle, TempField);

  // Original Title field
  SetField(fieldOriginalTitle, TextBetween(PageStr, cStartTitle, cEndTitle));
  if(GetField(fieldOriginalTitle)='')then
    SetField(fieldOriginalTitle, GetField(fieldTranslatedTitle));

  // Director Field
  TempField := TextBetween(PageStr, cStartDirector, cEndDirector) + cEndDirector;
  TempField := TextBetween(TempField, '>' , cEndDirector);
  HTMLRemovetags(tempfield);
  Tempfield := UTF8decode(Tempfield);
  TempField := Fulltrim(Tempfield);
  SetField(fieldDirector, TempField);

  // Actors Field
  TempField := CstartCast + TextBetween(PageStr, cStartCast, cEndCast);     // da 'con:'   a Titolo
  Positioncast := pos(cStartCast, PageStr) + length(TempField);
  SaveField := TempField;
  TempField := TextBetween(PageStr, cStartCast, cEndCast2);   // da 'con:'   a Titolo Originale
  if length(tempField) > 0 then
      TempField := '<a href="' + TempField
  else
    TempField := '<a href="' + SaveField;

  DelField  := '<div id="attori_espandi"' + TextBetween(TempField, '<div id="attori_espandi"', '</div>');
  TempField := StringReplace(TempField, DelField, '');
  DelField  := '<div id="attori_comprimi"' + TextBetween(TempField, '<div id="attori_comprimi"', '</div>');
  TempField := StringReplace(TempField, DelField, '');
  TempField := UTF8decode(TempField);
  TempField := MyTrim(TempField);
  if debug_search then
    Tempfield := Tempfield + CRLF + '(old_form)';

  SetField(fieldActors, TempField);

  // Category Field
  TempField := TextBetween(PageStr, cStartCategory, cEndcategory) + cEndcategory;
  TempField := TextBetween(TempField, cStartCategory2, cEndcategory2);
//  TempField := TempField + cEndcategory;
//  TempField := TextBetween(TempField, '">' , cEndcategory);
  SetField(fieldCategory, TempField);

  // Duration field
  TempField := TextBetween(PageStr, '<td valign="top">Durata</td>', '</tr>');
  HTMLRemovetags(tempfield);
  StringReplace(tempfield, ' minuti', '');
  SetField(fieldLength, TempField);

  // Country field
  TempField := PageStr;
  if PositionDuration > 0 then
     Delete(TempField, 1, PositionDuration - 1)
     else
        if  Positioncast > 0 then
            Delete(TempField, 1, Positioncast - 1)
        else
            if  PositionCategory > 0 then
                Delete(TempField, 1, PositionCategory - 1);

  Tempfield := TextBetween(TempField, '-', ' <strong>');
  TempField  := MyTrim(TempField);
  pos_func   := pos('function(', Tempfield);
  if  pos('Transitional', Tempfield) = 0 then
      if  pos_func = 0 then
          SetField(fieldCountry, TempField);

//  Year
  TempField := PageStr;
  TempField := Textbetween (tempField, cStartYear, cEndYear);
//  TempField := Textbetween (TempField, '(', ')');
  TempField := TextBetween(TempField, cStartYear2, cEndYear2);
  SetField(fieldYear, TempField);

  // Get film image
  cImage := TextBetween(PageStr, cStartImage, cEndImage);
  if cImage = '' then
    cImage := TextBetween(PageStr,cStartImage2, cEndImage2)
  else
  begin
    if GetOption('Poster')=1 then
       cImage := ImagePath + StringReplace(cImage, '/imm.jpg', '/locandina.jpg')
    else
//fs 2018.02.07       cImage := ImagePath + cImage
    cImage := cImage     //fs 2018.02.07
    end;

  if (cImage <> '')  and (pos('twitter_ico.gif', cImage) = 0) then
    GetPicture(cImage);

  TempField := TextBetween(PageStr, '<td valign="top">Rating</td><td>Consigli per la visione di bambini e ragazzi: ', '</tr>');
  if TempField <> '' then
    begin
	  HTMLRemovetags(tempfield);
	  Tempfield := UTF8decode(Tempfield);
	  Tempfield := MyTrim(Tempfield);
	  Tempfield := StringReplace(TempField, 'Film per tutti', 'PT');
	  SetField(fieldCertification, TempField);
    end;

// Description Field
   TempField := TextBetween(PageStr, cStartDesc, cEndDesc) + cEndDesc;
   TempField := MyTrim(TempField);
   TempField := StringReplace(TempField, 'Il film Shadow è disponibile in streaming. Scopri MYmovieslive', '');
   TempField := StringReplace(TempField, 'Questo film è disponibile in versione digitale, scopri il miglior prezzo: TROVASTREAMING', '');
//2018.04.22fs    TempField := fulltrim(Tempfield);
   TempField := FullTrim(UTF8decode(Tempfield));
   SetField(fieldDescription, TempField);

// Movie URL field
   SetField(fieldURL, MovieUrl);
   SetField(fieldDate, DateToStr(Date));
   
// Commento
//   TempField := Textbetween(PageStr, '<p style="padding-right:3px; margin-top:15px;">', '<a href="https://www.mymovies.it/dizionario/critica');
   TempField := Textbetween(PageStr, '">Rassegna stampa</a>', '</td>') + '</td>';
   TempField := Textbetween(TempField, '<p style="padding-right:3px; margin-top:15px;">', '<a href="https://www.mymovies.it/dizionario/critica');
   TempField := MyTrim(TempField);
   SetField(fieldComments, TempField);
end;

procedure CalcLgthToDelete;
begin
  StartChar :=  '<div class="linkblu" style="padding:3px;"';
  EndChar   :=  '<div class="linkblu" style="padding:3px;"';
  Positioncast := Length(startChar) + Length(Textbetween(UsePage, StartChar, EndChar));
  if Positioncast  = 0 then
     begin
     EndChar := '<a href="https://www.mymovies.it/prossimamente/">';
     Positioncast := Length(startChar) + Length(Textbetween(UsePage, StartChar, EndChar));
     end;
end;

// ------------------------------------------------------------------
// FILL PICKTREE CONTROL WITH LINKS & TITLES or RETURN ONE PAGE LINK
// da 35mm.it
// ------------------------------------------------------------------
function PopulatePickTree(OneFilm: boolean): string;
var
  TempIdFilm, TempTitle, campo_ricerca: string;
  TempAuthor, TempYear: string;
  LineToDrop, LineToUse, LineTodelete, LineTxt: string;
  LengthFilm, LgthTitle, LineNr: integer;
  PositionCategory, LgthLineToUse, PositionDuration: integer;
  PageAll, PageLoop, MyMovies_line: string;
  cFilmYear, CYearId: string;
  StartPos, EndPos, ctr_giri: integer;
begin
  ctr_giri := 0;
  if OneFilm then                                                           // per un solo film trovato è OK
    begin
//2018.04.20fs      StartChar := 'https://www.mymovies.it/dizionario/recensione.asp?id=';
//2018.04.20fs      EndChar   := '" title=';
      Startchar := '<div class="linkblu" style="padding:3px;">';       //2018.04.20fs
      Endchar   := '</div>';                                           //2018.04.20fs
      UsePage  := Textbetween(Pagestr, StartChar, EndChar);
      if length(UsePage) > 0 then
        begin
//2018.04.20fs          TempIdFilm := StartChar + Usepage;
          TempIdFilm := Textbetween(UsePage, '<a href="', '"');       //2018.04.20fs
          result := TempIdFilm;
        end
    end
  else
    begin
      PickTreeClear;
      campo_ricerca := getfield(fieldFilePath);
      if  campo_ricerca = '' then
          campo_ricerca := getfield(fieldFormattedTitle);
      PickTreeAdd(NumRisultati + ' risultati ricerca per "' + campo_ricerca + '":', '');                     // per più pagine di film
      PageLoop := PageStr;
      StartChar := '<a title="Database MYmovies" href="http://www.mymovies.it/film/"><strong>Film</strong></a>';
      EndChar := '<a href="https://www.mymovies.it/prossimamente/">';
//fulvio      EndChar := '<a href="https://www.mymovies.it/database/">Effettua una nuova ricerca</a>';
      UsePage := TextBetween(PageStr, StartChar, EndChar) + EndChar;

//2018.04.21fs  la pagina di ricerca contiene ancora delimiters con http://  invece che  https://
      if  length(UsePage) = length(Endchar) then
          begin
          StartChar := '<a title="Database MYmovies" href="http://www.mymovies.it/film/"><strong>Film</strong></a>';
          EndChar := '<a href="http://www.mymovies.it/prossimamente/">';
          UsePage := TextBetween(PageStr, StartChar, EndChar) + EndChar;
          end;
      if debug_search then
          DumpPage(folder+'Mymovies_UsePage.txt', UsePage);                // debug
//2018.04.26fs      repeat                     // inizio gestione pagina multipla
//2018.04.26fs        LineNr  := Pos('>Pagina successiva', PageStr);
        PageAll := UsePage;
        StartChar :=  '<div class="linkblu" style="padding:3px;"';
        Positioncast := Pos(StartChar, UsePage);
        Delete(UsePage, 1, Positioncast - 1)
        CalcLgthToDelete;

        if debug_search and (ctr_giri = 0)then
            DumpPage(folder+'Mymovies_UsePage.txt', UsePage);                // debug
        repeat
          ctr_giri := ctr_giri + 1;
          CalcLgthToDelete;
          StartChar :=  '<div class="linkblu" style="padding:3px;"';
          EndChar   :=  '<div class="linkverde">';
          LineToUse := StartChar + textbetween(UsePage, StartChar, EndChar) + EndChar;
          MyMovies_line := 'Mymovies_line' + IntToStr(ctr_giri) + '.txt';

          StartChar := '<div class="linkverde">';
          EndChar   := '<div class="linkblu" style="padding:3px;"';
          LineToDrop := textbetween(UsePage, StartChar, EndChar);
          if Length(LineToDrop) = 0 then
             begin
             EndChar := '<a href="https://www.mymovies.it/prossimamente/">';
             LineToDrop := textbetween(UsePage, StartChar, EndChar);
             end;
          LineToDelete := LineToUse + LineToDrop;
          PositionDuration := Length(LineToDelete);
          StartPos := pos(StartChar, UsePage);
//2018.04.21fs          StartChar :=  'https://www.mymovies.it/dizionario/recensione.asp?id=';
          StartChar :=  'http://www.mymovies.it/dizionario/recensione.asp?id=';         //2018.04.21fs
          EndChar := '" title="';
          if StartPos > 0 then
            begin
              TempIdFilm := StartChar + TextBetween(UsePage, Startchar, EndChar);
              LengthFilm := length(StartChar) + length(TempIdFilm);
              Delete(UsePage, 1, LengthFilm);

              StartChar := 'title="';
              EndChar := '">';
              TempTitle := TextBetween(UsePage, Startchar, EndChar);
              LgthTitle := Length(TempTitle) + length(StartChar) + length(EndChar);
              TempTitle := FullTrim(TempTitle);
              LgthTitle := length(StartChar) + LgthTitle + length(EndChar);
              TempAuthor := Textbetween (UsePage, 'Un film di <b>', '</b>');
              TempAuthor := Textbetween (TempAuthor, '">', '</a>');
              TempAuthor := UTF8decode(TempAuthor);
              TempYear   := Textbetween (UsePage, '<a href="http://www.mymovies.it/film/?anno=', '">');      //Vjrgil
              TempTitle  := TempTitle + ' (' + TempAuthor + ') ' + TempYear;
              TempTitle  := UTF8decode(Temptitle);
              tempTitle  := Fulltrim(TempTitle);
              PickTreeAdd(TempTitle, TempIdFilm);
              if debug_search then
                 DumpPage(folder + 'Mymovies_line' + IntToStr(ctr_giri) + '.txt', Linetouse);                // debug

              StartChar :=  'https://www.mymovies.it/dizionario/recensione.asp?id=';
              EndChar := '" title="';
              StartPos := pos(StartChar, UsePage);
             Delete(PageAll, 1, Positioncast - 1);
             UsePage := PageAll;
            end;
        until(Positioncast < 100);
        result := '';

//Controlla se ci sono altre pagine di risultati
//2018.04.26fs        StartPos := Pos('Ricerca MYmovies', PageLoop);
//2018.04.26fs        Delete(PageLoop, 1, StartPos - 1);
//2018.04.26fs        StartChar := '<a href="?titolo=';
//2018.04.26fs        EndChar := '">Pagina successiva';

//2018.04.26fs        LineTxt := TextBetween(PageLoop, StartChar, EndChar);
//2018.04.26fs        SetField(fieldcomments, AddressNext);
//        Pagestr  := GetPage(Addressnext);                        //errore getpage
//2018.04.26fs        PageLoop := PageStr;
//2018.04.26fs        StartChar := '<a title="Database MYmovies" href="https://www.mymovies.it/film/"><strong>Film</strong></a>';
//2018.04.26fs        EndChar := '<a href="https://www.mymovies.it/prossimamente/">';
//2018.04.26fs        UsePage := TextBetween(PageStr, StartChar, EndChar) + EndChar;
//2018.04.26fs      until (LineNr < 1); // repeat
    end
end;

//
// ---------------------------------
// ANALYZE FIRST SEARCH RESULT PAGE:
// IN:  page Url (string)
// OUT: none
// ---------------------------------
procedure AnalyzeSearchPage(Url: string);
begin
  PageStr := getpage(Url);
  SetField(fieldURL, URL);     //debug
  if debug_search then
     DumpPage(folder+'Mymovies_search_page.txt', Pagestr);                // debug
  NumRisultati := Textbetween(PageStr, cStartNumRis, cEndNumRis);
 
  if ( (NumRisultati = '0') or (NumRisultati = '')) then
    begin
      ShowMessage('Title not found / Nessun film trovato.');
      SetField(fieldURL, MovieUrl);
      exit;
    end

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

  AnalyzeMoviePage;
end;

begin
  if (CheckVersion(4,2,2)) and (StringUtils1_Version > 5) then
    begin
      TranslatedStr := StringReplace(GetField(fieldTranslatedTitle), '.', ' ');
      MovieName := StringReplace(GetField(fieldOriginalTitle), '.', ' ');
      if (TranslatedStr <> '') then
        MovieName := TranslatedStr;

      if(Input('MyMovies.It', 'Enter the title of the movie', MovieName)) then
        begin
          MovieUrl := QueryBase + StringReplace(MovieName,' ','+') + UrlRicerca;
          AnalyzeSearchPage(MovieUrl);
        end;
    end
  else
    ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 4.2.2) and StringUtils1 version 6');
end.
Last edited by fulvio53s03 on 2019-05-14 09:07:22, edited 1 time in total.
antp
Site Admin
Posts: 9651
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Re: [UPD ITA] mymovies.it

Post by antp »

Thanks :)

Just a remark, when posting code, it is better to use the 'code' tag (5th icon, </>) instead of 'quote' tag (4th icon, “)
fulvio53s03
Posts: 764
Joined: 2007-04-28 05:46:43
Location: Italy

Re: [UPD ITA] mymovies.it

Post by fulvio53s03 »

thanks.
Sorry, it was too early in the morning.....
:innocent:
mrobama
Posts: 85
Joined: 2009-04-03 12:34:34

Re: [UPD ITA] mymovies.it

Post by mrobama »

New release, what's new:
- fixed category (previous behaviour: sometimes commas at the end of the string, now string is trimmed)
- fixed description and comments (previous behaviour: sometime too much spaces and newlines, now text is well cleaned)
- fixed description (previous behaviour: sometime advertising is present in text, now only useful text is present;)

@fulvio53s03 : enjoy the new version ;)

@antp : please update the script with this code:

Code: Select all

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

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

[Infos]
Authors=Fulvio53s03 & seraphico (Original by Claudio Rinaldi). Thanks to MrObama, Vjncenzo.
Title=MyMovies
Description=Get movie info from MyMovies.it
Site=www.mymovies.it
Language=IT
Version=3.0.4    24.06.2020
Requires=4.2.2
Comments=
License=
GetInfo=1
RequiresMovies=1

[Options]
Poster=0|0|1=Download full-res Poster|0=Download tiny Poster

[Parameters]

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

program MyMoviesIT;

uses
  Stringutils7552;

const
  UrlBase = 'https://www.mymovies.it';
//  UrlRicerca = '&titolo_orig=&regista=&attore=&id_genere=-1&nazione=&clausola1=-1&anno_prod=&clausola2=-1&stelle=-1&id_manif=-1&anno_manif=&disponib=-1&ordinamento=1&submit=Inizia+ricerca+%BB';
    Urlricerca = '&titolo_orig=&regista=&attore=&id_genere=-1&nazione=&clausola1=-1&anno_prod=&clausola2=-1&stelle=-1&id_manif=-1&anno_manif=&disponib=-1&ordinamento=0&submit=Inizia+ricerca+%C2%BB';
  QueryBase = UrlBase + '/database/ricerca/avanzata/?titolo=';
  debug_search = false;                                   // debug mode on/off
  folder = 'f:\prova\';                                   // directory where to save files

  ImagePath = UrlBase + '/filmclub/';
  Apice       = #39;
  NoCommento = '(Riceverai le informazioni pochi giorni prima della messa in onda)';  // commenti inutili  "(la recensione più amata dal pubblico)"
  PiuAmata   = '(la recensione più amata dal pubblico)';
  cStartNumRis = 'nel Titolo. Ho trovato '; // Result Number start Marker
  cEndNumRis = ' film.</h3>';               // Result Number end Marker
  cStartId = 'recensione.asp?id=';   // ID start marker
  EndId = '" title="';              // ID end marker
  cStartNewTitle = '<meta property="og:title" content="';
  cEndNewTitle = '"';
  cStartTitle = 'Titolo originale <em>';             // Title start marker
  cEndTitle = '</em>';              // Title end marker
  cStartTranslTitle = '<h1 style="margin-bottom:3px;">';        // Translated title start marker
  cEndTranslTitle = '</h1>';         // Translated title end marker
  cStartImage2 = '<img src="';       // Image start marker
  cEndImage2 = '"';                  // Image end marker
  cStartDirector = 'Un film di <a href="';      // Director start marker
  cEndDirector = '</a>.';                       // Director end marker
  cStartCategory  = '<a title="Film ';   // Catogory start marker
  cEndCategory = '</a>';            // Category first end marker
  cStartCategory2  = '">';   // Catogory start marker
  cEndCategory2 = '</a>';            // Category second end marker
  cStartDuration = 'durata ';        // Duration start marker
  cEndDuration = ' min.';          // Duration end marker
  cStartYear = '<meta property="og:title" content="';              // Year start marker
  cEndYear = '/>';                 // Year end marker
  cStartYear2  = '(';   // year start marker
  cEndYear2 = ')';            // year second end marker
  cStartDesc = '<div id="recensione">';          // Description start marker
  cStartDesc2 = '<td rowspan="2" valign="top">';          // Description start marker
  cEndDesc = '<div style="text-align:right;">';  // Description end marker

  cStartCast = 'Con <a href="';              // Actor start marker
  cEndCast   = '<a title="';
  cEndCast2  = 'Titolo originale <em>';      // Actor end marker
//  cStartImage = 'src="https://pad.mymovies.it/filmclub/';     //fs 2018.02.07
  cStartImage = '<meta property="og:image" content="';       //fs 2018.02.07
  cEndImage = '"';
var
  MovieUrl, MovieName, Commento, TranslatedStr, PageStr:  string;
  Startchar, EndChar, NumRisultati, UsePage, Addressnext: String;
  cImage, SaveUrl, SaveField, TempField, DelField : string;
  PositionCategory, PositionDuration: integer;
  Positioncast: integer;
  idx : integer;
 
function MyTrim(Value: string):string;
var
  ExitLoop: Boolean;
  NewField, OldField: String;
  OldLgthValue, NewLgthValue: integer;
begin
    NewField := ' ';
    OldField := #9;
    value := StringReplace(Value, OldField, NewField);
    OldField := #10;
    value := StringReplace(Value, OldField, NewField);
    OldField := #13;
    value := StringReplace(Value, OldField, NewField);
    OldField := '  ';
    value := StringReplace(Value, OldField, NewField);
    Newfield := '&';
    OldField := '&';
    value := StringReplace(Value, OldField, NewField);
    Newfield := 'è';
    OldField := '&egrave;';
    value := StringReplace(Value, OldField, NewField);
    ExitLoop := False;
    OldLgthValue := length(Value);
    HTMLRemoveTags(Value);
    Value := FullTrim(Value);
    OldField := '  ';
    NewField := ' ';
    repeat
      value := StringReplace(Value, OldField, NewField);
      NewLgthValue := length(Value);
    if  OldLgthValue = NewLgthValue then
        ExitLoop := True
    else
        OldLgthValue := NewLgthValue;
    until ExitLoop;

  Result := Value;
end;

//-------------------------
procedure estrae_info;          //2017.10.26 cambio struttura sito: aggiunta pagina intermedia tra la ricerca e le info.
//-------------------------
//2018.04.22fs begin
//2018.04.22fs   MovieUrl := textbetween(PageStr, '<!-- webTrekk Espresso -->', '<!-- /webTrekk Espresso -->');
//2018.04.22fs   HTMLRemoveTags(MovieUrl);
//2018.04.22fs   MovieUrl := textbetween(MovieUrl, (' pageHref = ' + Apice), (Apice + ';'));
//2018.04.22fs   PageStr := getPage(MovieUrl);
//2018.04.22fs    if debug_search then
//2018.04.22fs       DumpPage(folder+'Mymovies_page_second.txt', Pagestr);                // debug
//2018.04.22fs end;

//2018.04.22fs inizio modifiche
var
  pos_dizionario: integer;
begin
  SaveUrl := MovieUrl;
  MovieUrl := textbetween(PageStr, '<!-- webTrekk Espresso -->', '<!-- /webTrekk Espresso -->');
  HTMLRemoveTags(MovieUrl);
  MovieUrl := textbetween(MovieUrl, (' pageHref = ' + Apice), (Apice + ';'));
  pos_dizionario :=  pos('/dizionario/recensione.asp?id=', MovieUrl);
  if  pos_dizionario <> 0 then
    PageStr := getPage(MovieUrl);
  if  pos_dizionario =  0 then
    MovieUrl := SaveUrl;
  if  debug_search then
      DumpPage(folder+'Mymovies_page_second.txt', Pagestr);                // debug
//2018.04.22fs  fine  modifiche
end;

// -----------------------
// ANALYZE MOVIE DATA PAGE
// IN:  none    OUT: set Ant fields
// -----------------------
procedure AnalyzeMoviePage;
var
  pos_dizionario: integer;
begin
  // Get packed title main page
  pos_dizionario :=  pos('/dizionario/recensione.asp?id=', MovieUrl);     //2018.04.22
  if  pos_dizionario <> 0 then                                            //2018.04.22
      MovieUrl := StringReplace(MovieUrl, 'http:', 'https:');             //2018.04.22
  PageStr := getPage(MovieUrl);
  if debug_search then
     DumpPage(folder+'Mymovies_page_found.txt', Pagestr);                // debug
  if pos('<!-- webTrekk Espresso -->', PageStr) > 0 then
     begin
        estrae_info
     end;
  if pos('var_carica_taboola', pageStr) > 0
     then
         nuovo_tipo_pagina
     else
         vecchio_tipo_pagina
  end;
//end;

//----------------------------
procedure nuovo_tipo_pagina;
var
  titolo_originale, Trama_e_critica: string;
  lgth_delimiters: integer;
  init_char, end_char: string;
begin
//  PageStr := UTF8decode(PageStr);               N.B. questo fa saltare l'strazione di trama e commenti/critica
  TempField := TextBetween(PageStr, cStartNewTitle, cEndNewTitle);
  TempField := MyTrim(TempField);
  SetField(fieldTranslatedTitle, TempField);

  // Original Title field
  titolo_originale := TextBetween(PageStr, 'Titolo originale</td>', '</tr>');
  HTMLRemoveTags(titolo_originale);
  SetField(fieldOriginalTitle, titolo_originale);
  if titolo_originale = '' then
    SetField(fieldOriginalTitle, GetField(fieldTranslatedTitle))
    else
    SetField(fieldOriginalTitle, titolo_originale);

  // Director Field
  TempField := TextBetween(PageStr, '<tr><td valign="top">Regia di</td>', '</tr>');
  HTMLRemovetags(tempfield);
  Tempfield := UTF8decode(Tempfield);
  TempField := Fulltrim(Tempfield);

  SetField(fieldDirector, TempField);

  // Actors Field
  TempField := TextBetween(PageStr, '<tr><td valign="top">Attori</td>', '</tr>');
  HTMLRemovetags(tempfield);
  Tempfield := UTF8decode(Tempfield);
  if debug_search then
    Tempfield := Tempfield + CRLF + '(new_form)';
  SetField(fieldActors, TempField);            //attori principali

  // Category Field
  TempField := TextBetween(PageStr, '<tr><td valign="top">Genere</td>', '</tr>');
  HTMLRemovetags(TempField);
  TempField := fulltrim(TempField);
  // remove final commas if present
  if copy(TempField, Length(TempField), 1) = ',' then
	TempField := copy(TempField, 1, Length(TempField)-1);  
  SetField(fieldCategory, TempField);

  // Duration field
  TempField := TextBetween(PageStr, '<tr><td valign="top">Durata</td>', '</tr>');
  HTMLRemovetags(tempfield);
  tempfield := Textbefore(Tempfield, ' ', '');
  SetField(fieldLength, TempField);

  // Country field
  TempField := PageStr;
  Tempfield := TextBetween(TempField, '<td valign="top">Produzione</td>', '</tr>') + '</tr>';
//  Tempfield := '<tr> href=' + TextBetween(TempField, 'href=', '</tr>');
  Tempfield := '<tr>' + TextBetween(TempField, 'href=', '</tr>');
  HTMLRemovetags(tempfield);
//  TempField := MyTrim(TempField);
  tempField := textafter(Tempfield, '>');
  SetField(fieldCountry, TempField);

//  Year
  TempField := PageStr;
  TempField := Textbetween (tempField, '<td valign="top">Anno</td>', '</tr>');
  HTMLRemovetags(tempfield);
  SetField(fieldYear, TempField);

  // Get film image
  cImage := TextBetween(PageStr, '<amp-img layout="responsive" class="stonda3" width="230" height="330" src="', '"></amp-img>');
  cImage := StringReplace(cImage, 'https', 'http');

  if (cImage <> '')  and (pos('twitter_ico.gif', cImage) = 0) then
     GetPicture(cImage);

  TempField := TextBetween(PageStr, '<td valign="top">Rating</td><td>Consigli per la visione di bambini e ragazzi: ', '</tr>');
  if TempField <> '' then
    begin
	  HTMLRemovetags(tempfield);
	  Tempfield := UTF8decode(Tempfield);
	  Tempfield := MyTrim(Tempfield);
	  Tempfield := StringReplace(TempField, 'Film per tutti', 'PT');
	  SetField(fieldCertification, TempField);
    end;

// Description Field
//2018-02-27   init_char := '<div class="lectios">';
//2018-02-27   end_char  := '<div class="clear10">';
//2018-02-27   Trama_e_critica := init_char + TextBetween(PageStr, init_char, end_char) + end_char;
   init_char := '<p class="highlights mm-margin-auto mm-center mm-margin-t16">';                //2018-02-27
   end_char  := '<div';                                                                         //2018-02-27
   Trama_e_critica := fulltrim(TextBetween(PageStr, init_char, end_char));                      //2018-02-27
   HTMLRemovetags(Trama_e_critica);
   if  trama_e_critica = '' then                                                                    //2018-04-24
      begin                                                                                         //2018-04-24
       init_char := '<div class="sottotitolo_autore mm-letter-spacing-2 mm-center mm-show-xs mm-hide-sm">';                //2018-04-24
       end_char  := '<div class="mm-right mm-margin-r8"">';                                                                         //2018-04-24
       Trama_e_critica := fulltrim(TextBetween(PageStr, init_char, end_char));                      //2018-04-24
       Trama_e_critica := UTF8decode(Trama_e_critica);
       HTMLRemovetags(Trama_e_critica);
       Trama_e_critica := UTF8decode(Trama_e_critica);
      end;
   Trama_e_critica := UTF8decode(Trama_e_critica);
//   Trama_e_critica := fulltrim(TextBetween(PageStr, init_char, end_char));                      //2018-02-27

   if debug_search then
      DumpPage(folder+'Mymovies_trama_e_critica.txt', trama_e_critica);                // debug
//2018.04.20fs   SetField(fieldDescription, Trama_e_critica);
   Trama_e_critica := fulltrim(Trama_e_critica);
   Trama_e_critica := MyTrim(Trama_e_critica);
   SetField(fieldDescription, Trama_e_critica);                            //2018.04.20fs

// Comments Field
   init_char := 'Recensione di';
   end_char  := '<div class="clear10">';
//   TempField := '<p ' + init_char + textBetween(Trama_e_critica, init_char, end_char) + end_char;
   TempField := fulltrim(TextBetween(PageStr, init_char, end_char));
   TempField := Tempfield + end_char;
   if length(tempfield) = length(end_char) then
      begin
      init_char := '<div class="sottotitolo_autore mm-letter-spacing-2 mm-center mm-show-xs mm-hide-sm">';
      end_char  := '<div class="mm-right mm-margin-r8"">';
      TempField := fulltrim(TextBetween(PageStr, init_char, end_char));
      end;

   Init_char  := '<p class="corpo">';
   end_char   := '</p>';                                              //2018.04.24
   TempField := init_char + TextBetween(Tempfield, init_char, end_char) + end_char;   //fin qui temp_field OK per bush...

   End_char := '<a target="_blank"';
   TempField := init_char + fulltrim(TextBetween(PageStr, init_char, end_char)) + end_char;
   lgth_delimiters :=  (length(init_char) + length(end_char));
   If length(Tempfield) = lgth_delimiters then                                                 //2018.04.25fs
      begin                                                                      //2018.04.25fs
        Init_char := '<p class="corpo">';                                        //2018.04.25fs
        end_char := '</p>';                                                      //2018.04.25fs
        TempField := init_char + fulltrim(TextBetween(PageStr, init_char, end_char)) + end_char;  //2018.04.25fs
      end;                                                                       //2018.04.25fs
   TempField := StringReplace(TempField, 'Il film Shadow è disponibile in streaming. Scopri MYmovieslive', '');
   TempField := StringReplace(TempField, 'Questo film è disponibile in versione digitale, scopri il miglior prezzo: TROVASTREAMING', '');
   HTMLRemovetags(tempfield);
   Tempfield := UTF8decode(Tempfield);
   TempField := Fulltrim(Tempfield);
   TempField := MyTrim(TempField);
   SetField(fieldComments, TempField);                               //2018.04.20fs

// Movie URL field
   SetField(fieldURL, MovieUrl);
   SetField(fieldDate, DateToStr(Date));

end;

//----------------------------

  
//----------------------------
procedure vecchio_tipo_pagina;
//----------------------------
var
  pos_func: integer;
begin
  TempField := TextBetween(PageStr, cStartTranslTitle, cEndTranslTitle);
  TempField := MyTrim(TempField);
  SetField(fieldTranslatedTitle, TempField);

  // Original Title field
  SetField(fieldOriginalTitle, TextBetween(PageStr, cStartTitle, cEndTitle));
  if(GetField(fieldOriginalTitle)='')then
    SetField(fieldOriginalTitle, GetField(fieldTranslatedTitle));

  // Director Field
  TempField := TextBetween(PageStr, cStartDirector, cEndDirector) + cEndDirector;
  TempField := TextBetween(TempField, '>' , cEndDirector);
  HTMLRemovetags(tempfield);
  Tempfield := UTF8decode(Tempfield);
  TempField := Fulltrim(Tempfield);
  SetField(fieldDirector, TempField);

  // Actors Field
  TempField := CstartCast + TextBetween(PageStr, cStartCast, cEndCast);     // da 'con:'   a Titolo
  Positioncast := pos(cStartCast, PageStr) + length(TempField);
  SaveField := TempField;
  TempField := TextBetween(PageStr, cStartCast, cEndCast2);   // da 'con:'   a Titolo Originale
  if length(tempField) > 0 then
      TempField := '<a href="' + TempField
  else
    TempField := '<a href="' + SaveField;

  DelField  := '<div id="attori_espandi"' + TextBetween(TempField, '<div id="attori_espandi"', '</div>');
  TempField := StringReplace(TempField, DelField, '');
  DelField  := '<div id="attori_comprimi"' + TextBetween(TempField, '<div id="attori_comprimi"', '</div>');
  TempField := StringReplace(TempField, DelField, '');
  TempField := UTF8decode(TempField);
  TempField := MyTrim(TempField);
  if debug_search then
    Tempfield := Tempfield + CRLF + '(old_form)';

  SetField(fieldActors, TempField);

  // Category Field
  TempField := TextBetween(PageStr, cStartCategory, cEndcategory) + cEndcategory;
  TempField := TextBetween(TempField, cStartCategory2, cEndcategory2);
//  TempField := TempField + cEndcategory;
//  TempField := TextBetween(TempField, '">' , cEndcategory);
  TempField := fulltrim(TempField);
  // remove final commas if present
  if copy(TempField, Length(TempField), 1) = ',' then
	TempField := copy(TempField, 1, Length(TempField)-1);
  SetField(fieldCategory, TempField);

  // Duration field
  TempField := TextBetween(PageStr, '<td valign="top">Durata</td>', '</tr>');
  HTMLRemovetags(tempfield);
  StringReplace(tempfield, ' minuti', '');
  SetField(fieldLength, TempField);

  // Country field
  TempField := PageStr;
  if PositionDuration > 0 then
     Delete(TempField, 1, PositionDuration - 1)
     else
        if  Positioncast > 0 then
            Delete(TempField, 1, Positioncast - 1)
        else
            if  PositionCategory > 0 then
                Delete(TempField, 1, PositionCategory - 1);

  Tempfield := TextBetween(TempField, '-', ' <strong>');
  TempField  := MyTrim(TempField);
  pos_func   := pos('function(', Tempfield);
  if  pos('Transitional', Tempfield) = 0 then
      if  pos_func = 0 then
          SetField(fieldCountry, TempField);

//  Year
  TempField := PageStr;
  TempField := Textbetween (tempField, cStartYear, cEndYear);
//  TempField := Textbetween (TempField, '(', ')');
  TempField := TextBetween(TempField, cStartYear2, cEndYear2);
  SetField(fieldYear, TempField);

  // Get film image
  cImage := TextBetween(PageStr, cStartImage, cEndImage);
  if cImage = '' then
    cImage := TextBetween(PageStr,cStartImage2, cEndImage2)
  else
  begin
    if GetOption('Poster')=1 then
       cImage := ImagePath + StringReplace(cImage, '/imm.jpg', '/locandina.jpg')
    else
//fs 2018.02.07       cImage := ImagePath + cImage
    cImage := cImage     //fs 2018.02.07
    end;

  if (cImage <> '')  and (pos('twitter_ico.gif', cImage) = 0) then
    GetPicture(cImage);

  TempField := TextBetween(PageStr, '<td valign="top">Rating</td><td>Consigli per la visione di bambini e ragazzi: ', '</tr>');
  if TempField <> '' then
    begin
	  HTMLRemovetags(tempfield);
	  Tempfield := UTF8decode(Tempfield);
	  Tempfield := MyTrim(Tempfield);
	  Tempfield := StringReplace(TempField, 'Film per tutti', 'PT');
	  SetField(fieldCertification, TempField);
    end;

// Description Field
   TempField := TextBetween(PageStr, cStartDesc, cEndDesc) + cEndDesc;
   TempField := TextBetween(TempField, cStartDesc2, cEndDesc) + cEndDesc;
   TempField := MyTrim(TempField);
   TempField := StringReplace(TempField, 'Il film Shadow è disponibile in streaming. Scopri MYmovieslive', '');
   TempField := StringReplace(TempField, 'Questo film è disponibile in versione digitale, scopri il miglior prezzo: TROVASTREAMING', '');
//2018.04.22fs    TempField := fulltrim(Tempfield);
   TempField := FullTrim(UTF8decode(Tempfield));
   TempField := MyTrim(TempField);
   SetField(fieldDescription, TempField);

// Movie URL field
   SetField(fieldURL, MovieUrl);
   SetField(fieldDate, DateToStr(Date));
   
// Commento
//   TempField := Textbetween(PageStr, '<p style="padding-right:3px; margin-top:15px;">', '<a href="https://www.mymovies.it/dizionario/critica');
   TempField := Textbetween(PageStr, '">Rassegna stampa</a>', '</td>') + '</td>';
   TempField := Textbetween(TempField, '<p style="padding-right:3px; margin-top:15px;">', '<a href="https://www.mymovies.it/dizionario/critica');
   TempField := MyTrim(TempField);
   SetField(fieldComments, TempField);
end;

procedure CalcLgthToDelete;
begin
  StartChar :=  '<div class="linkblu" style="padding:3px;"';
  EndChar   :=  '<div class="linkblu" style="padding:3px;"';
  Positioncast := Length(startChar) + Length(Textbetween(UsePage, StartChar, EndChar));
  if Positioncast  = 0 then
     begin
     EndChar := '<a href="https://www.mymovies.it/prossimamente/">';
     Positioncast := Length(startChar) + Length(Textbetween(UsePage, StartChar, EndChar));
     end;
end;

// ------------------------------------------------------------------
// FILL PICKTREE CONTROL WITH LINKS & TITLES or RETURN ONE PAGE LINK
// da 35mm.it
// ------------------------------------------------------------------
function PopulatePickTree(OneFilm: boolean): string;
var
  TempIdFilm, TempTitle, campo_ricerca: string;
  TempAuthor, TempYear: string;
  LineToDrop, LineToUse, LineTodelete, LineTxt: string;
  LengthFilm, LgthTitle, LineNr: integer;
  PositionCategory, LgthLineToUse, PositionDuration: integer;
  PageAll, PageLoop, MyMovies_line: string;
  cFilmYear, CYearId: string;
  StartPos, EndPos, ctr_giri: integer;
begin
  ctr_giri := 0;
  if OneFilm then                                                           // per un solo film trovato è OK
    begin
//2018.04.20fs      StartChar := 'https://www.mymovies.it/dizionario/recensione.asp?id=';
//2018.04.20fs      EndChar   := '" title=';
      Startchar := '<div class="linkblu" style="padding:3px;">';       //2018.04.20fs
      Endchar   := '</div>';                                           //2018.04.20fs
      UsePage  := Textbetween(Pagestr, StartChar, EndChar);
      if length(UsePage) > 0 then
        begin
//2018.04.20fs          TempIdFilm := StartChar + Usepage;
          TempIdFilm := Textbetween(UsePage, '<a href="', '"');       //2018.04.20fs
          result := TempIdFilm;
        end
    end
  else
    begin
      PickTreeClear;
      campo_ricerca := getfield(fieldFilePath);
      if  campo_ricerca = '' then
          campo_ricerca := getfield(fieldFormattedTitle);
      PickTreeAdd(NumRisultati + ' risultati ricerca per "' + campo_ricerca + '":', '');                     // per più pagine di film
      PageLoop := PageStr;
      StartChar := '<a title="Database MYmovies" href="http://www.mymovies.it/film/"><strong>Film</strong></a>';
      EndChar := '<a href="https://www.mymovies.it/prossimamente/">';
//fulvio      EndChar := '<a href="https://www.mymovies.it/database/">Effettua una nuova ricerca</a>';
      UsePage := TextBetween(PageStr, StartChar, EndChar) + EndChar;

//2018.04.21fs  la pagina di ricerca contiene ancora delimiters con http://  invece che  https://
      if  length(UsePage) = length(Endchar) then
          begin
          StartChar := '<a title="Database MYmovies" href="http://www.mymovies.it/film/"><strong>Film</strong></a>';
          EndChar := '<a href="http://www.mymovies.it/prossimamente/">';
          UsePage := TextBetween(PageStr, StartChar, EndChar) + EndChar;
          end;
      if debug_search then
          DumpPage(folder+'Mymovies_UsePage.txt', UsePage);                // debug
//2018.04.26fs      repeat                     // inizio gestione pagina multipla
//2018.04.26fs        LineNr  := Pos('>Pagina successiva', PageStr);
        PageAll := UsePage;
        StartChar :=  '<div class="linkblu" style="padding:3px;"';
        Positioncast := Pos(StartChar, UsePage);
        Delete(UsePage, 1, Positioncast - 1)
        CalcLgthToDelete;

        if debug_search and (ctr_giri = 0)then
            DumpPage(folder+'Mymovies_UsePage.txt', UsePage);                // debug
        repeat
          ctr_giri := ctr_giri + 1;
          CalcLgthToDelete;
          StartChar :=  '<div class="linkblu" style="padding:3px;"';
          EndChar   :=  '<div class="linkverde">';
          LineToUse := StartChar + textbetween(UsePage, StartChar, EndChar) + EndChar;
          MyMovies_line := 'Mymovies_line' + IntToStr(ctr_giri) + '.txt';

          StartChar := '<div class="linkverde">';
          EndChar   := '<div class="linkblu" style="padding:3px;"';
          LineToDrop := textbetween(UsePage, StartChar, EndChar);
          if Length(LineToDrop) = 0 then
             begin
             EndChar := '<a href="https://www.mymovies.it/prossimamente/">';
             LineToDrop := textbetween(UsePage, StartChar, EndChar);
             end;
          LineToDelete := LineToUse + LineToDrop;
          PositionDuration := Length(LineToDelete);
          StartPos := pos(StartChar, UsePage);
//2018.04.21fs          StartChar :=  'https://www.mymovies.it/dizionario/recensione.asp?id=';
          StartChar :=  'http://www.mymovies.it/dizionario/recensione.asp?id=';         //2018.04.21fs
          EndChar := '" title="';
          if StartPos > 0 then
            begin
              TempIdFilm := StartChar + TextBetween(UsePage, Startchar, EndChar);
              LengthFilm := length(StartChar) + length(TempIdFilm);
              Delete(UsePage, 1, LengthFilm);

              StartChar := 'title="';
              EndChar := '">';
              TempTitle := TextBetween(UsePage, Startchar, EndChar);
              LgthTitle := Length(TempTitle) + length(StartChar) + length(EndChar);
              TempTitle := FullTrim(TempTitle);
              LgthTitle := length(StartChar) + LgthTitle + length(EndChar);
              TempAuthor := Textbetween (UsePage, 'Un film di <b>', '</b>');
              TempAuthor := Textbetween (TempAuthor, '">', '</a>');
              TempAuthor := UTF8decode(TempAuthor);
              TempYear   := Textbetween (UsePage, '<a href="http://www.mymovies.it/film/?anno=', '">');      //Vjrgil
              TempTitle  := TempTitle + ' (' + TempAuthor + ') ' + TempYear;
              TempTitle  := UTF8decode(Temptitle);
              tempTitle  := Fulltrim(TempTitle);
              PickTreeAdd(TempTitle, TempIdFilm);
              if debug_search then
                 DumpPage(folder + 'Mymovies_line' + IntToStr(ctr_giri) + '.txt', Linetouse);                // debug

              StartChar :=  'https://www.mymovies.it/dizionario/recensione.asp?id=';
              EndChar := '" title="';
              StartPos := pos(StartChar, UsePage);
             Delete(PageAll, 1, Positioncast - 1);
             UsePage := PageAll;
            end;
        until(Positioncast < 100);
        result := '';

//Controlla se ci sono altre pagine di risultati
//2018.04.26fs        StartPos := Pos('Ricerca MYmovies', PageLoop);
//2018.04.26fs        Delete(PageLoop, 1, StartPos - 1);
//2018.04.26fs        StartChar := '<a href="?titolo=';
//2018.04.26fs        EndChar := '">Pagina successiva';

//2018.04.26fs        LineTxt := TextBetween(PageLoop, StartChar, EndChar);
//2018.04.26fs        SetField(fieldcomments, AddressNext);
//        Pagestr  := GetPage(Addressnext);                        //errore getpage
//2018.04.26fs        PageLoop := PageStr;
//2018.04.26fs        StartChar := '<a title="Database MYmovies" href="https://www.mymovies.it/film/"><strong>Film</strong></a>';
//2018.04.26fs        EndChar := '<a href="https://www.mymovies.it/prossimamente/">';
//2018.04.26fs        UsePage := TextBetween(PageStr, StartChar, EndChar) + EndChar;
//2018.04.26fs      until (LineNr < 1); // repeat
    end
end;

//
// ---------------------------------
// ANALYZE FIRST SEARCH RESULT PAGE:
// IN:  page Url (string)
// OUT: none
// ---------------------------------
procedure AnalyzeSearchPage(Url: string);
begin
  PageStr := getpage(Url);
  SetField(fieldURL, URL);     //debug
  if debug_search then
     DumpPage(folder+'Mymovies_search_page.txt', Pagestr);                // debug
  NumRisultati := Textbetween(PageStr, cStartNumRis, cEndNumRis);
 
  if ( (NumRisultati = '0') or (NumRisultati = '')) then
    begin
      ShowMessage('Title not found / Nessun film trovato.');
      SetField(fieldURL, MovieUrl);
      exit;
    end

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

  AnalyzeMoviePage;
end;

begin
  if (CheckVersion(4,2,2)) and (StringUtils1_Version > 5) then
    begin
      TranslatedStr := StringReplace(GetField(fieldTranslatedTitle), '.', ' ');
      MovieName := StringReplace(GetField(fieldOriginalTitle), '.', ' ');
      if (TranslatedStr <> '') then
        MovieName := TranslatedStr;

      if(Input('MyMovies.It', 'Enter the title of the movie', MovieName)) then
        begin
          MovieUrl := QueryBase + StringReplace(MovieName,' ','+') + UrlRicerca;
          AnalyzeSearchPage(MovieUrl);
        end;
    end
  else
    ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 4.2.2) and StringUtils1 version 6');
end.

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

Re: [UPD ITA] mymovies.it

Post by antp »

Thanks
Post Reply