(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=gilistico Title=MXP (ES) Description= Movie importation script for MXP (Spain) Site=http://www.mxp.tv Language=ES Version=1.0 Requires=3.5.0 Comments= First version License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. | GetInfo=1 [Options] ***************************************************) program mxp; var MovieName: string; //------------------------------------------------------------------------------------ function DeleteTags(var S: string): string; var n,len, tag, space: Integer; c: char; t: String; begin tag := 0; space := 0; t := ''; len := length(s); for n :=1 to len do begin c := Copy(s,n,1); if (c= #13) OR (c=#10) OR (c= #32) OR (c=#9) then begin if space = 1 then continue; c := #32; space := 1; end else begin space := 0; end; 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; //------------------------------------------------------------------------------------ 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 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; //------------------------------------------------------------------------------------ procedure AnalyzePage(Address: string); var Page: TStringList; LineNr, LineEnd, Count: Integer; Line, Line2: string; Title, DirURL: string; Pagina: integer; i: Integer; begin Count := 0; Page := TStringList.Create; Page.Text := GetPage(Address); PickTreeClear; LineNr := FindLine('La búsqueda que has realizado no ha obtenido ningún resultado.', Page, 0); if LineNr <> -1 then begin ShowMessage('No se ha obtenido ningún resultado.'); Page.Free; exit; end; LineNr := 0; Pagina := 1; While TRUE do begin LineNr := FindLine('accion=ficha', Page, LineNR+1); LineEnd := FindLine('', Page, LineNR+1); if LineNR = -1 then begin LineNr := FindLine('SIGUIENTE', Page, LineNR+1); if LineNR = -1 then breaK; Pagina := Pagina + 1; Page.Text := GetPage(Address+'&actual='+IntToStr(Pagina)); LineNr := 0; continue; end; Line := Page.GetString(LineNr)+' '; for i := Linenr+1 to LineEND+1 do Line := Line + Page.GetString(i); DirURL := TextBetween (Line, '', ''); if (DirURL ='') OR (Title = '') then continue; DirURL := 'http://www.mxp.tv/' + DirURL; DeleteTags(Title); HTMLDecode(Title); PickTreeAdd(Title, DirURL); Count := Count +1; end; if Count = 0 then begin ShowMessage('No se han encontrado registros'); Page.Free; exit; end; if PickTreeExec(Address) then AnalyzeMovie(Address); Page.Free; end; function GetLine(Page: TStringList; TextoBusqueda1: string; TextoBusqueda2: string; flag: Integer): string; var Item: string; Line: string; LineNr: Integer; begin LineNr := FindLine(TextoBusqueda1, Page, 0); if LineNr = -1 then begin result := ''; end else begin Line := Page.GetString(LineNr); Line := TextoBusqueda1 + TextBetween (Line, TextoBusqueda1, ''); while TRUE do begin LineNr := LineNr + 1; Line := Line + Page.GetString(LineNr); if pos(TextoBusqueda2, Line) > 0 then break; end; Item := TextBetween (Line, TextoBusqueda1, TextoBusqueda2); Item := DeleteTags(Item); HTMLDecode(Item); if flag = 1 then Item := StringReplace(Item, '.', ''); result := Item; end; end; //------------------------------------------------------------------------------------ procedure AnalyzeMovie(Address: string); var Page: TStringList; LineNr: Integer; Line: string; Item: string; Count: Integer; Cartel: string; Direccion: string; Flag: Integer; Comments: String; begin SetField(fieldURL, Address); Page := TStringList.Create; Page.Text := GetPage(Address); Comments := ''; // Titulo español Item := GetLine(Page, 'color="#CC3333" size="3">', ' ', 0); If Item <> '' then begin SetField(fieldTranslatedTitle, Trim (Item)); SetField(fieldOriginalTitle,Trim (Item)); end; // Titulo original Item := GetLine(Page, 'Título Original:', '
', 0); if Item <> '' then SetField(fieldOriginalTitle,Trim (Item)); // Año Item := GetLine(Page, 'Año:', '
', 0); if Item <>'' then SetField(fieldYear, Trim (Item)); // Pais Item := GetLine(Page, 'País:', '
', 0); if Item <>'' then SetField(fieldCountry, Trim (Item)); // Duración Item := GetLine(Page, 'Duración:', 'min', 1); if Item <>'' then SetField(fieldLength, Trim (Item)); // Dirección Item := GetLine(Page, 'Dirección:', '
', 1); if Item <>'' then SetField(fieldDirector, Trim (Item)); // Interpretación Item := GetLine(Page, 'Intérpretes:', '
', 0); if Item <>'' then SetField(fieldActors, Trim (Item)); // genero Item := GetLine(Page, 'Género:', '
', 1); if Item <>'' then SetField(fieldCategory, Trim (Item)); // Sinopsis Item := GetLine(Page, 'td rowspan="2" align="left" valign="top">', '
', 0); if Item <>'' then SetField(fieldDescription, Trim (Item)); //HTMLDecode(Comments); //SetField(fieldComments, Comments); // Imagen Item := GetLine(Page, '