[REL] [ES] The Dreamers (ES)

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
icecubix
Posts: 32
Joined: 2005-03-30 09:01:20

[REL] [ES] The Dreamers (ES)

Post by icecubix »

Muy buenas a todos.

Os comparto un script que acabo de terminar que recoge información de la web The Dreamers (está en castellano). Aunque tendría que probarlo más de momento lo he probado con 10 o 15 películas y parece que funciona bien.

Ventajas del script: Tiene muchas películas de serie B que no encotrareis en otro script, y buenas críticas.

Problemas: Carece de películas muy conocidas y algunas veces le falta información tan importante como el director. Cuando veais que falta alguna información primero comprovar que de verdad existe en la página original.

In inglish: New script for "The Dreamers" site (antp, how goes the version 4 of the program? Tnks).


Buen probecho ;->


(Crear el fichero The Dreamers [ES].ifs dentro del directorio Scripts)

Code: Select all

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

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

[Infos]
Authors=Icecubix
Title=The Dreamers (ES)
Description=Movie importation script for Cineol (picture from Culturalia).
Site=http://dreamers.com
Language=ES
Version=1.0
Requires=3.5.1
Comments=Películas de terror
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

[Options]
BuscarCaratula=1|1|0=No|1=Si
ModoBatch=1|0|0=Modo normal|1=Modo automático (batch). No pregunta nada ni muestra mensajes

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

program Dreamers;

uses
  StringUtils1;

const
  BaseURL = 'http://dreamers.com/';
  BaseURLBusqueda = 'http://info.dreamers.com/p/web/busqueda.html';

var
  MovieName: string;
  MovieURL: string;
  Title: string;
  i: integer;
  s11: string;
  buscarCaratulas: string;
  preguntarTitulo: string;
  minicaratula: string;
  BuscarCaratula, ModoBatch: Boolean;
  Page: TStringList;

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

function MiTextBetween(var S: string; StartTag: string; EndTag: string): string;
var
  InitialPos: Integer;
  a,b: string;
begin
  a := ansiLowerCase(StartTag);
  b := AnsiLowerCase(S);

  InitialPos := Pos(AnsiLowerCase(StartTag), AnsiLowerCase(S));
  Delete(S, 1, InitialPos + Length(StartTag) - 1);
  InitialPos := Pos(AnsiLowerCase(EndTag), AnsiLowerCase(S));
  result := copy(S, 1, InitialPos - 1);
  Delete(S, 1, InitialPos + 1);
end;

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

function EliminaInicio(S: string; CR: string): string;
begin
  result := S;
  while Pos(CR, result) = 1 do
  begin
    Delete(result, 1, Length(CR));
  end;
end;

function CadenaEntre(var S: string; StartTag: string; EndTag: string): string;
var
  InicioPos: Integer;
  FinPos: Integer;
  res: String;
begin
  InicioPos := Pos(StartTag, S);
  FinPos    := Pos(EndTag, S);
  res := copy(S, InicioPos + Length(StartTag), FinPos - 1);
  result := res;
end;

function ComeTags(s: String): String;
var i: integer;
    res: String;
    tag: Boolean;
begin
  res := '';
  tag := False;
  
  i := pos('<BR>', uppercase(s));
  while i > 0 do
  begin
    s:= copy(s,1,i-1) + #13#10 + copy(s,i+4, length(s));
    i := pos('<BR>', uppercase(s))
  end;
  
  for i := 1 to length(s) do
  begin
    if copy(s,i,1) = '<' then tag := true;
    if not tag then res := res + copy(s,i,1);
    if copy(s,i,1) = '>' then tag := false;
  end;
  result := res;
end;

procedure DREAMERS_BuscarInformacion;
var url: String;
  Articles: array of string;
  Index: integer;
begin
  SetArrayLength(Articles,11);
  Articles[0]:='Lo ';
  Articles[1]:='La ';
  Articles[2]:='Le ';
  Articles[3]:='Uno ';
  Articles[4]:='Una ';
  Articles[5]:='Un ';
  Articles[6]:='El ';
  Articles[7]:='Los ';
  Articles[8]:='Las ';
  Articles[9]:='Unos ';
  Articles[10]:='Unas ';









//MovieName := 'the fear';

  // Eliminate spanish article if exists
  for Index := 0 to 10 do
  begin
   if Pos(Articles[Index], MovieName) = 1  then
   MovieName := copy(MovieName, length(Articles[Index]), length(MovieName));
  end;

  url := DREAMERS_ListaBusqueda(BaseURLBusqueda, '?' +   URLEncode('query=' + MovieName));

  if url <> '' then
    DREAMERS_RecuperarInformacionPelicula(url);
end;


function DREAMERS_ListaBusqueda(Address, params: String): string;
var
  Page, TempTit: TStringList;
  LineNr: Integer;
  Code, Title, tmp: string;
  ini, fin, cont: integer;
  encontradoParaBatch: boolean;
  Line: STring;
begin
  Page := TStringList.Create;
  TempTit := TStringList.Create;

  Page.Text := GetPage(Address +  params);
//    Page.Text := GetPage('http://info.dreamers.com/p/web/busqueda.html?query=the%20fear');



  Page.Text := StringReplace(Page.Text, '<BR>', #13#10);
  Page.Text := StringReplace(Page.Text, '<br>', #13#10);
  Page.Savetofile('c:\pagina retornada.htm');

  ini := FindLine('>CRÍTICAS DE CINE', Page, 0);
  fin := FindLine('>CRÍTICAS DE LIBROS', Page, 0);
  Line := Page.GetString(ini);
//  showmessage(inttostr(Pos ('No se ha encontrado nada que coincida con la búsqueda', Line)));
  if Pos ('No se ha encontrado nada que coincida con la búsqueda', Line) <= 0 then
  begin
       PickTreeClear;
       PickTreeAdd('THE DREAMERS: Resultados de búsqueda para: "' + MovieName + '"', '');

         encontradoParaBatch := true; cont := 0;

        for LineNr := ini to fin do
        begin
          if Pos('mostrarforo"><',Page.GetString(LineNr)) > 0 then
          begin
            Line  := Page.GetString(LineNr);
            Code  := TextBetween(Line, '<a href="', '"><b>');
            Title := ComeTags(TextBetween(Line, '<b>', '</b>'));

            if ModoBatch and (AnsiLowerCase(Title) = AnsiLowerCase(MovieName)) then
            begin
              encontradoParaBatch := true;
              Break;
            end;

            PickTreeAdd(Title, Code);
         end;
       end;

         Page.Free;
         if ModoBatch then
         begin
            if encontradoParaBatch or (cont  = 1) then
              result := Code
         end
         else
         begin
           if PickTreeExec(Address) then result := Address
                                    else result := '';
         end
  end else
  if not ModoBatch then
    ShowMessage('THE DREAMERS: No se ha encontrado ninguna coincidencia de "'+ MovieName +'"');
end;

procedure DREAMERS_RecuperarInformacionPelicula(Address: String);
var
  LineNr, aux: Integer;
  Line, Line2: string;
  Item, s_aux: string;
  comentarios: string;
  interpretes: string;
  s: String;
begin
  // URL
  SetField(fieldURL, Address);

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

  // Titulo original
  s := buscaCampo('class="txPeliTit"', 0, '"txPeliTit">"', '" </TD>');

  s := buscaCampo2('<b>Título original</b>', 0, '</b></td></tr><tr><td class="text"', '>', '<');
  if trim(s) = '' then s := buscaCampo2('<b>Género</b>', 0, '<a href="', '">', '<');
  setField(fieldOriginalTitle, s);
  
  // Titulo traducido
  s := buscaCampo('<title>THE DREAMERS: ', 0, '<title>THE DREAMERS: ', '<');
  setField(fieldTranslatedTitle, s);
  
  // Genero/Categoria
  s := buscaCampo2('<b>Género</b>', 0, '</b></td></tr><tr><td class="text"', '>', '<');
  if trim(s) = '' then s := buscaCampo2('<b>Género</b>', 0, '<a href="', '">', '<');
  setField(fieldCategory, s);

  // País
  s := buscaCampo2('>Nacionalidad<', 0, '</b></td></tr><tr><td class="text"', '>', '<');
  if trim(s) = '' then s := buscaCampo2('>Nacionalidad<', 0, '<a href="', '">', '<');
  setField(fieldCountry, s);

  // Duración
  s := buscaCampo2('>Duración<', 0, '</b></td></tr><tr><td class="text"', '>', '<');
  setField(fieldLength, s);

  // Director
  s := buscaCampo2('>Director<', 0, '</b></td></tr><tr><td class="text"', '>', '<');
  if trim(s) = '' then s := buscaCampo2('>Director<', 0, '<a href="', '">', '<');
  setField(fieldDirector, s);

  // Productor
  s := buscaCampo2('>Producción<', 0, '</b></td></tr><tr><td class="text"', '>', '<');
  if trim(s) = '' then s := buscaCampo2('>Producción<', 0, '<a href="', '">', '<');
  setField(fieldProducer, s);
  
  // Año
  s := buscaCampo2('>Año<', 0, '</b></td></tr><tr><td class="text"', '>', '<');
  if trim(s) = '' then s := buscaCampo2('>Año<', 0, '<a href="', '">', '<');
  setField(fieldYear, s);

  // Comentarios = Premios, Guion, fotografia, Musica, comentario destacado, web oficial
  // Cada cual que se lo monte a su gusto. A mi me gusta así:
  comentarios := '';
  s := buscaCampo2('>Guión<', 0, '<a href="', '">', '<');
  if trim(s) = '' then s := buscaCampo2('>Guión<', 0, '</b></td></tr><tr><td class="text"', '>', '<');
  if s <> '' then comentarios := comentarios + 'Guión: '#9#9 + s + #13#10;
  
  s := buscaCampo2('>Música<', 0, '<a href="', '">', '<');
  if trim(s) = '' then s := buscaCampo2('>Música<', 0, '</b></td></tr><tr><td class="text"', '>', '<');
  if s <> '' then comentarios := comentarios + 'Música: '#9#9 + s + #13#10;
  
  s := buscaCampo2('>Fotografía<', 0, '<a href="', '">', '<');
  if trim(s) = '' then s := buscaCampo2('>Fotografía<', 0, '</b></td></tr><tr><td class="text"', '>', '<');
  if s <> '' then comentarios := comentarios + 'Fotografía: '#9 + s + #13#10;

  s := buscaCampo2('>Distribuidora<', 0, '<a href="', '">', '<');
  if trim(s) = '' then s := buscaCampo2('>Distribuidora<', 0, '</b></td></tr><tr><td class="text"', '>', '<');
  if s <> '' then comentarios := comentarios + 'Distribuidora: '#9 + s + #13#10;

  //Calificación
  s := buscaCampo2('del crítico: <b', 0, 'del crítico: <b', '>', '<');
  if s <> '' then setField(fieldRating, s);

  //Descripción
  s := comeTags(buscaCampo2('<b>Sinopsis</b>', 0, '</td></tr><tr><td class="text"', '>', '</td>'));
  if s <> '' then setField(fieldDescription, s);

  //Comentarios
  s := comeTags(buscaCampo2('del crítico: <b', 0, '</b></center></td></tr></table', '>', '</td>'));
  if s <> '' then begin
      comentarios := comentarios + ' _________________________________________________'#13#10;
      comentarios := comentarios + #13#10 + 'CRÍTICA: ' + #13#10 + s + #13#10;
  end;
  setField(fieldComments, comentarios);

  //Interpretes
  s := comeTags(buscaCampo2('>Reparto<', 0, '<a href="', '">', '</tr>'));
  SetField(fieldActors, s);

  if BuscarCaratula then
  begin
    //Caratula
    s := buscaCampo2('http://dreamers.com/cgibin/plantilla.cgi?plantilla', 0, '<img SRC=', '"', '" border');
    if s <> '' then GetPicture(s);
  end;

end;


function buscaCampo(patron: String; offset: integer; ini, fin: string): String;
var
  LineNr: Integer;
  Line: string;
  Item: string;
begin
  Result := '';
  LineNr := FindLine(patron, Page, 0);
  if LineNr > 0 then
  begin
    LineNr := LineNr + offset;
    Line := Page.GetString(LineNr);
    Item := TextBetween (Line, ini, fin);
    HTMLDecode(Item);
    result := Trim(Item);
  end;
end;


function buscaCampo2(patron: String; offset: integer; start, ini, fin: string): String;
var
  LineNr: Integer;
  Line: string;
begin
  Result := '';
  LineNr := FindLine(patron, Page, 0);
  if LineNr > 0 then
  begin
    LineNr := LineNr + offset;
    Line := Page.GetString(LineNr);
    Line := TextBetween (Line, start, fin);
    Line := TextBetween (Line + fin, ini, fin);
    HTMLDecode(Line);
    result := Trim(Line);
  end;
end;

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


begin
  BuscarCaratula        := getOption('BuscarCaratula') <> 0;
  ModoBatch             := getOption('ModoBatch') = 1; //OJO: SI EL TITULO DE
                 //LA PELICULA NO COINCIDE NO MOSTRARA INFORMACIÓN, POR QUE LOS
                 //RESULTADOS DE LA BUSQUEDA NO LOS ORDENA POR ORDEN DE SEMEJANZA

  { Un modo mas cómodo de asignar las variables es marcando el check de la caratula y
    del titulo traducido, en los "campos modificables". Si me desmarca la imagen no la buscaré
    y si me marca el titulo traducido(por ejemplo) serà un proceso batch.:
    
    BuscarCaratula        := CanSetPicture();
    ModoBatch             := not CanSetField(fieldTranslatedTitle);
   }

  if CheckVersion(3,5,0) then
  begin
    MovieName := GetField(fieldTranslatedTitle);
    if MovieName = '' then
      MovieName := GetField(fieldOriginalTitle);
      
    if (MovieName = '') or not (ModoBatch) then
      if not Input('Importar de CINeol + Culturalia', 'Introduzca el titulo de la pelicula:', MovieName) then
        Exit;

    if (MovieName <> '') then
    begin
         DREAMERS_BuscarInformacion; // El titulo a buscar siempre está en MovieName
    end;
  end
  else
    ShowMessage('Este script requiere una version mas reciente de Ant Movie Catalog (por lo menos la version 3.5.0)');
end. 
Last edited by icecubix on 2005-11-15 22:30:56, edited 1 time in total.
antp
Site Admin
Posts: 9630
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Re: [REL] [ES] The Dreamers (ES)

Post by antp »

icecubix wrote: In inglish: New script for "The Dreamers" site (antp, how goes the version 4 of the program? Tnks).
Thanks for the script.
Nothing special for version 4, I only started to improve importation (and I'll probably make few changes for exportation) for a version 3.5.1 or 3.6.
I do not know when I'll finish that, and even do not know when I'll start to think on starting version 4 :p
Sorel
Posts: 2
Joined: 2005-10-27 14:20:42

Post by Sorel »

Hello:

It's my first post, so the first thing is to congratulate antp for his job: AMC it's great!!!

This script does not work fine, I'll explain in spanish for the author (my english is very bad):

Hola Icecubix, felicidades por tu trabajo con este script, la verdad es que hacía falta uno para esta página. Te comento:

Hay películas que funcionan perfectamente (LifeForce, xej) pero hay otras que el script no encuentra y que están en la página, por ejemplo:


Viento de Amnesia, este es el link a la info de la peli de The Dreamers
o
La puta un castillo en el aire, el link en The Dreamers.


Como ves, las películas están en The Dreamers, pero el script no las encuentra.

A ver si consigues arreglarlo campeón :grinking:

Sl2.
folgui
Posts: 113
Joined: 2003-02-04 19:15:03
Location: Madrid, Spain

Post by folgui »

[SPANISH]
!Hola Sorel!

El script encuentra las películas perfectamente.

Cuando no encuentres algo, prueba a hacer la búsqueda menos específica, en mi caso, he buscado por "viento" y por "castillo" y en ambos casos salen en la lista que se despliega las dos películas que comentas...

P.D. Finalmente he pensado que el problema igual era al importar el contenido, pero también lo hace perfectamente.

Saludos, folgui.

[ENGLISH]
¡Hello Sorel!
The script finds the movies perfectly.

When you don't find anything, try to make the search less especific. I've searched for "viento" and "castillo" and in both cases it finds the two movies you comment...

P.D. Finally, i've thought that the problem perhaps was when the script imports the info, but it also works perfectly.

Regards, folgui.
icecubix
Posts: 32
Joined: 2005-03-30 09:01:20

Post by icecubix »

Muy buenas, Sorel.

Pues por lo que he comprovado folgui tiene razón, el script va bien. "Viento de Amnesia" sí que lo encuetra y la de "la puta" si miras el enlace que me das verás que el título es algo diferente. Si lo buscas verás que sí que lo encuetra. Si me pones algun otro ejemplo lo revisaremos a ver que tal.

Saludos y gracias por vuestros comentarios :p


[IN ENGLISH]
Script works fine. If you search the correct title (review your link of "la puta") you will find the film.

Regards and thanks for your comments :p
Sorel
Posts: 2
Joined: 2005-10-27 14:20:42

Post by Sorel »

OK el cript funciona bien: si busco "amnesia" me aparece "El Viento de Amnesia" y si busco "laputa" (¿en que estaría pensando? :ha: ) tb la encuentra

Tomo nota del consejo y de mi error para la próxima vez.

Perdón por las molestias y gracias por uno de los scripts más útiles.

Sl2.

Me acabo dar cuenta: el script me pone el título original donde debería estar el traducido
icecubix
Posts: 32
Joined: 2005-03-30 09:01:20

Post by icecubix »

COÑO !!! QUE FUERTE, TIO !!! A saber las peliculas que habré catalogado con el título al revés !! :badidea::ha:

Pues muchas gracias, Sorel. Acabo de editar el script. Lo único que he hecho es intercanviar las dos lineas de código siguientes:

Code: Select all

  setField(fieldOriginalTitle, s);
  setField(fieldTranslatedTitle, s);
Buenas noches


IN ENGLISH FOR ANTP ! antp, I have edited my script because of an error in which the original title was shown in the translated title position and traslated in original position.
antp
Site Admin
Posts: 9630
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

icecubix wrote: IN ENGLISH FOR ANTP ! antp, I have edited my script because of an error in which the original title was shown in the translated title position and traslated in original position.
Thanks ;)
Sergiqu
Posts: 7
Joined: 2005-12-14 10:43:18

Post by Sergiqu »

Pues a mi cada vez que lo intento ejecutar, me dar error e la linea 27 :(.

Me pone:unit is not found en la linea 27
antp
Site Admin
Posts: 9630
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

I guess it is for "StringUtils1" ?
check that you have StringUtils1.pas in your Scripts folder. If you have version 3.5 you should have it anyway...
Sergiqu
Posts: 7
Joined: 2005-12-14 10:43:18

Post by Sergiqu »

Muchas gracias, solucionado.
Sergiqu
Posts: 7
Joined: 2005-12-14 10:43:18

Post by Sergiqu »

A mi hay una peli que no me le encuentra, y si que esta.

Es http://info.dreamers.com/i/peliculas/e/ ... /foro.html
me da siempre el error de Read Time out
gasofa
Posts: 21
Joined: 2005-12-16 15:58:07

Post by gasofa »

¿donde puedo encontrar el stringUtils1 porque da error en uses stringUtils1 y en FINDLINE. GRACIAS
antp
Site Admin
Posts: 9630
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Be sure to have the StringUtils1.pas file in your scripts folder
Sergiqu
Posts: 7
Joined: 2005-12-14 10:43:18

Post by Sergiqu »

A mi me apsaba lo msimo, y como dice antp, mira que no lo hayas borrado de la carpeta scripts
gasofa
Posts: 21
Joined: 2005-12-16 15:58:07

Post by gasofa »

estoy flipao, está aquí:

http://www.antp.be/temp/scripts/

GRACIAS
errante
Posts: 2
Joined: 2006-06-08 00:36:17

Post by errante »

Hola, volví a retomar mi colección con amc y actualizando los scripts en cuanto veo algo nuevo, pero últimamente no me va la imagen de este script de dreamers.

Probé con la película "la resurrección de los muertos", bueno, más concretamente el título original "les revenants" y extrae bien toda la información pero la carátula (que es de un tamaño realmente grande) no :-(

Intenté hurgar yo mismo a ver si encontraba la manera de solucionarlo, pero no lo di hecho, no comprendo del todo las funciones del progrma.

Por si sirve de algo, para encontrar el sitio exacto donde se inserta la imagen en el código html de la página, me imagino que sería aquí:
<td><a href="http://www.dreamers.com/cgibin/plantill ... MAGEN1.jpg">
<img SRC="http://dreamers.com/indices/imagenes/pe ... MAGEN1.jpg" border=0 alt="Pincha en la imagen para enviarla como postal"
></a></td>
Y la parte del script que vi que procesa la carátula es esta:

Code: Select all

...

  if BuscarCaratula then
  begin
    //Caratula
    s := buscaCampo2('http://dreamers.com/cgibin/plantilla.cgi?plantilla', 0, '<img SRC=', '"', '" border');
    if s <> '' then GetPicture(s);
  end;

...

function buscaCampo2(patron: String; offset: integer; start, ini, fin: string): String;
var
  LineNr: Integer;
  Line: string;
begin
  Result := '';
  LineNr := FindLine(patron, Page, 0);
  if LineNr > 0 then
  begin
    LineNr := LineNr + offset;
    Line := Page.GetString(LineNr);
    Line := TextBetween (Line, start, fin);
    Line := TextBetween (Line + fin, ini, fin);
    HTMLDecode(Line);
    result := Trim(Line);
  end;
end;
Espero que visto eso la modificación sea algún detalle fácil que se me haya pasado.

Saludos.

ENGLISH ~ more or less ;-) :

Hello, I continue using amc after some time to complete my film collection, and I'm updating my scripts from this forum, but now this script from "the dreamers" doesn't get the image.

I tried with the film "la resurreccion de los muertos", well, really the oritinal title "les revenants" and it extracted all the info but the image, and it's a really big one.

I tried to solve it by myself but I couldn't, I don't understand so well this program functions.

Perhaps it helps if I put the place where the image is inserted in the html page (first code) and the functions used by the script to process it (second code).

I hope with this info it will be easy to spot the detail that make it not to get the image.

Thanks.
errante
Posts: 2
Joined: 2006-06-08 00:36:17

Post by errante »

Bueno, parece que dí con una solución que en principo funciona. Tendré que probarla algo más.

La línea que cambié fue:

Code: Select all

s := buscaCampo2('http://www.dreamers.com/cgibin/plantilla.cgi?plantilla', 0, '&imagen', '=', '">');
English:
Well, I think I have found a solution that appears to be valid, I'll have to try more films.

I changed that line on the original code.
Post Reply