FilmAffinity 2.95

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
Arturo
Posts: 52
Joined: 2013-04-11 16:28:52

FilmAffinity 2.95

Post by Arturo »

Nueva corrección 2.95 Febrero 2017. Ademas del problema del 'Guión' tambien se han cambiado las direcciones a las páginas de extras, Por lo que no capturaba ni Trailers ni Imagenes

Corregido por ahora. Corregido algun defectillo mas. Versión 2.93
He añadido la opción de ordenar por año el arbol de selección.
En Opciones de script hay una opción mas .OrdenPorAnyo:
- Si es igual a 0 en la lista 'Selección de película' salen las peliculas ordenadas por relevancia
- Si es igual a 1 salen ordenadas por año. Esto es equivalente a pulsar 'Ver resultados por año' en la página web

Code: Select all

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

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
Title=FilmAffinity (ES)
Description=Movie importation script for FilmAffinity Spain
Site=http://www.filmaffinity.com
Language=ES
Version=2.95
Requires=4.1.2
Comments=adaptation for compatibility with 4.2 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=Método rápido: No te pregunta el titulo al principio, ni te pide confirmar si sólo hay un resultado|0=Método lento: Confirmas la información 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=0|1|1=No se recopilan extras|0=Se recopilan extras: enlaces, imágenes
GroupImages=1|1|1=Agrupa todas las imagenes en una misnma categoría 'Imagenes'|0=Divide las imágenes por categorias
OrdenPorAnyo=0|0|1=Ordena lista de busqueda por año|0=Ordena lista de busqueda por relevancia

[Parameters]
ExtraCriticsLimit=99|99|Límite de criticas en Extras
ExtraImagesLimit=99|99|Límite de imágenes en Extras
ExtraTrailersLimit=99|99|Límite de Trailers en Extras

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

program FilmAffinity;
const
   BaseURL = 'http://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;

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

procedure AnalyzePage(Address: string);
var
   Page: TStringList;
   LineNr,LineNrax: Integer;
   Line: string;
   Count: Integer;
   MovieTitle, MovieAddress, MovieDirector, MovieYear: 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 título"¿?, 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 ningún 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:=  'http://www.filmaffinity.com/es/search.php' + TextBetween(Line, '<a href="search.php', '"><div class="' );
            PagSig:=StringReplace(PagSig,'&','&');
            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 instrucción PickTreeSort y ya esta.
//
         PickTreeExec(Address);
         AnalyzeMoviePage(Address)
      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('http://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>');
      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>Título 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>Año</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>Duración</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>País</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 + 'Guión: ' + Item + #13#10 + #13#10;
   end;

   // Composer
   LineNr := FindLine(UTF8Encode('Música'), 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 + 'Música: ' + Item + #13#10 + #13#10;
   end;

   // Photography
   LineNr := FindLine(UTF8Encode('<dt>Fotografía</dt>'), Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := TextBetween(Line, '<span>', '</span>');
      Item := LineDecode(Item);
      Comments := Comments + 'Fotografí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>Género</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>Críticas</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 conversión del caracter estrella

      CharStar       := '&'+'#9733;' ;
      Comments := Comments + 'Críticas: ' + #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 crítica 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>Críticas</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 crítica 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, 'Críticas');
                 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;

   // Imágenes  y Trailers
   NumTrailers := 0;
   NumImages := 0;

   LineNr := FindLine(UTF8Encode('>Tráilers <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('>Imágenes <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

   // Imágenes
   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, 'Imágenes');
                   SetExtraField(ExtraIndex, extraFieldTitle, ImageTitle);
                end
                else
                   begin
                      SetExtraField(ExtraIndex, extraFieldCategory, ImageTitle);
                      SetExtraField(ExtraIndex, extraFieldTitle, 'Imágenes')
                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,1,2) = false) then
   begin
      ShowMessage('Se requiere Ant Movie Catalog versión 4.1.2 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.
Probadlo a ver si funciona
Last edited by Arturo on 2017-02-14 19:51:00, edited 3 times in total.
al0203
Posts: 72
Joined: 2013-02-27 05:24:17

Re: FilmAffinity 2.92

Post by al0203 »

A mi me funciona todo bien, menos la opción de ordenar por año. No me aparece en Opciones de script. Gracias.
masterchipo
Posts: 99
Joined: 2010-02-22 23:15:05

Post by masterchipo »

Tiene algunas fallas, como el año, calificación y algunas críticas.
Arturo
Posts: 52
Joined: 2013-04-11 16:28:52

Post by Arturo »

masterchipo wrote:Tiene algunas fallas, como el año, calificación y algunas críticas.
¿Algún ejemplo donde suceda esto?
vinuela2
Posts: 7
Joined: 2016-06-11 14:06:56

Post by vinuela2 »

Hola gracias por compartir.

En este ejemplo ==> http://www.filmaffinity.com/es/film774703.html

No funciona: Titulo original, Año, Writer, Pais, Categoria, Comentarios

Saludos
Arturo
Posts: 52
Joined: 2013-04-11 16:28:52

Post by Arturo »

vinuela2 wrote:Hola gracias por compartir.

En este ejemplo ==> http://www.filmaffinity.com/es/film774703.html

No funciona: Titulo original, Año, Writer, Pais, Categoria, Comentarios

Saludos
He probado este ejemplo y funciona correctamente. Asegurate de que tienes la versión correcta del script. La última está en el primer post de este hilo.
Radagast
Posts: 15
Joined: 2016-04-22 16:07:15

Post by Radagast »

Todo perfecto por mi parte.
Muchas gracias Arturo.
Johnnygan
Posts: 2
Joined: 2017-02-04 08:05:24

Post by Johnnygan »

Hola.

Desde ayer, no guarda el campo writer, se puede solucionar?

Gracias
JuanRa_007
Posts: 21
Joined: 2014-06-08 09:08:31

"Guión" por "Guion"

Post by JuanRa_007 »

Solo tienes que cambiar en el scripts la línea donde busca el literal del "writer" (Guion), de:

Code: Select all

LineNr := FindLine(UTF8Encode('<dt>Guión</dt>'), Page, LineNr);
a:

Code: Select all

LineNr := FindLine(UTF8Encode('<dt>Guion</dt>'), Page, LineNr);
Es decir, cambiar el carácter "ó" por "o" y ya te funcionará.
----------------------------------------------------------------------
Only change "Guión" to "Guion" in line:

Code: Select all

LineNr := FindLine(UTF8Encode('<dt>Guión</dt>'), Page, LineNr);
antp
Site Admin
Posts: 9629
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Thanks, updated as version 2.94
Johnnygan
Posts: 2
Joined: 2017-02-04 08:05:24

Post by Johnnygan »

Muchas gracias
Arturo
Posts: 52
Joined: 2013-04-11 16:28:52

Post by Arturo »

Se actualiza a la version 2.95 en el primer post corrigiendo problemas en la captura de Extras.
antp
Site Admin
Posts: 9629
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Thanks
magol
Posts: 26
Joined: 2010-03-05 11:28:38

Post by magol »

Muchas gracias
Post Reply