(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=Legrad Title=IndexDVD Description= Site=www.index-dvd.com Language=ES Version=1.1 Requires=3.5.0 Comments= License= GetInfo=1 [Options] ***************************************************) program IndexDVD; 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, MovieDate, MovieID, Movie: string; BeginPos, EndPos: Integer; BeginPoss, EndPoss: Integer; begin strPage := GetPage(Address); BeginPos := Pos('en el dominio', strPage); if(BeginPos > -1)then begin PickTreeClear; Delete(strPage, 1, BeginPos); BeginPos := Pos('', 'Cine'); //MovieTitle := AnsiUpFirstLetter(MovieTitle); DeleteTags(MovieTitle); MovieTitle := Caracter(MovieTitle); PickTreeAdd(MovieTitle, MovieAddr); PickTreeSort; BeginPos := Pos(' -1 then begin Line := Page.GetString(LineNr); Item := TextBetween (Line, ' -1 then begin Line := Page.GetString(LineNr); Item := TextBetween (Line, '(', ')'); 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, '>', ''); 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', ''); Item := TextBetween (Item, '>', ''); DeleteTags (Item); Item := Trim(Item ); HTMLDecode(Item); SetField(fieldCountry, Trim (Item)); end; // director LineNr := FindLine(') / / Produce:', Page, 0); if LineNr > 0 then begin Item := copy(Page.Text, pos('>Produce:',Page.Text), length(Page.Text)); Item := TextBetween (Item, '>Produce:', ''); 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, '
  ', 'minutos'); DeleteTags (Item); Item := Trim(Item ); HTMLDecode(Item); SetField(fieldLength, Trim (Item)); end; // sinopsis LineNr := FindLine('Sinopsis', Page, 0); if LineNr > 0 then begin Item := copy(Page.Text, pos('Sinopsis',Page.Text), length(Page.Text)); Item := TextBetween (Item, '#2D2D2D', ''); Item := TextBetween (Item, '>', ''); 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/300/', Page, 0); if LineNr > 0 then begin Item := copy(Page.Text, pos('[img]http://www.index-dvd.com/covers/300/',Page.Text), length(Page.Text)); Item := TextBetween (Item, '[img]http://www.index-dvd.com/covers/300/', '[/img]'); Item := StringReplace(Item, '300', '600'); Item := Trim(Item ); HTMLDecode(Item); GetPicture ('http://www.index-dvd.com/covers/600/'+Item); 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 ); Page.Text := GetPage('http://spanish.imdb.com/title/'+dir); end; // Calificación LineNr := FindLine('
', Page, 0); if LineNr > 0 then begin Item := copy(Page.Text, pos('
',Page.Text), length(Page.Text)); Item := TextBetween (Item, '', '/'); 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, ';">', ''); Item := StringReplace (Item, '...', ' ('); Item := StringReplace (Item, '', ')'+#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.google.es/search?hl=es&num=100&q=' + UrlEncode(MovieName)+'+site%3Ahttp%3A%2F%2Fwww.index-dvd.com&btnG=Buscar&meta=&aq=f&oq='); end.