[ antp.be > Forum ]

[ FAQFAQ - SearchSearch - MemberlistMemberlist - UsergroupsUsergroups - ]

[ RegisterRegister - ProfileProfile - Log in to check your private messagesLog in to check your private messages - Log inLog in ]


FilmAffinity (ES) 3.00 + Ecartelera (ES) 1.1

 
Post new topic   Reply to topic    www.antp.be Forum Index -> Ant Movie Catalog > Scripts
   

Do you use this script? / Usas este script?
Si
100%
 100%  [ 4 ]
No
0%
 0%  [ 0 ]
Total Votes : 4

Author Message
carlosmg2
PostPosted: 2015-09-04 18:44:22    Post subject: FilmAffinity (ES) 3.00 + Ecartelera (ES) 1.1 Reply with quote
View user's profile Send private message Visit poster's website Hola,

Tras el cierre de cartelespeliculas me he migrado a E-Cartelera como sustituto para conseguir posters de calidad. He unido estos 2 scripts haciendo un poco de Franquestein porque me gustan las caratulas de "Ecartelera".
Todos los creditos van para sus creadores.

Espero que a alguien le resulte util.
Un saludo

-------------------------------------------

Hello,

I've done a little merge of these 2 scripts with the permission of their Authors. All credits to them. And thanks to Raoul_Volfoni for helping me doing Ecartelera script


Code:
(***************************************************

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

[Infos]
Authors=aviloria (aviloria@yahoo.com) modded by: rodpedja (rodpedja@gmail.com), kreti (bisoft@hotmail.com), MrK, gilistico, juliojs, Albher, Arturo, jacqlittle, carlosmg2
Title=FilmAffinity (ES) + Ecartelera (ES)
Description=Movie importation script for FilmAffinity Spain + Poster from eCartelera
Site=http://www.filmaffinity.com + http://www.ecartelera.com
Language=ES
Version=3.0 + 1.1
Requires=4.2.1
Comments=adaptation for compatibility with 4.2.1 https version. Added Extras capture. Changed Charset ISO-> utf8
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
RequiresMovies=1

[Options]
DontAsk=0|0|1=Mtodo rpido: No te pregunta el titulo al principio, ni te pide confirmar si slo hay un resultado|0=Mtodo lento: Confirmas la informacin manualmente
ActorsInALine=0|0|1=Actores separados por comas|0=Actores en lineas independientes
Force350=0|0|1=force the behavior of 3.5.0 version|0=Version auto
DontWantExtras=1|1|1=No se recopilan extras|0=Se recopilan extras: enlaces, imgenes
GroupImages=1|1|1=Agrupa todas las imagenes en una misnma categora 'Imagenes'|0=Divide las imgenes por categorias
OrdenPorAnyo=1|0|1=Ordena lista de busqueda por ao|0=Ordena lista de busqueda por relevancia

[Parameters]
ExtraCriticsLimit=5|99|Lmite de criticas en Extras
ExtraImagesLimit=5|99|Lmite de imgenes en Extras
ExtraTrailersLimit=5|99|Lmite de Trailers en Extras

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

program FilmAffinity;
const
   BaseURL = 'https://www.filmaffinity.com';
var
   MovieName : string;
   MovieURL: string;

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

function LineDecode(S: string):string;
begin
   S:= UTF8Decode(S);
   HTMLDecode(S);
   Result := S;
end;

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;

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

//
//  ConvertAlphaNum: Quita todo menos letras (mayusculas y minusculas) y numeros
//

Function ConvertAlphaNum(s: string) : string;
var
  i: Integer;
  s2, ch: string;
begin
  s2 := '';
  For i := 1 To Length(s) do
    begin
      ch := copy(s, i, 1);
      if ((ch >= 'a') and (ch <= 'z')) or ((ch >= '0') and (ch <= '9')) or ((ch >= 'A') and (ch <= 'Z'))  then
      s2 := s2 + ch;
    end;
  result := s2;
end;

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

function TextBetween(S: string; StartTag: string; EndTag: string): string;
var
   ini, fin, lenS: Integer;
begin
   Result := '';
   lenS := Length(S);
   ini := Pos(StartTag, S);
   if ini <> 0 then
   begin
      ini := ini + Length(StartTag);
      S:= Copy(S,ini,lenS-ini+1);
      ini:=1;
      fin := Pos(EndTag, S);
      if (fin <> 0) and (fin > ini) then
          Result := Copy(S, ini, fin - ini);
   end;
end;

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

function TextAfter(S: string; StartTag: string): string;
var
  ini: Integer;
begin
  ini := Pos(StartTag, S);
  if ini <> 0 then
     Result := Copy(S, ini + Length(StartTag), Length(S)-ini+1)
  else
     Result := '';
end;

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

function DeleteTags(S: string): string;
var
   n, len, tag: Integer;
   c, p: char;
begin
   len    := Length(S);
   tag    := 0;
   p      := ' ';
   Result := '';
   for n := 1 to len do
   begin
      c := Copy(S,n,1);

      // Eliminamos los tabuladores
      if c = #9 then c := ' ';

      // Los espacios redundantes no se procesan
      if (c <> ' ') or (p <> ' ') then
      begin
         // Eliminamos los tags de HTML
         if tag = 0 then
         begin
            if c <> '<' then
            begin
               Result := Result + c;
               p := c;
            end
            else tag := 1;
         end
         else if c = '>' then tag := 0;
      end;
   end
   if p = ' ' then Result := Copy(Result, 1, Length(Result) - 1);
end;

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

// FUNCIONES DE ECARTELERA

//
// Funcin que suprime los acentos
//

function Sinacento(Conacento : String): String;

var
  Acento, Noacento : String;
  i : integer;
begin
  Acento := '';
  Noacento := 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuy';
 for i := 1  to Length(Acento) do
    Conacento := StringReplace(Conacento,copy(Acento, i, 1),copy(Noacento, i, 1));
  result := Conacento;
end;

//
// Funcin para convertir a ascii
//

function Caracter(str1: string) : string;
begin
  str1 := StringReplace(str1, 'á' , '');
  str1 := StringReplace(str1, 'é' , '');
  str1 := StringReplace(str1, 'í' , '');
  str1 := StringReplace(Str1, 'ó' , '');
  str1 := StringReplace(str1, 'ú' , '');
  str1 := StringReplace(str1, 'ñ' , '');
  str1 := StringReplace(str1, 'É' , '');
  str1 := StringReplace(str1, '?' , '');
  str1 := StringReplace(str1, 'Ó' , '');
  str1 := StringReplace(str1, 'Ú' , '');
  str1 := StringReplace(str1, 'Ñ' , '');
  str1 := StringReplace(str1, ''  ,  '');
  str1 := StringReplace(str1, 'â' , '');
  str1 := StringReplace(str1, 'ê' , '');
  str1 := StringReplace(str1, 'î' , '');
  str1 := StringReplace(str1, 'ô' , '');
  str1 := StringReplace(str1, 'û' , '');
  str1 := StringReplace(str1, 'è' , '');
  str1 := StringReplace(str1, 'ì' , '');
  str1 := StringReplace(str1, 'ò' , '');
  str1 := StringReplace(str1, 'ù' , '');
  str1 := StringReplace(str1, 'ä' , '');
  str1 := StringReplace(str1, 'ë' , '');
  str1 := StringReplace(str1, 'ï' , '');
  str1 := StringReplace(str1, 'ö' , '');
  str1 := StringReplace(str1, 'ü' , '');
  str1 := StringReplace(str1, 'Á' , '');
  str1 := StringReplace(str1, '' ,  '');
  str1 := StringReplace(str1, '' ,  '');
  str1 := StringReplace(str1 , '“' , '"'  );
  str1 := StringReplace(str1 , '”' , '"'  );
  str1 := StringReplace(str1 , '’' , '''' );
  str1 := StringReplace(str1 , '‘' , '''' );
  str1 := StringReplace(str1 , '&amp;'   , '&'  );
  str1 := StringReplace(str1 , '–' , '-'  );
  str1 := StringReplace(str1 , '&'  , '&'  );
  str1 := StringReplace(str1 , '″' , '"'  );
  str1 := StringReplace(str1 , '…' , '...');
  str1 := StringReplace(str1 , '&nbsp;' , '');
//Str1 := Sinacento (Str1);
  result := str1;

end;

//
// Funcion que borra signos y quita acentos
//

function PreparaTitulo(T: string): string;

var
  i: Integer;

begin
  HTMLDecode(result);
  result := AnsiLowerCase(T);
  result := StringReplace(result, chr(146), '');
  result := StringReplace(result, chr(39), '');
  result := StringReplace(result, '', '');
  result := StringReplace(result, '`', '');
  result := StringReplace(result, '"', '');
  result := StringReplace(result, '', '');
  result := StringReplace(result, '?', '');
  result := StringReplace(result, '', '');
  result := StringReplace(result, '!', '');
  result := StringReplace(result, '.', '');
  result := StringReplace(result, ':', '');
  result := StringReplace(result, ';', '');
  //result := StringReplace(result, '-', '');
  result := StringReplace(result, '/', '');
  result := StringReplace(result, '\', '');
  result := StringReplace(result, '_', '');
  result := StringReplace(result, '', 'a');
  result := StringReplace(result, '', 'a');
  result := StringReplace(result, '', 'a');
  result := StringReplace(result, '', 'e');
  result := StringReplace(result, '', 'i');
  result := StringReplace(result, '', 'o');
  result := StringReplace(result, '', 'u');
  result := StringReplace(result, '', 'a');
  result := StringReplace(result, '', 'e');
  result := StringReplace(result, '', 'i');
  result := StringReplace(result, '', 'o');
  result := StringReplace(result, '', 'u');
  result := StringReplace(result, '–', '-'  );
  result := StringReplace(result, '…', '...');
  result := Caracter (result);
end;


// PROCEDIMIENTOS DE ECARTELERA

//
// Crea la lista de las peliculas que contengan el titulo introducido
//

procedure PaginasEcartelera (Titulo: string);

var
  CPPage : TStringList;
  Line, PageWeb, TitleWeb, Encontrado, SwFin, TitleWebSin, Any, PageWebList : string;
  LineNr, ContPagina, i, j, PosAny : Integer;

begin
    Encontrado := '0';                                       // Si encontrado = '0' es que no se encuentra la pelicula
    PickTreeClear;
                                                // Se crea la URL para ver todas las peliculas que contengan el texto introducido
    //PageWeb := PostPage('http://www.ecartelera.com/buscar/', 'campo=' + UrlEncode(UTF8Encode(Titulo)) + '&B1=Buscar');

    PageWeb := PostPage('http://www.ecartelera.com/buscar/', 'ajcbus=' + URLEncode(UTF8Encode(Titulo)));

    CPPage := TStringList.Create;
    CPPage.Text := PageWeb;  //GetPage(PageWeb);
    CPPage.Text := Caracter (CPPage.Text);
    LineNr := 1;
    SwFin := '0';
    ContPagina := 1;

   Repeat                                                          // Para cada pelicula que contenga el texto mira a ver si coincide con el titulo
      If FindLine ('<div class="fl-item">' , CPPage , LineNr) > 0 then
        begin
            LineNr := FindLine ('<div class="fl-item">' , CPPage , LineNr);
            LineNr := FindLine('<img src="', CPPage, LineNr);
            Line  := CPPage.GetString(LineNr);

            PageWebList := 'http://www.ecartelera.com' + TextBetween (Line, '<img src="' , '" />');        //caratula mini
            PageWebList := StringReplace(PageWebList,'_mini','');                                        //caratula grande
            PageWebList := StringReplace(PageWebList,'_p','');

            LineNr := FindLine('<p class="tit">', CPPage, LineNr);
            Line := CPPage.GetString(LineNr);

            TitleWeb := TextBetween (Line, '/">' , '</a></p>');                // Extrae el titulo
            TitleWebSin := Sinacento(Titleweb);
            Titulo := UrlDecode (Titulo);
            TitleWebSin  := PreparaTitulo(TitleWebSin);

            //if Pos(AnsiLowerCase(Titulo), TitleWebSin) > 0 then                 // Verifica si el titulo de la web coincide con el texto
            //  begin
            LineNr := LineNr - 3;
            Line  := CPPage.GetString(LineNr);

                Any := TextBetween (Line, '="year"><span>' , '</span></p>');                 //conseguir el ao
                Any := ' (' + Any + ')';

            PickTreeAdd(TitleWeb + Any, PageWebList);                   // Aade el titulo, ao y direccion de la caratula
            Encontrado := '1';

        end

        else
        begin
            SwFin := '1';
        end

    until (SwFin = '1');

    if (Encontrado = '1') then
      begin

         PickTreeSort;

         if PickTreeExec(PageWebList) then                                    // Selecciona que nos interese y va a buscar la caratula
            begin
               //AnalyzeCoverPage (PageWeb);                      // Muestra los carteles seleccionados
               Getpicture (PageWebList);
            end
      end
   else
     ShowMessage('Titulo ' + Titulo + ' no encontrado en ecartelera');

end;

//
// CARATULA
//
//Accede a la web para extraer la caratula, Primero va a una web intermedia y despues accede a la caratula
//

(*procedure AnalyzeCoverPage(PageWeb: string);

var
   Page: TStringList;
   LineNr : Integer;
   Line : string;

begin
   Page := TStringList.Create;
   PageWeb := PageWeb + 'carteles/';                                 // Accede a la Web donde estn todas las caratulas
   Page.Text := getPage(PageWeb);
   RemovePicture;
   LineNr := 1;

    LineNr := FindLine('title="Cartel Espa', Page, LineNr);
    If FindLine ('title="Cartel Espa' , Page , LineNr) > 0 then
      begin
         Line  := Page.GetString(LineNr);
         PageWeb := TextBetween (Line, '<a href="' , '" title');       // Forma la Web donde esta la caratula

         Page.Free
         Page := TStringList.Create;                                         // Accede a la Web intermedia
         Page.Text := GetPage(PageWeb);
         LineNr := 1;
         LineNr := FindLine('class="fotoa"', Page, LineNr);
         If FindLine ('class="fotoa"' , Page , LineNr) > 0 then
            begin
               LineNr := LineNr + 1;
               Line := Page.GetString(LineNr);
               PageWeb := TextBetween (Line, 'img src="' , '" />');       // Forma la Web donde esta la caratula

               Getpicture (PageWeb);                              // Enva la caratula al programa.
            end
      end
   else                                           //si no hay caratula espaola asi que cogemos la primera que haya
      begin
         LineNr := FindLine('title="Cartel ', Page, LineNr);
         If FindLine ('title="Cartel ' , Page , LineNr) > 0 then
            begin
               Line  := Page.GetString(LineNr);
               PageWeb := TextBetween (Line, '<a href="' , '" title');       // Forma la Web donde esta la caratula
               Page.Free
               Page := TStringList.Create;                                         // Accede a la Web intermedia
               Page.Text := GetPage(PageWeb);
               LineNr := 1;
               LineNr := FindLine('class="fotoa"', Page, LineNr);
               If FindLine ('class="fotoa"' , Page , LineNr) > 0 then
                  begin
                     LineNr := LineNr + 1;
                     Line := Page.GetString(LineNr);
                     PageWeb := TextBetween (Line, 'img src="' , '" />');       // Forma la Web donde esta la caratula

                     Getpicture (PageWeb);                              // Enva la caratula al programa.
                  end
               else
                  ShowMessage('Titulo no encontrado en ecartelera')
            end
      end

end;
*)
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------

procedure AnalyzePage(Address: string);
var
   Page: TStringList;
   LineNr,LineNrax: Integer;
   Line: string;
   Count: Integer;
   MovieTitle, MovieAddress, MovieDirector, MovieYear, Title: string;
   YearAnt: string;
   PagSig:String;

begin
   Count := 0;
   Page  := TStringList.Create;
   Page.Text := GetPage(Address);
   PickTreeClear;
   // Get how much search results have been found

   // No encuentra las palabras "Resultados por ttulo"?, busco la
   // linea anterior, y cojo la siguiente linea, le quito los espacios
   // y me quedo con el numerode peliculas.

   LineNr := FindLine('<div class="sub-header-search">', Page, 0);
   if LineNr <> -1 then
   begin
      LineNr := LineNr + 1;
      Line   := Page.GetString(LineNr);
      Line   := DeleteTags(Line);
      Line   := ConvertAlphaNum(Line);
      Count  := StrToInt(Line, 0);
   end;
   // Add the results to the PickTree
   if Count = 0 then
      ShowMessage('No se ha encontrado ningn registro')
   else
   begin
      LineNr := 0;
      while true do
      begin
         LineNr := FindLine('<div class="mc-title"><a', Page, LineNr + 1);
         if LineNr = -1 then
         begin
            LineNr := FindLine('siguientes >>', Page, 0);
            if LineNr = -1 then
               break;
            Line      := Page.GetString(LineNr);

            PagSig:=  'https://www.filmaffinity.com/es/search.php' + TextBetween(Line, '<a href="search.php', '"><div class="' );
            PagSig:=StringReplace(PagSig,'&amp;','&');
            Page.Text := GetPage(PagSig);

            LineNr    := 0;
            continue;
         end;

         Line         := Page.GetString(LineNr);
         MovieAddress := TextBetween(Line, 'href="', '.html"') + '.html';
         MovieTitle   := TextBetween(Line, 'title="', '"');
         MovieTitle   := DeleteTags(MovieTitle);
         MovieTitle   := LineDecode(MovieTitle);
         
         //-------------------------------------
         Line:= Page.GetString(LineNr-9);
         MovieYear := TextBetween(Line, 'ye-w">', '</div>');
         if MovieYear = '' Then MovieYear := YearAnt
         else YearAnt := MovieYear;
          //------------------------------------
         LineNrax := FindLine('div class="mc-director">', Page, LineNr);
         if LineNrax <> -1 then
         begin
            Line:= Page.GetString(LineNrax+1);
            MovieDirector:= TextBetween(Line, 'title="', '"');
            MovieDirector:= DeleteTags(MovieDirector);
            MovieDirector:= LineDecode(MovieDirector);
         end;
         //------------------------------------
         if (Length(MovieAddress) <> 0) and (Length(MovieTitle) <> 0) then
            PickTreeAdd(MovieTitle+'     ('+MovieYear+')'+'        -<'+MovieDirector+'>-', BaseURL + MovieAddress);
      end;
      if ((Count = 1) and (GetOption('DontAsk') = 1)) then
         AnalyzeMoviePage(BaseURL + MovieAddress)
      else
      begin

//
//         PickTreeSort;      // Si se quiere clasificar por orden alfabetico hay que activar el PickTreeSort, quitar las 2
//                            // las 2 barras "//" que hay a la izquierda la instruccin PickTreeSort y ya esta.
//
         PickTreeExec(Address);
         AnalyzeMoviePage(Address);

         Title := GetField(fieldTranslatedTitle);
         if Title = '' then
           Title := GetField(fieldOriginalTitle);
           Title := PreparaTitulo(Title);
         if Input('Importar de CartelesPeliculas', 'Por favor, introduce el titulo:', Title) then
           PaginasEcartelera(Title);

      end
   end;
   Page.Free;
end;

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

procedure AnalyzeMoviePage(Address: string);
var
   Page: TStringList;
   LineNr, LineInc: Integer;
   Line: string;
   Item: string;
   Comments: string;
   CharStar: string;
   auxItem: string;
begin
   Comments := '';

   // URL
   SetField(fieldURL, Address);

   Page := TStringList.Create;
   Page.Text := GetPage(Address);

   // Translated Title
   LineNr := FindLine('<h1 id="main-title">', Page, 0);
   Line   := Page.GetString(LineNr+1);
   Item   := DeleteTags(TextBetween(Line, '<span itemprop="name">', '</span>'));
   Item   := LineDecode(Item);
   SetField(fieldTranslatedTitle, Item);

   // Picture
   LineNr := FindLine('href="https://pics.filmaffinity.com/', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr);
      Item := TextBetween(Line, '<a class="lightbox" href="', '" title="');
      if Length(Item) = 0 then
         Item := TextBetween(Line, '" src="', '"></a>');
      Item := StringReplace(Item,'https://','http://');
      GetPicture(Item);
   end;

   // Rating
   LineNr := FindLine('<div id="movie-rat-avg" itemprop="ratingValue"', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(Line);
      Item := LineDecode(Item);
      SetField(fieldRating, StringReplace(Item, ',', '.'));
   end;

   // Original Title
   LineNr := FindLine(UTF8Encode('<dt>Ttulo original</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);

      // Eliminar aka
      if Pos('>aka <',Line) <>0 then
      Line:= StringReplace(Line,'>aka <','');

      Item := DeleteTags(TextBetween(Line, '<dd>', '</dd>'));
      Item := LineDecode(Item);
      if Length(Item) = 0 then
      begin
        Line := Page.GetString(LineNr + 2);

      // Eliminar aka
      if Pos('>aka <',Line) <>0 then
      Line:= StringReplace(Line,'>aka <','');

        Item := DeleteTags(Line);
        Item := LineDecode(Item);
      end;
      SetField(fieldOriginalTitle, Item);
   end;

   // Year
   LineNr := FindLine(UTF8Encode('<dt>Ao</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(TextBetween(Line, '">', '</dd>'));
      Item := LineDecode(Item);
      SetField(fieldYear, Item);
   end;

   // Length
   LineNr := FindLine(UTF8Encode('<dt>Duracin</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(TextBetween(Line, 'duration">', 'min.</dd>'));
      Item := LineDecode(Item);
      SetField(fieldLength, Item);
   end;

   // Country
   LineNr := FindLine(UTF8Encode('<dt>Pas</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(TextBetween(Line, 'title="', '"></span'));
      Item := LineDecode(Item);
      SetField(fieldCountry, Item);
   end;

   // Director
   LineNr := FindLine(UTF8Encode('class="directors">'), Page, LineNr);
   if LineNr <> -1 then
   begin
      LineNr := LineNr + 3;
      Line := Page.GetString(LineNr);
      Item := TextBetween(Line,'"name">','</span>');
      while Pos (',', Line) <> 0 do
      begin
            Item := Item + ', ';
            LineNr := LineNr + 3;
            Line := Page.GetString(LineNr);
            auxItem := TextBetween(Line,'"name">','</span>');
            Item := Item + auxItem;
      end;
      Item := LineDecode(Item);
      SetField(fieldDirector, Item);
   end;

   // Script writer
   LineNr := FindLine(UTF8Encode('<dt>Guion</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := TextBetween(Line, '<span>', '</span>');
      Item := LineDecode(Item);
      if ((CheckVersion(4,2,0) = true) and (GetOption('Force350') = 0)) then SetField(fieldWriter, Item)
      else   Comments := Comments + 'Guin: ' + Item + #13#10 + #13#10;
   end;

   // Composer
   LineNr := FindLine(UTF8Encode('Msica'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := TextBetween(Line, '<span>', '</span>');
      Item := LineDecode(Item);
      if ((CheckVersion(4,2,0) = true) and (GetOption('Force350') = 0)) then SetField(fieldComposer, Item)
      else Comments := Comments + 'Msica: ' + Item + #13#10 + #13#10;
   end;

   // Photography
   LineNr := FindLine(UTF8Encode('<dt>Fotografa</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := TextBetween(Line, '<span>', '</span>');
      Item := LineDecode(Item);
      Comments := Comments + 'Fotograf&iacute;a: ' + Item + #13#10 + #13#10;
   end;

   // Actors
   LineNr := FindLine(UTF8Encode('<dt>Reparto</dt>'), Page, LineNr);
   if LineNr <> -1  then
   begin
       Item := '';
      while true do
      begin
         LineNr := FindLine('itemprop="name">', Page, LineNr);

         if LineNr = -1 then break;
         begin
            if Item <> '' Then Item := Item + ', ' ;
            Line := Page.GetString(LineNr);
            Item := Item + TextBetween(Line, 'name">', '</span');
            LineNr:=LineNr+1
         end
      end;
      if GetOption('ActorsInALine') = 0 then
        Item := StringReplace(Item, ', ', #13#10);
      SetField(fieldActors, LineDecode(Item));
   end;

   // Productor
   LineNr := FindLine(UTF8Encode('<dt>Productora</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(TextBetween(Line, '<dd>', '</dd>'));
      Item := LineDecode(Item);
      SetField(fieldProducer, Item);
   end;

   // Category
   LineNr := FindLine(UTF8Encode('<dt>Gnero</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 2);
      Item := DeleteTags(Line);
      Item := LineDecode(Item);
      Item := StringReplace(Item, ' | ', ', ');
      Item := StringReplace(Item, '. ', ', ');
      SetField(fieldCategory, Item);
   end;

   // Official Webpage
   LineNr := FindLine(UTF8Encode('<dt>Web oficial</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(TextBetween(Line, ' href="', '">'));
      Item := LineDecode(Item);
      Comments := Comments + 'Web oficial: ' + Item + #13#10 + #13#10;
   end;

   // Synopsis
   LineNr := FindLine(UTF8Encode('<dt>Sinopsis</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(Line);
      Item := LineDecode(Item);
      SetField(fieldDescription, Item);
   end;

   // Awards
   LineNr := FindLine(UTF8Encode('<dt>Premios</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      LineNr   := LineNr + 1;
      Line     := Page.GetString(LineNr);
      Comments := Comments + 'Premios: ' + #13#10;
      while Pos ('</dd>', Line) = 0 do
      begin
         if Pos ('<span id="show-all-awards">', Line) = 0 then
         begin
            Item := DeleteTags(Line);
            Item := LineDecode(Item);
            if (Length(Item) <> 0) then
            begin
               Comments := Comments + '  - ' + Item + #13#10;
            end;
         end;
         LineNr := LineNr + 1;
         Line   := Page.GetString(LineNr);
      end;
      Comments := Comments + #13#10;
   end;

   // Critic
   LineNr := FindLine(UTF8Encode('<dt>Crticas</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      // El unico objeto de esta linea es poder presentar en el foro el listado
      // del script sin que se produzca la conversin del caracter estrella

      CharStar       := '&'+'#9733;' ;
      Comments := Comments + 'Crticas: ' + #13#10 + #13#10;
      LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1);
      while LineNr <> -1 do
      begin
         LineNr := LineNr + 1;
         Line := Page.GetString(LineNr);
         if Pos (UTF8Encode('<a title="Leer crtica completa" href='), Line) <> 0 then
         begin
            LineNr := LineNr + 1;
            Line := Page.GetString(LineNr);
         end;
         Line:= StringReplace(Line, CharStar, '*');
         Item := DeleteTags(Line);
         Item := LineDecode(Item);
         if (Length(Item) <> 0) then
         begin
            Comments := Comments + Item + #13#10;
            LineNr := FindLine('div class="pro-crit-med"', Page, LineNr + 1);
            Line := Page.GetString(LineNr);
            Item := DeleteTags(TextBetween(Line, ' itemprop="author">', '<i'));
            Item := LineDecode(Item);
            if (Length(Item) <> 0) then
            begin
               Comments := Comments + Item + #13#10;
            end;
            Comments := Comments + '________________________________________' + #13#10 + #13#10;
         end;
         LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1)
      end;
   end;

   HTMLDecode(Comments);
   SetField(fieldComments, Comments);
   if GetOption('DontWantExtras') = 0 then
      AnalyzeExtras(Page,Address);
end;

//------------------------------------------------------------------------------------
// Extras
procedure AnalyzeExtras(Page: TStringList; Address: string);
var
   LineNr,NumImages,NumTrailers, i,CountC: Integer;
   Line: string;
   TrailersAddress: string;
   ImagesAddress: string;
   ImageTitle: string;
   ExtraIndex: Integer;
   ExtraString: string;
   ExtraURL: string;
   ExtraTagBase: string;
   LimitImages,LimitTrailers,LimitCritics: Integer;

begin
   ExtraTagBase :=  'FA'+TextBetween(Address, '/film', '.html');
   ClearExtrasOfScript;
   LimitImages := StrtoInt (GetParam('ExtraImagesLimit'),0);
   if LimitImages < 0 then LimitImages := 0;
   LimitTrailers := StrtoInt (GetParam('ExtraTrailersLimit'),0);
   if LimitTrailers < 0 then LimitTrailers := 0;
   LimitCritics := StrtoInt (GetParam('ExtraCriticsLimit'),0);
   if LimitCritics < 0 then LimitCritics := 0;



// Enlaces a Criticas
   LineNr := FindLine(UTF8Encode('<dt>Crticas</dt>'), Page, LineNr);
   CountC := 0;
   if LineNr <> -1 then
   begin
      LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1);
      while LineNr <> -1 do
      begin
         LineNr := LineNr + 1;
         Line := Page.GetString(LineNr);
         if Pos (UTF8Encode('<a title="Leer crtica completa" href='), Line) <> 0 then
         begin
            Line := Page.GetString(LineNr);
            ExtraURL:= TextBetween(Line, 'href="', '" ');
            if (Length(ExtraURL))>0 then
            begin
                 ExtraIndex := AddExtra();
                 SetExtraField(ExtraIndex, extraFieldURL, ExtraURL);
                 SetExtraField(ExtraIndex, extraFieldCategory, 'Crticas');
                 SetExtraField(ExtraIndex, extraFieldTitle, TextBetween(ExtraURL, '//', '/'));
                 SetExtraField(ExtraIndex, extraFieldTag, ExtraTagBase+'C'+IntToStr(ExtraIndex));
            end;
            LineNr := LineNr + 1;
            Line := Page.GetString(LineNr);
         end;
         LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1);
         CountC := CountC+1;
         if CountC = LimitCritics then
             break;
      end;
   end;

   // Imgenes  y Trailers
   NumTrailers := 0;
   NumImages := 0;

   LineNr := FindLine(UTF8Encode('>Trilers&nbsp;<em>'), Page, 0);
   if LineNr <> -1 then
   begin
       Line := Page.GetString(LineNr);
       NumTrailers := StrToInt(TextBetween(Line, '<em>[', ']</em>'),0);
       TrailersAddress := TextBetween(Line, 'href="', '"');
   end

   LineNr := FindLine(UTF8Encode('>Imgenes&nbsp;<em>'), Page, LineNr+1);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr);
      NumImages := StrToInt(TextBetween(Line, '<em>[', ']</em>'),0);
      ImagesAddress := TextBetween(Line, 'href="', '"');
   end

   // Imgenes
   If NumImages > LimitImages then NumImages := LimitImages;
   if NumImages >0 then
   begin
      Page.Text := GetPage(ImagesAddress);
      LineNr := FindLine(UTF8Encode('<span>Posters</span>'), Page,0);
      if LineNr = -1 then
         LineNr := FindLine(UTF8Encode('<span>Movie Posters</span>'), Page,0);
      if LineNr =-1 then
         LineNr := FindLine(UTF8Encode('<span>Fotogramas</span>'), Page,0);
      if LineNr =-1 then
         LineNr := FindLine(UTF8Encode('span>Otros</span>'), Page,0);
      if LineNr <> -1 then
      begin
         Line := Page.GetString(LineNr);
         for i := 1 to NumImages do
         begin
             LineNr := FindLine('<a href="', Page, LineNr + 1);
             if LineNr <> -1 then
             begin
                Line := Page.GetString(LineNr);
                ExtraString := TextBetween(Line, 'href="', '"');
                ImageTitle := TextBetween(Line, 'Tipo: </strong>', '</div>');
                ExtraIndex := AddExtra();
                if GetOption('GroupImages') = 1 then
                begin
                   SetExtraField(ExtraIndex, extraFieldCategory, 'Imgenes');
                   SetExtraField(ExtraIndex, extraFieldTitle, ImageTitle);
                end
                else
                   begin
                      SetExtraField(ExtraIndex, extraFieldCategory, ImageTitle);
                      SetExtraField(ExtraIndex, extraFieldTitle, 'Imgenes')
                end;


                SetExtraField(ExtraIndex, extraFieldTag, ExtraTagBase+'I'+IntToStr(ExtraIndex));
                GetExtraPicture(ExtraIndex, ExtraString);
             end;
         end;
      end;
   end;

   If NumTrailers > LimitTrailers then NumTrailers := LimitTrailers;
   if NumTrailers > 0 then
   begin
      Page.Text := GetPage(TrailersAddress);
      LineNr := FindLine(UTF8Encode('>Mostrar video<'),Page,0);
      if LineNr <> -1 then
      begin
         Line := Page.GetString(LineNr);
         for i:= 1 to NumTrailers do
         begin
            LineNr := FindLine('src="', Page,LineNr + 1);
            if LineNr <> -1 then
            begin
               Line := Page.GetString(LineNr);
               ExtraString := TextBetween(Line, 'src="', '"');
               ExtraURL := TextAfter(ExtraString, '//');
               ExtraIndex := AddExtra();
               SetExtraField(ExtraIndex, extraFieldURL, ExtraURL);
               SetExtraField(ExtraIndex, extraFieldCategory, 'Trailers');
               SetExtraField(ExtraIndex, extraFieldTitle, TextBetween(ExtraString, '//', '/'))
               SetExtraField(ExtraIndex, extraFieldTag, ExtraTagBase+'T'+IntToStr(ExtraIndex));
               LineNr := FindLine(UTF8Encode('Mostrar video'), Page,LineNr + 1);
            end;
         end;
      end;
  end;
end;


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

begin
   if (CheckVersion(4,2,1) = false) then
   begin
      ShowMessage('Se requiere Ant Movie Catalog versin 4.2.1 o superior');
      exit;
   end;

   if (CheckVersion(4,2,0) = false) then
      SetOption('DontWantExtras', 1);

   MovieName := GetField(fieldOriginalTitle);
   if Length(MovieName) = 0 then
      MovieName := GetField(fieldTranslatedTitle);

   if GetOption('DontAsk') = 0 then
      Input('FilmAffinity', 'Pelicula:', MovieName);

   MovieName := UTF8Encode(MovieName);
   if Pos('filmaffinity.com', MovieName) > 0 then
      AnalyzeMoviePage(MovieName)
   else
   begin
      if GetOption('OrdenPorAnyo') = 0 then
        AnalyzePage(BaseURL +'/es/search.php?stext=' + UrlEncode(MovieName) + '&stype=Title')
      else
        AnalyzePage(BaseURL +'/es/search.php?stext=' + UrlEncode(MovieName) + '&orderby=year&stype=Title');
   end;
end.


Last edited by carlosmg2 on 2017-06-06 16:05:59; edited 13 times in total
buitre225
PostPosted: 2015-09-13 13:05:28    Post subject: Reply with quote
View user's profile Send private message Me ha servido de mucho,
Gracias
carlosmg2
PostPosted: 2015-11-10 23:10:51    Post subject: Reply with quote
View user's profile Send private message Visit poster's website updated script to fix a little issue
carlosmg2
PostPosted: 2016-04-26 09:51:19    Post subject: Reply with quote
View user's profile Send private message Visit poster's website updated script to fix filmaffinity 2.88
carlosmg2
PostPosted: 2016-05-25 15:05:03    Post subject: Reply with quote
View user's profile Send private message Visit poster's website updated to temporarily fix filmaffinity 2.88 year issue
carlosmg2
PostPosted: 2016-05-27 10:12:26    Post subject: Reply with quote
View user's profile Send private message Visit poster's website updated code with filmaffinity 2.90 fixes
carlosmg2
PostPosted: 2016-06-10 12:07:37    Post subject: Reply with quote
View user's profile Send private message Visit poster's website updated code with filmaffinity 2.93 fixes
carlosmg2
PostPosted: 2017-02-20 16:29:16    Post subject: Reply with quote
View user's profile Send private message Visit poster's website updated code in first post with filmaffinity 2.95 fixes
magol
PostPosted: 2017-03-29 19:57:03    Post subject: Reply with quote
View user's profile Send private message Muchas gracias
carlosmg2
PostPosted: 2017-06-06 16:06:29    Post subject: Reply with quote
View user's profile Send private message Visit poster's website updated code in first post with Filmaffinity 3.00 fixes
magol
PostPosted: 2017-06-13 20:11:10    Post subject: Reply with quote
View user's profile Send private message Muchas gracias, me gustan los carteles en espaol.
Display posts from previous:   
View previous topic :: View next topic  
Post new topic   Reply to topic    www.antp.be Forum Index -> Ant Movie Catalog > Scripts All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
Template made by antp