FilmAffinity (ES): New version of the script

If you made a script you can offer it to the others here, or ask help to improve it. You can also report here bugs & problems with existing scripts.
jacqlittle
Posts: 26
Joined: 2013-04-11 07:13:02

Post by jacqlittle »

Muchas gracias por todo aviloria, lo único que de momento en el ftp o si actualizamos con el script que hay para ello, actualiza una versión anterior. A ver si en el servidor se puede actualizar el script...

Muchas gracias. ;)
aviloria
Posts: 24
Joined: 2006-11-08 11:52:28

Post by aviloria »

@jacqlittle: Con respecto al servidor FTP, eso no depende de mi...es antp quien tiene que actualizar el script allí para que pueda ser descargado/actualizado directamente.

En cuanto pasen unos de días y veamos que no cambian más cosas en la página de FilmAffinity, se le puede mandar un PM para que lo actualice.
jacqlittle
Posts: 26
Joined: 2013-04-11 07:13:02

Post by jacqlittle »

Ok, como la primera vez que hace unos días se actualizó directamente por eso lo comentaba.

Gracias y saludos.
antp
Site Admin
Posts: 9629
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Thanks :) I updated it on the server
granguash
Posts: 4
Joined: 2011-11-24 23:37:29

Post by granguash »

Buenas tardes!!

Perdonadme, porque no se si es culpa mía (porque esté haciendo algo mal) o de los cambios en la página, pero ahora vuelve a no dejarme seleccionar la disposición del reparto en columnas, y por otro lado, no aparece la categoría (o género) de las películas.

He probado con "Bloody Sunday" y "Lo Imposible".

Lo que digo siempre, perdonad si es culpa mía...
aviloria
Posts: 24
Joined: 2006-11-08 11:52:28

Post by aviloria »

@granguash: Acabo de probar y no he encontrado ningún problema, ni con esas películas ni con otras.

Asegúrate de que tienes la versión más reciente del script (v2.64 en el momento de escribir esta entrada).

Con respecto a las opciones del script, asegúrate de tener seleccionado el script "FilmAffinity (ES)" en la lista de scripts que aparece al pulsar F6 (o haz Click derecho sobre la película->Obtener información->Desde internet usando un script).
Echa un vistazo a las otras entradas que he escrito en este post para más información.
jtorresvargas
Posts: 4
Joined: 2013-04-23 14:22:58

script FILMAFFINITY

Post by jtorresvargas »

Sabeis si a fecha de 23 de Abril el script de filmaffinity (ES) funciona correctamente? . Hasta ahora tenía la versión 2.64 pero no hace busqueda de películas.
juariomares
Posts: 1
Joined: 2013-04-23 17:07:11

Post by juariomares »

Hola, perdonad por mi ignorancia pero es que soy novato en estos temas. Para que funcione el script vale solo con pegarlo en el block de notas sustituyendo todo tal como está en el primer post? Es que yo lo hago y al abrir el centro de scripts del AMC me sale el script en gris y no me funciona. Tampoco me sale nada de la versión que decís que tiene que salir ni nada
buitre225
Posts: 6
Joined: 2013-04-10 16:35:18
Contact:

Post by buitre225 »

A mi tampoco me encuentra ninguna película, ¿Sabeis si han cambiado algo?
masterchipo
Posts: 99
Joined: 2010-02-22 23:15:05

Post by masterchipo »

Hola, nuevamente ha dejado de funcionar desde el día de ayer el script. Si haces click desde "buscar por internet Filmaffinity" te aparece la película. Sin embargo dándole F6 en Filmaffinity dice: película no encontrada.
javienigma
Posts: 21
Joined: 2011-11-08 12:06:48

Post by javienigma »

A mi tampoco me funciona... No me encuentra ninguna película. Esperemos que se solucione pronto, saludos y gracias!
juliojs
Posts: 10
Joined: 2013-04-25 19:08:37

Post by juliojs »

Buenas,

He visto que el script no funcionaba con los nuevos cambios en la web y me he tomado la libertad de editarlo.

Tan sólo he modificado un par de líneas y parece que ya funciona correctamente.

Concretamente el código que fallaba era:

Code: Select all

LineNr := FindLine('<a class="mc-title" href="', Page, LineNr + 1); 
->
LineNr := FindLine('<div class="mc-title"><a href="', Page, LineNr + 1); 
MovieAddress := TextBetween(Line, '<a class="mc-title" href="', '">');
->
MovieAddress := TextBetween(Line, '<div class="mc-title"><a href="', '.html">') + '.html';
Os dejo el script completo. Un saludo!

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
Title=FilmAffinity (ES)
Description=Movie importation script for FilmAffinity Spain
Site=http://www.filmaffinity.com
Language=ES
Version=2.64
Requires=3.5.0
Comments=Updated to 2013/04/16 version of the web-page. Added an option to choose Actor list format (ActorsInALine).
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

[Parameters]

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

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

function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
var
   i: Integer;
begin
   Result := -1;
   if StartAt < 0 then StartAt := 0;
   for i := StartAt to List.Count-1 do
      if Pos(Pattern, List.GetString(i)) <> 0 then
      begin
         Result := i;
         Break;
      end;
end;

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

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

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

function DeleteTags(S: string): string;
var
   n, len, tag: Integer;
   c, p: char;
begin
   HTMLDecode(S);
   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: Integer;
   Line: string;
   Count: Integer;
   MovieTitle, MovieAddress: string;

begin
   Count := 0;
   Page  := TStringList.Create;
   Page.Text := GetPage(Address);
   PickTreeClear;

   // Get how much search results have been found
   LineNr := FindLine('</strong> resultados.</div>', Page, 0);
   if LineNr <> -1 then
   begin
      Line  := Page.GetString(LineNr);
      Count := StrToInt(TextBetween(Line, '<div style="text-align:right;"><strong>', '</strong> resultados.</div>'), 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 href="', Page, LineNr + 1);
         if LineNr = -1 then
         begin
            LineNr := FindLine('<b>siguientes >></b>', Page, 0);
            if LineNr = -1 then
               break;
            Line      := Page.GetString(LineNr);
            Page.Text := GetPage(TextBetween(Line, '<a href="', '">'));
            LineNr    := 0;
            continue;
         end;

         Line         := Page.GetString(LineNr);
         MovieAddress := TextBetween(Line, '<div class="mc-title"><a href="', '.html">') + '.html';
         
         MovieTitle   := DeleteTags(TextBetween(Line, '.html">', '<img src="'));

         if (Length(MovieAddress) <> 0) and (Length(MovieTitle) <> 0) then
            PickTreeAdd(MovieTitle, BaseURL + MovieAddress);
      end;

      if ((Count = 1) and (GetOption('DontAsk') = 1)) or PickTreeExec(Address) then
         AnalyzeMoviePage(Address);
   end;
   Page.Free;
end;

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

procedure AnalyzeMoviePage(Address: string);
var
   Page: TStringList;
   LineNr, LineInc: Integer;
   Line: string;
   Item: string;
   Comments: 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);
   Item := DeleteTags(TextBetween(Line, '<h1 id="main-title">', '</h1>'));
   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">', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(Line);
      SetField(fieldRating, StringReplace(Item, ',', '.'));
   end;

   // Original Title
   LineNr := FindLine('<dt>Título original</dt>', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(TextBetween(Line, '<dd>', '</dd>'));
      SetField(fieldOriginalTitle, Item);
   end;

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

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

   // Country
   LineNr := FindLine('<dt>País</dt>', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(TextBetween(Line, 'title="', '" border'));
      SetField(fieldCountry, Item);
   end;
 
   // Director
   LineNr := FindLine('<dt>Director</dt>', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(TextBetween(Line, '<dd>', '</dd>'));
      SetField(fieldDirector, Item);
   end;

   // Script writer
   LineNr := FindLine('<dt>Guión</dt>', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := TextBetween(Line, '<dd>', '</dd>');
      Comments := Comments + 'Guión: ' + Item + #13#10 + #13#10;
   end;

   // Composer
   LineNr := FindLine('<dt>Música</dt>', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := TextBetween(Line, '<dd>', '</dd>');
      Comments := Comments + 'Música: ' + Item + #13#10 + #13#10;
   end;

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

   // Actors
   LineNr := FindLine('<dt>Reparto</dt>', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 1);
      Item := DeleteTags(TextBetween(Line, '<dd>', '</dd>'));
      if GetOption('ActorsInALine') = 0 then Item := StringReplace(Item, ', ', #13#10);
      SetField(fieldActors, Item);
   end;

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

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

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

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

   // Awards
   LineNr := FindLine('<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);
            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('<dt>Críticas</dt>', Page, LineNr);
   if LineNr <> -1 then
   begin
      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);
         LineInc := 2;
         if Pos ('<a title="Leer crítica completa" href=', Line) <> 0 then
         begin
           LineNr  := LineNr + 1;
           Line    := Page.GetString(LineNr);
           LineInc := 3;
         end;
         Item := DeleteTags(Line);
         if (Length(Item) <> 0) then
         begin
            Comments := Comments + Item + #13#10;
            LineNr := LineNr + LineInc;
            Line := Page.GetString(LineNr);
            Item := DeleteTags(Line);
            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);
end;

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

begin
   if (CheckVersion(3,5,0) = false) then
   begin
      ShowMessage('Se requiere Ant Movie Catalog versión 3.5 o superior');
      exit;
   end;

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

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

   if Pos('filmaffinity.com', MovieName) > 0 then
      AnalyzeMoviePage(MovieName)
   else
      AnalyzePage(BaseURL +'/es/search.php?stext=' + UrlEncode(MovieName) + '&stype=Title');
end. 
javienigma
Posts: 21
Joined: 2011-11-08 12:06:48

Post by javienigma »

Perfecto! funcionando, mil gracias!
Sólo por curiosidad, cómo sabéis que líneas son las que fallan? oye, podrías please echar un ojo al script Index dvd? es muy bueno pero últimamente y desde hace un tiempo no funciona... gracias!
juliojs
Posts: 10
Joined: 2013-04-25 19:08:37

Post by juliojs »

javienigma wrote:Perfecto! funcionando, mil gracias!
Sólo por curiosidad, cómo sabéis que líneas son las que fallan? oye, podrías please echar un ojo al script Index dvd? es muy bueno pero últimamente y desde hace un tiempo no funciona... gracias!
Con un poco de nociones de php, html y usando el editor que viene con AMC es bastante sencillo ver dónde falla.
La verdad es que no sabía que AMC era tan modular, lo había instalado un par de veces y como no me iban algunos scripts no me molestaba en mirar más... XD

Le echo un ojo al script de index-dvd y te comento... ;)
Sabes si tiene hilo propio? Para no andar ensuciando éste.. XD

Un saludo!
javienigma
Posts: 21
Joined: 2011-11-08 12:06:48

Post by javienigma »

Mil gracias!
No sé si tiene hilo, con el buscador no sale nada, así que he creado este post: viewtopic.php?t=5387&highlight=index
Gracias de verdad, yo para esto soy un inepto. Saludos!!!
juliojs
Posts: 10
Joined: 2013-04-25 19:08:37

Post by juliojs »

javienigma wrote:Mil gracias!
No sé si tiene hilo, con el buscador no sale nada, así que he creado este post: viewtopic.php?t=5387&highlight=index
Gracias de verdad, yo para esto soy un inepto. Saludos!!!
Ok, gracias!

Creo que ya va el script, seguimos en su hilo... ;)
aviloria
Posts: 24
Joined: 2006-11-08 11:52:28

Post by aviloria »

Disculpad el retraso en dar señales de vida... ando un tanto liado estos días y ni me había dado cuenta de los cambios en la web.

@juliojs: Muchas gracias por actualizar el script. He subido tus cambios al post inicial, he incrementado el número de versión y te he añadido como autor/colaborador. Bienvenido!
buitre225
Posts: 6
Joined: 2013-04-10 16:35:18
Contact:

Post by buitre225 »

Gracias por arreglarlo tan rápido sois unos cracks
javienigma
Posts: 21
Joined: 2011-11-08 12:06:48

Post by javienigma »

sí, sois unos genios! gracias por vuestra ayuda! ya me estaba volviendo loco con esto de no poder actualizar mi colección, jejeje. Saludos!
juliojs
Posts: 10
Joined: 2013-04-25 19:08:37

Post by juliojs »

aviloria wrote:Disculpad el retraso en dar señales de vida... ando un tanto liado estos días y ni me había dado cuenta de los cambios en la web.

@juliojs: Muchas gracias por actualizar el script. He subido tus cambios al post inicial, he incrementado el número de versión y te he añadido como autor/colaborador. Bienvenido!
javienigma wrote:sí, sois unos genios! gracias por vuestra ayuda! ya me estaba volviendo loco con esto de no poder actualizar mi colección, jejeje. Saludos!
buitre225 wrote:Gracias por arreglarlo tan rápido sois unos cracks

Gracias a vosotros!!


;)
Post Reply