Page 2 of 2

Posted: 2011-11-24 14:19:04
by antp
I typed "filmaffinity.es", I didn't see it was redirecting me to the .com site instead of the Spanish version.

Problem only occurs when the search gives 1 result (the movies I tested were each time giving multiple results for the title...)

Search for the line containing « Page.GetString(LineNr + 7); » and replace 7 by 11.
Or get the version 2.55 of the script which I just uploaded ;)

Posted: 2011-11-24 23:39:49
by granguash
Perdonad, pero como mi inglés es bastante limitado, mejor lo pongo todo en castellano.
A mi me va todo bien, pero no me aparece la fecha de las películas con la versión 2.55
Saludos!

Posted: 2011-11-25 03:21:11
by masterchipo
granguash wrote:Perdonad, pero como mi inglés es bastante limitado, mejor lo pongo todo en castellano.
A mi me va todo bien, pero no me aparece la fecha de las películas con la versión 2.55
Saludos!
A mí también y si no revisando otras, o no te da el país, o no te da el año.
Pero algo vamos avanzando

Posted: 2011-11-25 14:23:24
by ChessPlayer
antp wrote:Sorry but I do not understand Spanish, and the result of Google Translation is not really good :D
Sorry, I will try to explain it in english.
Peut-être vous préfèrez le français?
antp wrote:@ChessPlayer > you mention "Sophie Scholl: los últimos días" -> that does not give any result on the FilmAffinity website so it is normal that the script does not find it either.
If you write the complete title (Sophie Scholl: los últimos días) and you ask the Filmaffinity (ES) script about this film, the program goes directly to the window "Results of..." without error but no results at all.

Instead, if you write only a part of the title (últimos días) the script founds several films and goes to the window "Film selection". Then you select the correct title, click on OK and the program goes to the window "Results of..." but this time with the complete results of the film (Year excepted)

That means that in the first case the program skips the "Film selection" window because there is only one film with this title, but it does not initialize the values the same way when initializing after the said window and does not found the data correctly.

I hope this explanation is of value for you.

Thanks a lot for your program (I'm using it for more than seven years or so)

Best regards

Posted: 2011-11-25 14:27:28
by ChessPlayer
Sorry, I have not read about version 3.55. I will try it.

Posted: 2011-11-26 14:19:01
by makamoe
OK, a brief update on current status:

Last version of the script available (2.55) works fine except in two cases.

1. When there is "Sección visual" on the web, the scripts fails to get the country. Can be solved with the following code previously posted by rodpedja:

Code: Select all

 
// Country
   LineNr := FindLine('<img src="/imgs/countries', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr);
      Item := TextBetween(Line, 'title="', '" border');
      HTMLDecode(Item);
      SetField(fieldCountry, Trim(Item));
   end;
 
2. When there is "Ver trailer externo" on the web, the scripts fails to get the year. No solution found yet, I'm afraid. Can be checked on http://www.filmaffinity.com/es/film362992.html.

------

Después de probar la última versión del script (2.55) disponible desde el mismo programa, solo hay dos fallos.

1. No obtiene el país cuando hay "Sección visual", pero se puede arreglar con el código anterior.
2. No obtiene el año cuando hay "Ver trailer externo". Para esto todavía no hay solución.

Los fallos vienen porque el script no contempla estas excepciones. De todas maneras, como ya se ha dicho, quizá lo mejor sea esperar a que terminen de remodelar la página.

Posted: 2011-11-26 14:32:40
by masterchipo
Gracias, es muy informativo. Solo resta esperar.

Posted: 2011-11-27 15:26:48
by antp
makamoe wrote:OK, a brief update on current status:
Thanks, I'll include the fix and upload it as 3.56

sigue sin funcionar

Posted: 2011-12-15 03:15:10
by masterchipo
Lamentablemente ahora no da el año, a veces falla el país, pero sobre todo, la calificación y el año, y si pones la otra versión que es la de filmaffinity + caratulas DVD, te aparecen el reparto no en columna sino uno al lado del otro y resulta más difícil de leer, y por otra parte si no tienes cuidado no se tilda el número de película que has añadido.
Saludos y esperemos que pronto se arregle esto

Re: sigue sin funcionar

Posted: 2011-12-24 12:30:48
by morfius
masterchipo wrote:Lamentablemente ahora
Afortunadamente hay personas que comparten con todo el mundo los scripts, sin ningún beneficio ni ánimo. Yo aún no he detectado errores en año, país o calificación. Eso no quiere decir que no existan, simplemente nadie me ha indicado en que registro (película) ocurre tal incidente.
masterchipo wrote:si pones la otra versión que es la de filmaffinity + caratulas DVD, te aparecen el reparto no en columna sino uno al lado del otro
Tienes que leer las características. Esta es una opción que me demandaron varios usuarios. Una opción que puedes elegir o no. Cada uno tiene sus necesidades.
morfius wrote:[UPDATE] FilmAffinity (+CaratulaDVD) (ES) v1.01 (24 nov 2011)

// 25/11/2011 añadido Option SeparadorReparto (saltos de línea o comas) para intérpretes
masterchipo wrote:si no tienes cuidado no se tilda el número de película que has añadido.
No se a lo que te refieres. Si es un bug házmelo saber. Ningún otro usuario ha reportado ese error. Es conveniente que contestes en el hilo corresponidente a cada script.

Un saludo

Re: sigue sin funcionar

Posted: 2011-12-27 05:40:34
by masterchipo
morfius wrote:
masterchipo wrote:Lamentablemente ahora
Afortunadamente hay personas que comparten con todo el mundo los scripts, sin ningún beneficio ni ánimo. Yo aún no he detectado errores en año, país o calificación. Eso no quiere decir que no existan, simplemente nadie me ha indicado en que registro (película) ocurre tal incidente.
masterchipo wrote:si pones la otra versión que es la de filmaffinity + caratulas DVD, te aparecen el reparto no en columna sino uno al lado del otro
Tienes que leer las características. Esta es una opción que me demandaron varios usuarios. Una opción que puedes elegir o no. Cada uno tiene sus necesidades.
morfius wrote:[UPDATE] FilmAffinity (+CaratulaDVD) (ES) v1.01 (24 nov 2011)

// 25/11/2011 añadido Option SeparadorReparto (saltos de línea o comas) para intérpretes
masterchipo wrote:si no tienes cuidado no se tilda el número de película que has añadido.
No se a lo que te refieres. Si es un bug házmelo saber. Ningún otro usuario ha reportado ese error. Es conveniente que contestes en el hilo corresponidente a cada script.

Un saludo
Está bien. Yo prefiero (porque me resulta más comodo) leer el reparto encolumnado. Y lo que quedaría es resolver ese tema del tilde en el número de película. Esto quiere decir, (porque veo que no lo has comprendido) añades una pelicula, vas a F6 y a Filmaffinity el último script subido o fix o lo que sea del día 27 o 28 de noviembre, y al finalizar queda en blanco el año de la película y el número de orden del catálogo, ya que si al finalizar no lo tildas, es como que te queda una película de menos en tu haber. Creo haber sido explicito.
gracias y saludos
masterchipo
Edito, para ver un ejemplo, mira Submarine 2010 dirigida por Richard Ayoade que no se marca el año, pero esta vez sí se tilda el número de película.
No sé que pensar, me imagino que son las cuestiones de modificación en la página de Filmaffinity, porque de cuestiones técnicas, bugs, scripts, no entiendo un comino.
Gracias

No funciona y la página de Filmaffinty normalizada

Posted: 2012-02-11 16:24:00
by masterchipo
En la forma que deja de funcionar es que no te coloca el año, y el formato de filmaffinity dvd + carátula no me agrada.
A los que se ocupan de hacer los scripts, la página oficial ya no va a tener más reformas. Finalizaron los trabajos de modernización y actualización de datos y reformas en la página. Por eso, digo, debe adaptarse el script, colocando el año, ya que al ejecutar el script filmaffinity oficial 2.51 ya actualizado muchas veces te deja el año de la película en blanco.
Gracias por la colaboración

Posted: 2012-07-06 17:02:18
by magol
Hola a todos,
Alguien a encontrado la solución para capturar país y año.
En un post anterior viene una solución para el país pero no me funciona.

Saludos

No funciona?

Posted: 2012-08-25 05:50:39
by josete
No me funciona el script filmaffinity. ¿Alguien sabe algo?

gracias

Posted: 2012-09-04 02:38:51
by Cirigallo
Hi all,

I have the version 2.56 of this script but it's not working properly. Does anybody know how to fix the script to get the rating of the movie?

I have identified the problem but I don't know programming and I can't figure out the solution. Apparently, the problem is that the website has the film rating decimals separated by commas instead of dots and the script is not able to read them in that way.

Is there any way to say to the script that it has to interpret the commas as dots?

Thanks in advance.

Here is the part of the script about the Rating:

Code: Select all

// Rating 
   LineNr := FindLine('<div style="margin: 4px 0; color:#990000; font-size:22px; font-weight: bold;">', Page, LineNr); 
   if LineNr <> -1 then 
   begin 
      Line := Page.GetString(LineNr); 
      Item := TextBetween(Line, '<div style="margin: 4px 0; color:#990000; font-size:22px; font-weight: bold;">', '</div>'); 
      HTMLDecode(Item); 
      SetField(fieldRating, Item); 
   end;

PS: If anybody has had problems with the YEAR, here is a solution. I have copied and modified slightly the same part from the script "Filmaffinity + Caratula DVD":

Code: Select all

// Year
   LineNr := FindLine('<th>AÑO</th>', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr + 2);

      if Pos('Ver trailer', Line) > 0 then
        Item := TextBetween(Line, '</div>      ', '</td>')
      else
      begin
        Item := TextBetween(Line, '     ', '</td>')
      end;
      HTMLDecode(Item);
      SetField(fieldYear, Trim(Item));
   end;

Posted: 2012-09-04 08:46:05
by antp
Cirigallo wrote: Is there any way to say to the script that it has to interpret the commas as dots?
Replace

Code: Select all

 SetField(fieldRating, Item); 
by

Code: Select all

 SetField(fieldRating, StringReplace(Item, ',', '.')); 
Can you send me by e-mail the whole fixed script (with the year thing too) once you have checked that it works? So I can put it on the server :)

Posted: 2012-09-07 01:40:50
by Cirigallo
Here is the part for Ratings corrected:

Code: Select all

   // Rating
    LineNr := FindLine('<div style="margin: 4px 0; color:#990000; font-size:22px; font-weight: bold;">', Page, LineNr);
   if LineNr <> -1 then
   begin
      Line := Page.GetString(LineNr);
      Item := TextBetween(Line, '>', '</div>');
      HTMLDecode(Item);
      SetField(fieldRating, StringReplace(Item, ',', '.'));
   end;
Thanks for the help antp. I sent you a private message with the script.

Posted: 2012-09-10 11:50:54
by antp
Thanks! :)
It is now on the server with the other scripts

Posted: 2012-09-18 18:21:20
by legrad
No entiendo los problemas del script Filmaffinity, la verdad que yo uso mi propio script desde hace un par de años y solo he visto una actualizacion de la web la cual la hicieron hara ya un año, solo he retocado mi script en una ocasion que yo recuerde, el film "Sophie Scholl: los últimos días" que se comenta en el foro yo la encuentro sin problemas, los problemas mencionados en ocasiones por el campo país u otros la verdad a mi nunca me ha pasado. No pretendo molestar a otros compañeros que hacen scripts, pero para el que le pueda interesar este es mi script

Code: Select all


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

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

[Infos]
Authors=Legrad
Title=Filmaffinity
Description=
Site=www.filmaffinity.com
Language=ES
Version=1.1
Requires=3.5.0
Comments=
License=
GetInfo=1

[Options]

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

program filmaffinity;
var
  MovieName: string;
  MovieURL: string;
  //------------------------------------------------------------------------------------
  function Caracter(str1: string) :string;
begin
          str1 := StringReplace(str1, 'á' , 'à');
          str1 := StringReplace(str1, 'é' , 'é');
          str1 := StringReplace(str1, 'í',  'í');
          Str1 := StringReplace(Str1, 'ó', 'ó');
          str1 := StringReplace(str1, 'ú' , 'ú');
          str1 := StringReplace(str1, 'ñ' , 'ñ');
          result := str1;
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;

//-------------------------------------------------------------------------------------
                      function TextBetween(var S: string; StartTag: string; EndTag: string): string;
var
  InitialPos: Integer;
begin
  InitialPos := Pos(StartTag, S);
  if InitialPos = 0 then
    result := ''
  else
  begin
    Delete(S, 1, InitialPos + Length(StartTag) - 1);
    InitialPos := Pos(EndTag, S);
    if InitialPos = 0 then
      result := S
    else
    begin
      result := copy(S, 1, InitialPos - 1);
      Delete(S, 1, InitialPos + 1);
    end;
  end;
end;

//------------------------------------------------------------------------------------
                               function DeleteTags(var S: string): string;
var
   n,len, tag: Integer;
   c: char;
   t: String;
begin

   tag := 0;
   t := '';
   len := length(s);

   for n :=1 to len do
   begin
      c := Copy(s,n,1);


      if c = #9 then
         c := ' ';

      if(tag=1) then
      begin
         if(c='>') then tag := 0;
         continue;
      end
      else
      begin
         if(c='<') then
         begin
            tag := 1;
            continue;
         end;
         t := t + c;
      end;
   end
   s := t;
   result := t;
end;


//------------------------------------------------------------------------------------
procedure AnalyzePage(Address: string);
var
  strPage, MovieAddr, MovieTitle, MovieDate, MovieID, Movie: string;
  BeginPos, EndPos: Integer;
  BeginPoss, EndPoss: Integer;
begin
  strPage := GetPage(Address);
  BeginPos := Pos('resultados.</b></td></tr>', strPage);
  if(BeginPos > -1)then
    begin
      PickTreeClear;
      Delete(strPage, 1, BeginPos);
      BeginPos := Pos('<b><a href="/es/film', strPage);
      EndPos := 1;
      while ((BeginPos > 0) and (EndPos > 0)) do

        begin
          Delete(strPage, 1, BeginPos);
          EndPos := Pos('.html', strPage);
          MovieId := Copy(strPage,+20, EndPos-20);
          MovieAddr := 'http://www.filmaffinity.com/es/film' + MovieId+'.html';
          BeginPoss := Pos('">',strPage);
          EndPoss := Pos('<img src=', strPage);
          MovieTitle := Copy(strPage,BeginPoss, EndPoss);
          MovieTitle  := TextBetween(MovieTitle , '">', '<img');
          DeleteTags(MovieTitle);
          PickTreeAdd(MovieTitle, MovieAddr);
          PickTreeSort;
          BeginPos := Pos('<b><a href="/es/film', strPage);
          if(Pos('</body>', strPage) < BeginPos) then
           BeginPos := -1;
        end;

    end;
    PickTreeExec(Address)
    AnalyzeMoviePage(Address);
end;
//------------------------------------------------------------------------------------
procedure AnalyzeMoviePage(Address: string);
var
  Page: TStringList;
  LineNr: Integer;
  Line: string;
  Item: string;
  Comments: string;
  Actors: string;
  Directors: string;
  Description: string;
  Busca: integer;


begin
  Description := '';
  Comments := '';

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

  // Titulo traducido
  LineNr := FindLine('<title>', Page, 0);
  Line := Page.GetString(LineNr);
  Item := TextBetween (Line, '<title>', '(');
  HTMLDecode(Item);
  Item := Caracter(Item);
  SetField(fieldTranslatedTitle, Trim (Item));

  // Titulo Original
 LineNr := FindLine('TULO ORIGINAL</th>', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('TULO ORIGINAL</th>',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '<strong>', '</strong>');
    HTMLDecode(Item);
    Item := Caracter(Item);
    SetField(fieldOriginalTitle, Trim (Item));
  end;

  // año
  LineNr := FindLine('<title>', Page, 0);
  if LineNr <> -1 then
  begin
    Line := Page.GetString(LineNr);
    Item := TextBetween (Line, '(', ')');
    DeleteTags (Item);
     HTMLDecode(Item);
    SetField(fieldYear, Trim (Item));
  end;

  // Duracion
   LineNr := FindLine('<th>DURACI', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('<th>DURACI',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '<th>DURACI', '<tr>');
    Item := TextBetween (Item, '</div>', 'min.');
    Item := StringReplace (Item, #13#10, '');
    HTMLDecode(Item);
    SetField(fieldLength, Trim (Item));
  end;

  // pais
   LineNr := FindLine('imgs/countries/', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('imgs/countries/',Page.Text), length(Page.Text));
    Item := TextBetween (Item, 'title="', '"');
    HTMLDecode(Item);
    Item := Caracter(Item);
    SetField(fieldCountry, Trim (Item));
  end;

   // director
   LineNr := FindLine('<th>DIRECTOR</th>', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('<th>DIRECTOR</th>',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '/search.php?stype=director&stext=', '</a></td>');
    Item := TextBetween (Item, '">', '');
    HTMLDecode(Item);
    Item := Caracter(Item);
    SetField(fieldDirector, Trim (Item));
  end;

  // Reparto
   LineNr := FindLine('<th>REPARTO</th>', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('<th>REPARTO</th>',Page.Text), length(Page.Text));
    Item := TextBetween (Item, 'search.php?stype=cast&stext=', '</a></td>');
    Item := TextBetween (Item, '">', '');
    HTMLDecode(Item);
    DeleteTags (Item);
    Item := Caracter(Item);
    SetField(fieldActors, Trim (Item));
  end;

  // productor
   LineNr := FindLine('<th>PRODUCTORA</th>', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('<th>PRODUCTORA</th>',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '<td>', '</td>');
    HTMLDecode(Item);
    DeleteTags (Item);
    Item := Caracter(Item);
    SetField(fieldProducer, Trim (Item));
  end;

  // Categoria
  LineNr := FindLine('NERO</th>', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('NERO</th>',Page.Text), length(Page.Text));
    Item := TextBetween (Item, 'style="text-decoration:none">', '|');
    Item := StringReplace (Item, '.', ', ');
    Item := StringReplace (Item, '  ', '');
    HTMLDecode(Item);
    DeleteTags (Item);
    Item := Caracter(Item);
    SetField(fieldCategory, Trim (Item));
  end;

  // sinopsis
  LineNr := FindLine('<th>SINOPSIS</th>', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('<th>SINOPSIS</th>',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '<td>', '(FILMAFFINITY)');
    HTMLDecode(Item);
    DeleteTags (Item);
    Item := Caracter(Item);
    SetField(fieldDescription, Trim (Item));
  end;

  // Calificación
  LineNr := FindLine('<div style="margin: 4px 0; color:#990000; font-size:22px; font-weight: bold;">', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('<div style="margin: 4px 0; color:#990000; font-size:22px; font-weight: bold;">',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '<div style="margin: 4px 0; color:#990000; font-size:22px; font-weight: bold;">', '</div>');
    HTMLDecode(Item);
    DeleteTags (Item);
    SetField(fieldRating, Trim (Item));
  end;

   // Guión
LineNr := FindLine('<th>GUI', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('<th>GUI',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '<td>', '</td>');
    HTMLDecode(Item);
    DeleteTags (Item);
    Item := Caracter(Item);
Comments := Comments + 'Guión: ' + Item +#13#10;
end;

 // fotografia
LineNr := FindLine('<th>FOTOGRAF', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('<th>FOTOGRAF',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '<td>', '</td>');
    HTMLDecode(Item);
    DeleteTags (Item);
    Item := Caracter(Item);
Comments := Comments + 'Fotografía: ' + Item +#13#10;
end;

// Musica
LineNr := FindLine('SICA</th>', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('SICA</th>',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '<td>', '</td>');
    HTMLDecode(Item);
    DeleteTags (Item);
    Item := Caracter(Item);
Comments := Comments + 'Música: ' + Item +#13#10#13#10;
end;

// Critica
LineNr := FindLine('TICAS</th>', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('TICAS</th>',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '<td>', '</td>');
    HTMLDecode(Item);
    DeleteTags (Item);
    Item := StringReplace(Item, '-', '');
    Item := StringReplace(Item, '     ', '');
    Item := StringReplace(Item, '   ', '');
    Item := StringReplace(Item, '  ', '');
    Item := Caracter(Item);
Comments := Comments + 'CRITICAS: ' + Item +#13#10;
end;

  // Caratula
  LineNr := FindLine('src="/images/enlarge.gif"', Page, 0);
  if LineNr <> -1 then
  begin
    Item := copy(Page.Text, pos('src="/images/enlarge.gif"',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '<a class="lightbox" href="http://pics.filmaffinity.com/', '.jpg');
    HTMLDecode(Item);
    GetPicture ('http://pics.filmaffinity.com/'+Item+'.jpg');
  end;
  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(fieldTranslatedTitle);
   if MovieName = '' then
            MovieName := GetField(fieldOriginalTitle);
Input('Filmaffinity', 'Buscar:', MovieName);

     if(GetOption('Sin resultado') = 0) then  Input('Filmaffinity', 'Buscar:', MovieName);

   AnalyzePage('http://www.filmaffinity.com/es/search.php?stext=' + UrlEncode(MovieName)  + '&stype=Title');
end.

Posted: 2012-10-14 12:19:00
by endeua
Hola. Vengo usando la versión 2.57 del scrip de FilmAffinity. He detectado que la función "buscar mas" no aparece operativa, está en gris y no puedo buscar más resultados.
Por ejemplo, si estoy buscando una película antigua y busco la palabra "america", la búsqueda me devuelve resultados hasta 2002 y no me deja buscar películas más antiguas.
¿Alguna sugerencia de cómo activar ese botón?
Gracias