(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=aviloria (aviloria@yahoo.com) modded by: rodpedja (rodpedja@gmail.com), kreti (bisoft@hotmail.com), MrK, gilistico, juliojs, Albher, Arturo, jacqlittle, AgustinG Title=FilmAffinity (ES) Description=Movie importation script for FilmAffinity Spain Site=https://www.filmaffinity.com Language=ES Version=3.16 Requires=4.2.2 Comments=adaptation for compatibility with 4.2 version. Added Extras capture. Changed Charset ISO-> utf8 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 RequiresMovies=1 [Options] DontAsk=0|0|1=Método rápido: No te pregunta el titulo al principio, ni te pide confirmar si sólo hay un resultado|0=Método lento: Confirmas la información manualmente ActorsInALine=1|0|1=Actores separados por comas|0=Actores en lineas independientes Force350=0|0|1=force the behavior of 3.5.0 version|0=Version auto DontWantExtras=1|1|1=No se recopilan extras|0=Se recopilan extras: enlaces, imágenes GroupImages=1|1|1=Agrupa todas las imagenes en una misnma categoría 'Imagenes'|0=Divide las imágenes por categorias SortByYear=0|0|1=Ordena lista de busqueda por año|0=Ordena lista de busqueda por relevancia SearchByFromToYears=0|0|0=No buscar por año|1=Buscar dentro de un período de años SearchByTitle=1|1|0=No buscar por título|1=Buscar por título SearchByDirector=0|0|0=No buscar por director|1=Buscar por director SearchByCast=0|0|0=No buscar por reparto|1=Buscar por reparto SearchByScript=0|0|0=No buscar por guión|1=Buscar por guión SearchByPhoto=0|0|0=No buscar por fotografía|1=Buscar por fotografía SearchByMusic=0|0|0=No buscar por música|1=Buscar por música SearchByProducer=0|0|0=No buscar por productor|1=Buscar por productor [Parameters] ExtraCriticsLimit=|99|Límite de criticas en Extras ExtraImagesLimit=|99|Límite de imágenes en Extras ExtraTrailersLimit=|99|Límite de Trailers en Extras ***************************************************) program FilmAffinity; const BaseURL = 'https://www.filmaffinity.com'; var MovieName : string; MovieURL : string; MovieYear : string; YearFrom : string; YearTo : string; AdvQuery : string; //------------------------------------------------------------------------------------ function LineDecode(S: string):string; begin S:= UTF8Decode(S); HTMLDecode(S); Result := S; 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; //------------------------------------------------------------------------------------ // // ConvertAlphaNum: Quita todo menos letras (mayusculas y minusculas) y numeros // Function ConvertAlphaNum(s: string) : string; var i: Integer; s2, ch: string; begin s2 := ''; For i := 1 To Length(s) do begin ch := copy(s, i, 1); if ((ch >= 'a') and (ch <= 'z')) or ((ch >= '0') and (ch <= '9')) or ((ch >= 'A') and (ch <= 'Z')) then s2 := s2 + ch; end; result := s2; end; //------------------------------------------------------------------------------------ function TextBetween(S: string; StartTag: string; EndTag: string): string; var ini, fin, lenS: Integer; begin Result := ''; lenS := Length(S); ini := Pos(StartTag, S); if ini <> 0 then begin ini := ini + Length(StartTag); S:= Copy(S,ini,lenS-ini+1); ini:=1; fin := Pos(EndTag, S); if (fin <> 0) and (fin > ini) then Result := Copy(S, ini, fin - ini); end; end; //------------------------------------------------------------------------------------ function TextAfter(S: string; StartTag: string): string; var ini: Integer; begin ini := Pos(StartTag, S); if ini <> 0 then Result := Copy(S, ini + Length(StartTag), Length(S)-ini+1) else Result := ''; end; //------------------------------------------------------------------------------------ function DeleteTags(S: string): string; var n, len, tag: Integer; c, p: char; begin len := Length(S); tag := 0; p := ' '; Result := ''; for n := 1 to len do begin c := Copy(S,n,1); // Eliminamos los tabuladores if c = #9 then c := ' '; // Los espacios redundantes no se procesan if (c <> ' ') or (p <> ' ') then begin // Eliminamos los tags de HTML if tag = 0 then begin if c <> '<' then begin Result := Result + c; p := c; end else tag := 1; end else if c = '>' then tag := 0; end; end if p = ' ' then Result := Copy(Result, 1, Length(Result) - 1); end; //------------------------------------------------------------------------------------ function Occurrences(Subtext: string; Text: string): integer; var offset: Integer; begin result := 0; while true do begin offset := Pos(Subtext, Text); if offset = 0 then break; Result := Result + 1; Text := TextAfter(Text, Subtext); end; end; //------------------------------------------------------------------------------------ procedure AnalyzeAdvPage(Address: string); var Page: TStringList; LineNr,LineNrax,NextPageNr,Pages: Integer; Line, PageNr: string; Count: Integer; MovieTitle, MovieAddress, MovieDirector: string; YearAnt: string; PagSig:String; begin Count := 0; Page := TStringList.Create; Page.Text := GetPage(Address); PickTreeClear; // Get how much search results have been found LineNr := FindLine('