Script IndexDVD-IMDB V1.1

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
legrad
Posts: 109
Joined: 2006-02-11 09:46:06
Location: Lerida-Spain

Script IndexDVD-IMDB V1.1

Post by legrad »

Version actualizada de la anterior, esta version dispone de pantalla para elegir datos entre IndexDVD y IMDB, logicamente al escoger la opcion IMDB, el script es un poco mas lento ya que tiene que manejar una segunda web la de IMDB de esta descarga el rating y una lista mas extensa del reparto.


Code: Select all

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

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

[Infos]
Authors=Legrad
Title=IndexDVD-IMDB
Description=
Site=www.index-dvd.com
Language=ES
Version=1.1
Requires=3.5.0
Comments=
License=
GetInfo=1

[Options]

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

 program IndexDVD_IMDB;
var
  MovieName: string;
  MovieURL: string;

//------------------------------------------------------------------------------------
function Comillas(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 = '''' then
        c := ' ';
        t := t + c;
   end
   s := t;
   result := t;
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 Caracter(str1: string) :string;
begin
          str1 := StringReplace(str1, 'á' , 'à');
          str1 := StringReplace(str1, 'é' , 'é');
          str1 := StringReplace(str1, 'í',  'í');
          Str1 := StringReplace(Str1, 'ó', 'ó');
          str1 := StringReplace(str1, 'ú' , 'ú');
          str1 := StringReplace(str1, 'ñ' , 'ñ');
          str1 := StringReplace(str1, 'Ã�', 'Á');
          str1 := StringReplace(str1, 'É', 'É');
          str1 := StringReplace(str1, 'Ã�', 'Í');
          str1 := StringReplace(str1, 'Ó', 'Ó');
          str1 := StringReplace(str1, 'Ú', 'Ú');
          str1 := StringReplace(str1, 'Ñ', 'Ñ');
          str1 := StringReplace(str1, 'Â', '');

result := str1;
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,MovieTitle1, MovieDate, MovieID, Movie: string;
  BeginPos, EndPos: Integer;

begin
  strPage := GetPage(Address);
  BeginPos := Pos('ficha(s) encontrada(s)</b>', strPage);
  if(BeginPos > -1)then
    begin
      PickTreeClear;
      Delete(strPage, 1, BeginPos);
      BeginPos := Pos('class=''texto3''> <a href=''http://www.index-dvd.com', strPage);
      EndPos := 1;
      while ((BeginPos > 0) and (EndPos > 0)) do

        begin
          Delete(strPage, 1, BeginPos);
          EndPos := Pos('title=', strPage);
          MovieId := Copy(strPage,+54, EndPos-54);
          MovieId  := StringReplace(MovieId , '''', '');
          MovieAddr := 'http://www.index-dvd.com' + '/'+MovieId;
          MovieTitle1 := MovieId;
          MovieTitle1  := TextBetween(MovieTitle1 , '/', '-');
          MovieTitle1  := StringReplace(MovieTitle1 , 'blu', 'BLU-RAY');
          MovieTitle1  := StringReplace(MovieTitle1 , 'dvd', 'DVD');
          MovieTitle1  := StringReplace(MovieTitle1 , 'cine', 'CINE');
          MovieTitle1  := StringReplace(MovieTitle1 , 'hd', 'HD');
          BeginPos := Pos('self''>',strPage);
          EndPos := Pos('</a>', strPage);
          MovieTitle := Copy(strPage,BeginPos, EndPos);
          MovieTitle  := TextBetween(MovieTitle , '>', '</a>');
          DeleteTags(MovieTitle);
          MovieTitle := UTF8Decode(MovieTitle);
          PickTreeAdd((MovieTitle+'  ('+MovieTitle1+')'), MovieAddr);
          PickTreeSort;
          BeginPos := Pos('class=''texto3''> <a href=''http://www.index-dvd.com', 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;
  Item2: string;
  dir: string;
  Comments: string;
  Actors: string;
  Directors: string;
  Description: string;
  CodigoDelSoporte:string;
  TipoDeSoporte: string;
  Busca: integer;


begin
  Description := '';

  // URL
  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>', 'index-dvd');
  Item := StringReplace (Item, 'Blu-Ray', '');
  Item := StringReplace (Item, 'Cine', '');
  Item := StringReplace (Item, 'DVD Video', '');
  Item := StringReplace (Item, 'HD-DVD', '');
  Item := StringReplace (Item, '|', '');
  SetField(fieldTranslatedTitle, Trim (Item));

  // Titulo Original
  LineNr := FindLine('title="Buscar ', Page, 0);
  if LineNr <> -1 then
  begin
    Line := Page.GetString(LineNr);
    Item := TextBetween (Line, '<a href="http://www.movieweb.com/search/?search=', '"');
    HTMLRemoveTags (Item);
    HTMLDecode(Item);
    SetField(fieldOriginalTitle, Trim (Item));
  end;
  // año
  LineNr := FindLine('Ficha de', Page, 0);
  if LineNr <> -1 then
  begin
    Line := Page.GetString(LineNr);
    Item := TextBetween (Line, '<b>(', ')</b>');
    HTMLRemoveTags (Item);
    HTMLDecode(Item);
    SetField(fieldYear, Trim (Item));
  end;
  // Categoria
  LineNr := FindLine('minutos /', Page, 0);
  if LineNr > 0 then
  begin
    Item := copy(Page.Text, pos('minutos /',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '>', '</font>');
    DeleteTags (Item);
    Item   := AnsiUpFirstLetter(Item );
    Item  := Trim(Item );
    HTMLDecode(Item);
    SetField(fieldCategory, Trim (Item));
  end;
   // pais
  LineNr := FindLine('title="Ficha de', Page, 0);
  if LineNr > 0 then
  begin
    Item := copy(Page.Text, pos('title="Ficha de',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '#9A9A9A', '</font>');
    Item := TextBetween (Item, '>', '</font>');
    DeleteTags (Item);
    Item  := Trim(Item );
    HTMLDecode(Item);
    SetField(fieldCountry, Trim (Item));
  end;
   // director
  LineNr := FindLine(')</b></font> / <a href=', Page, 0);
  if LineNr > 0 then
  begin
    Item := copy(Page.Text, pos(')</b></font> / <a href=',Page.Text), length(Page.Text));
    Item := TextBetween (Item, 'busqueda=', 'title=');
    HTMLRemoveTags (Item);
    Item   := AnsiUpFirstLetter(Item );
    Item   := Comillas(Item );
    Item  := Trim(Item );
    HTMLDecode(Item);
    SetField(fieldDirector, Trim (Item));
  end;
  // productor
  LineNr := FindLine('>Produce:</font></b>', Page, 0);
  if LineNr > 0 then
  begin
    Item := copy(Page.Text, pos('>Produce:</font></b>',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '>Produce:</font></b>', '</span></td></tr>');
    HTMLRemoveTags (Item);
    Item   := AnsiUpFirstLetter(Item );
    Item  := Trim(Item );
    HTMLDecode(Item);
    SetField(fieldProducer, Trim (Item));
  end;


  // Duracion
  LineNr := FindLine('title="Ficha de', Page, 0);
  if LineNr > 0 then
  begin
    Item := copy(Page.Text, pos('title="Ficha de',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '</b><br>  ', 'minutos');
    DeleteTags (Item);
    Item  := Trim(Item );
    HTMLDecode(Item);
    SetField(fieldLength, Trim (Item));
  end;
  // Reparto
  LineNr := FindLine('href="http://www.index-dvd.com/calendar_ult.php?', Page, 0);
  if LineNr > 0 then
  begin
    Item := copy(Page.Text, pos('class=''link4b''>',Page.Text), length(Page.Text));
    Item := TextBetween (Item, 'class=''link4b''>', '</a><br><br>');
    DeleteTags (Item);
    Item  := Trim(Item );
    HTMLDecode(Item);
    SetField(fieldActors, Trim (Item));
  end;
  
  // sinopsis
 LineNr := FindLine('Sinopsis</font>', Page, 0);
  if LineNr > 0 then
  begin
    Item := copy(Page.Text, pos('Sinopsis</font>',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '#2D2D2D', '</font></td></tr></table>');
    Item := TextBetween (Item, '>', '</font></td></tr></table>');
    Item := StringReplace (Item, #13#10, '');
    DeleteTags (Item);
    Item  := Trim(Item );
    HTMLDecode(Item);
    SetField(fieldDescription, Trim (Item));
  end;

  // Caratula
  LineNr := FindLine('[img]http://www.index-dvd.com/covers', Page, 0);
  if LineNr > 0 then
  begin
    Item := copy(Page.Text, pos('[img]http://www.index-dvd.com/covers',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '[img]http://www.index-dvd.com/covers', '[/img]');
    Item := StringReplace(Item, '300', '600');
    Item  := Trim(Item );
    HTMLDecode(Item);
    GetPicture ('http://www.index-dvd.com/covers'+Item);
     end;




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


//begin

//end;
//------------------------------------------------------------------------------------
     // imdb
 LineNr := FindLine('http://spanish.imdb.com/title/', Page, 0);
  if LineNr > 0 then
  begin
    dir := copy(Page.Text, pos('http://spanish.imdb.com/title/',Page.Text), length(Page.Text));
    dir  := TextBetween (dir , 'http://spanish.imdb.com/title/', '/');
    dir  := StringReplace (dir , #13#10, '');
    DeleteTags (dir );
    Item  := Trim(dir  );
    HTMLDecode(dir );
    //
    PickListAdd('Descargar Reparto de IndexDVD');
    PickListAdd('Descargar Reparto y calificación de IMDB');


PickListExec(GetField(fieldMedia),Item);

if Item = '' then
SetField(fieldMedia, Item);
if Item = 'Descargar Reparto y calificación de IMDB' then

    //
    Page.Text := GetPage('http://spanish.imdb.com/title/'+dir);
    PickListClear;
end;


 // Calificación
  LineNr := FindLine('<div class="starbar-meta">', Page, 0);
  if LineNr > 0 then
  begin
    Item := copy(Page.Text, pos('<div class="starbar-meta">',Page.Text), length(Page.Text));
    Item := TextBetween (Item, '<b>', '/');
    SetField(fieldRating, Trim (Item));
  end;

  // Reparto
  LineNr := FindLine('Reparto', Page, 0);
  if LineNr > 0 then
  begin
    Item := copy(Page.Text, pos('Reparto',Page.Text), length(Page.Text));
    Item := TextBetween (Item, ';">', '</td></tr></table>');
    Item := StringReplace (Item, '...', ' (');
    Item := StringReplace (Item, '</td></tr>', ')'+#13#10);
    Item := StringReplace (Item, '  ', '');
    DeleteTags (Item);
    Item  := Trim(Item );
    HTMLDecode(Item);
    SetField(fieldActors, Trim (Item));
  end;
  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('IndexDVD', 'Buscar:', MovieName);

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

   AnalyzePage('http://www.index-dvd.com/calendar_ult.php?tema=&order=tit&busqueda=' + UrlEncode(MovieName)+'&Submit.x=0&Submit.y=0');
end.
antp
Site Admin
Posts: 9636
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Thanks
Post Reply