[REL] SDG [ES] segunda versión

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] SDG [ES] segunda versión

Post by icecubix »

(español) He reescrito el script de SDG debido a que la web ha cambiado y el script anterior no funciona. No he reescrito el código para obtener los datos técnicos por que estaba cansado y prefiero pulsar F7.

Saludos


(english) I have rewriten SDG script because of the web has changed and previous script don't works. I didn't write the code to read technics data (I was tired and I prefer to press F7)

Regards

Code: Select all

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

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

[Infos]
Authors=Icecubix
Title=SDG (ES)
Description=Movie importation script for SDG
Site=http://www.sdg-es.org
Language=ES
Version=2.0
Requires=3.5.0
Comments=Versión reescrita de cero (SDG-es.com --> SDG-es.org)
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]

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

program SDG;

const
  BaseURL = 'http://www.sdg-es.org/foro/sdge.php';
  BaseURL2 = 'http://www.sdg-es.org/';

var
  ModoBatch : boolean;
  BuscarCaratula : boolean;
  MovieName: string;
  Page: TStringList;

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

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(AnsiUpperCase(Pattern), AnsiUpperCase(List.GetString(i))) <> 0 then
    begin
      Result := i;
      Break;
    end;
end;
//------------------------------------------------------------------------------------

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


function TextBetween_noDelete(S: string; StartTag: string; EndTag: string): string;
var
  InicioPos: Integer;
  s2: String;
begin
  S2 := S;
  InicioPos := Pos(StartTag, S2);
  Delete(S2, 1, InicioPos + Length(StartTag) - 1);
  InicioPos := Pos(EndTag, S2);
  result := copy(S2, 1, InicioPos - 1);
end;


procedure BuscarPelicula(Nombrepeli: string);
var
  LineNr: Integer;
  Line, LineAux: string;
  MovieTitle, MovieAddress: string;
  Elementos: Integer;
  Item: string;
  Enlace, Titulo, Linea: string;
  s1, s2: string;
  i1, i2: integer;

begin
  Page := TStringList.Create;
  Page.Text := PostPage(BaseURL, URLEncode('do=buscando&busquedarapida=1&cadena=') + Nombrepeli);

  if Pos('<strong><a href="sdge.php?', Page.Text) = 0 then
  begin
    ShowMessage('No se ha han encontrado películas por "' + Nombrepeli + '"');
  end else
  begin
    Page.savetofile('d:\borrar1.html');
    if not ModoBatch then
    begin
       PickTreeClear;
       LineNr := 0;
       LineNr := FindLine('<strong><a href="sdge.php?', Page, LineNr);
       PickTreeAdd('SDG. Películas por: "' + MovieName + '"', '');
       while LineNr > 0 do
       begin
         Linea := Page.GetString(LineNr);
         Titulo := TextBetween_noDelete(Linea, '">', '</a>');
         Enlace := TextBetween_noDelete(Linea, 'a href="sdge.php', '">');
         Enlace := BaseURL + TextBetween_noDelete(Linea, 'a href="sdge.php', '">');
         s1 := 'sdge.php?s=';           i1 := pos(s1, Enlace);
         s2 := '&do=verelink';      i2 := pos(s2, Enlace);
         if (i1 > 0) and (i2 > 0) then
            Enlace := copy(Enlace, 0, i1+8) + copy(Enlace, i2+5, length(Enlace));

         PickTreeAdd(Titulo, Enlace);
         LineNr := FindLine('<strong><a href="sdge.php?', Page, LineNr+1);
       end;
       Page.Free;
       if PickTreeExec(Enlace) then
         AnalyzePage(Enlace);
    end else
    if not ModoBatch then
      ShowMessage('No se ha encontrado ninguna coincidencia por título');
  end
end;
//------------------------------------------------------------------------------------

function AnalyzePage(Address: string): Integer;
var
  LineNr, LineNrAux, aux, numCds, found, multiplier: Integer;
  Size, SizeLimit: Double;
  Line: string;
  Item: string;
  Comments: string;
  Actors: string;
  Description: string;
  isDual, isSubtitExt, isSonidoExt: Boolean;
  Idiomas: string;
  Subtit: String;
  strAux: string;
  delimiter: string;
  SonidoExt: string;
  TitOriginal: string;

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

  // URL
  SetField(fieldURL, Address);

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

  // Titulo traducido
  Item := buscaCampo('Detalles del Elink', 0, '>', '</a>');
  SetField(fieldTranslatedTitle, Item);

  // Caratula
  LineNr := FindLine('>Información<', Page, 0);
  LineNr := LineNr + 8;
  Line := Page.GetString(LineNr);
  Item := TextBetween (Line, 'imagenes/elinks/', '"');
  GetPicture (BaseURL2 + 'imagenes/elinks/' + Item);

  // Descripcion
  Item := buscaCampo('<b>Descripción:', 1, '<br>', '');
  SetField(fieldDescription, Trim (Item));

  // Titulo original NO HAY!!
  //SetField(fieldOriginalTitle, Item);

  // Direccion
  Item := buscaCampo('<b>Dirección:', 0, '</b>', '');
  SetField(fieldDirector, Trim (Item));

  // Interpretacion
  Item := buscaCampo('<b>Interpretación:', 0, '</b>', '');
  SetField(fieldActors, Trim (Item));

  // Genero
  Item := buscaCampo('<b>Género:', 0, '</b>', '');
  SetField(fieldCategory, Trim (Item));

  // Duracion
  Item := buscaCampo('<b>Duración:', 0, '</b>' , 'min');
  SetField(fieldLength, Trim (Item));

  // Pais
  Item := buscaCampo('<b>País:', 0, '</b>', '');
  SetField(fieldCountry, Trim (Item));

  // Year
  Item := buscaCampo('<b>Año:', 0, '</b>', '');
  SetField(fieldYear, Trim (Item));

end;


function buscaCampo(patron: String; offset: integer; ini, fin: string): String;
var
  i, 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);
    Item := Trim(Item);
    //borramos el punto final, si lo hay:
    i := Length(Item);
    if copy(Item,i,i) = '.' then
      Item := copy(Item,0,i-1);
    result := Item;
  end;
end;

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

begin
  if CheckVersion(3,5,0) then
  begin
    BuscarCaratula        := true; //getOption('BuscarCaratula') <> 0;
    ModoBatch             := false; //getOption('ModoBatch') = 1;

    MovieName := GetField(fieldOriginalTitle);
    if MovieName = '' then
      MovieName := GetField(fieldTranslatedTitle);
      
    if ModoBatch or Input('Importar de SDG', 'Introduzca el titulo de la pelicula:', MovieName) then
      if (Trim(MovieName)<> '') then
         BuscarPelicula(UrlEncode(MovieName));
  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 2006-02-11 12:08:31, edited 2 times in total.
antp
Site Admin
Posts: 9630
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Thanks ;)

The script should be labelled as version 2 then, I guess.
gasofa
Posts: 21
Joined: 2005-12-16 15:58:07

Post by gasofa »

Gracias pero a mi siempre me dice "'No se ha podido establecer la conexion."
icecubix
Posts: 32
Joined: 2005-03-30 09:01:20

Post by icecubix »

antp wrote:Thanks ;)
The script should be labelled as version 2 then, I guess.
But it's a totally rewriten script, since SDG.com has changed to SDG.org they have changed totally their html code (now they use vBulletin, before I don't know). I've changed the name from SDG to SDG.org so that there is not confusion. If in spite of that you want I change the version I don't have any problem.

(español) Pero es un script totalmente reescrito. Desde que SDG.com ha cambiado a SDG.org también han cambiado el código html (ahora utilizan vBulletin, antes no lo se). He cambiado el nombre de SDG a SDG.org para que no haya confusión. Si a pesar de eso quieres que le ponga versión 2 yo no tengo ningún inconveniente.

gasofa wrote:Gracias pero a mi siempre me dice "'No se ha podido establecer la conexion.
A mi tambien, la primera vez. La segunda vez que le doy al boton va bien. No se si es por culpa de la página o del script. Investigaré.

(english)Me too, first time. Second time I press the button It works fine. I do not know if it is because of the page or of script. I will investigate.
antp
Site Admin
Posts: 9630
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

icecubix wrote: But it's a totally rewriten script
That's why I suggest "2" and not "1.2" :D
It allows to know that it is a newer script that the old one.
icecubix
Posts: 32
Joined: 2005-03-30 09:01:20

Post by icecubix »

antp wrote:
icecubix wrote: But it's a totally rewriten script
That's why I suggest "2" and not "1.2" :D
It allows to know that it is a newer script that the old one.
Ok, antp, I have edited the script, the name and the subject. Now I'm looking for the reason because of first time It can't establish connection :??:

(español) Ok, he editado el script, el nombre i el asunto. Ahora estoy investigando porque la prima vez no me puede establecer la conexión.
gasofa
Posts: 21
Joined: 2005-12-16 15:58:07

Post by gasofa »

No es por nada icecubix pero a mi ni a la primera ni a la segunda ni a la tercera, nunca conecta :??: :??:
icecubix
Posts: 32
Joined: 2005-03-30 09:01:20

Post by icecubix »

Soy tonto o que? El mensaje lo saco yo mismo!! No me habia dado cuenta, lo siento. Se produce cuando no encuentra la película. Sigo en experimentación por que creo que el servidor se comporta de manera diferente, de momento hay que cambiar la linea

Code: Select all

    ShowMessage('No se ha podido establecer la conexion.');
por esta otra

Code: Select all

    ShowMessage('No se ha han encontrado películas por "' + Nombrepeli + '"');
(English) I'm silly. The message "Is there not connexion" is mine!! It shows when it can't find films. I continue experimenting because I believe the server acts in different way. At the moment you can change the line

Code: Select all

    ShowMessage('No se ha podido establecer la conexion.');
to this one

Code: Select all

    ShowMessage('No se ha han encontrado películas por "' + Nombrepeli + '"');
gasofa
Posts: 21
Joined: 2005-12-16 15:58:07

Post by gasofa »

Creo que no porque ahora siempre dice que no encuentra la peli.
icecubix
Posts: 32
Joined: 2005-03-30 09:01:20

Post by icecubix »

Gracias gasofa, gracias a tu insistencia ;) he encontrado el error !! SDG mete porqueria de vez en cuando dentro del enlace y hace que no encuentre nada. He editado el script y parece que ya funciona correctamente.

(english) Thanks gasofa, thanks to your insistence ;) I have found the error! SDG puts nastiness within the URL once in a while and causes that it does not find anything. I have edited the script and seems that now it works correctly.
icecubix
Posts: 32
Joined: 2005-03-30 09:01:20

Post by icecubix »

Por cierto, la propia SDG ha hecho su propio script, está en su página. No la he probado.

(english) By the way, the own SDG has done their own script, its is in their page. I supose it will work.
icecubix
Posts: 32
Joined: 2005-03-30 09:01:20

Post by icecubix »

Por cierto, podrian haberse rebajado a publicarlo aquí, así uno no estaria haciendo el gilipollas trabajando para nada.
gasofa
Posts: 21
Joined: 2005-12-16 15:58:07

Post by gasofa »

....para nada No, porque yo no voy ni a mirar el suyo cojo el tuyo directamente. GRACIAS.-

Ah perdonar que no traduzca pero de ingles ni papas, lo basico vamos.
Post Reply