Script Filmaffinity 3.0.5 no funciona
-
- Posts: 99
- Joined: 2010-02-22 23:15:05
Script Filmaffinity 3.0.5 no funciona
Ha dejado de funcionar el Script de Filmaffinity 3.0.5 de la última versión de Ant Movie Catalog. No salen ni directores, ni writers, ni críticas ni las críticas ampliadas o extras que muestra y antes salían en la barra del costado y que hace tiempo ha dejado de funcionar, no dije nada, porque lo utilizaba y contadas ocasiones, pero reconozco que es necesaria.
Por favor agradezco la ayuda para reparar este error.
Gracias
Por favor agradezco la ayuda para reparar este error.
Gracias
Re: Script Filmaffinity 3.0.5 no funciona
A mi me funciona correcto, excepto la importación de las críticas.
Para solucionarlo he modificado la línea 604 de la siguiente forma:
Original: LineNr := LineNr + 1;
Modificada: LineNr := LineNr + 2;
Con esto se soluciona el problema de importación de críticas, pero todo lo demás ya funcionaba correctamente.
Para solucionarlo he modificado la línea 604 de la siguiente forma:
Original: LineNr := LineNr + 1;
Modificada: LineNr := LineNr + 2;
Con esto se soluciona el problema de importación de críticas, pero todo lo demás ya funcionaba correctamente.
Re: Script Filmaffinity 3.0.5 no funciona
Hola.
Ayer me pasaba lo mismo que a masterchipo.
Hoy me ha vuelto a funcionar sin problema pero ayer me ocurría exacto igual que a él..
Director. Guion. Interpretes no iba.
Hoy todo ok
Ayer me pasaba lo mismo que a masterchipo.
Hoy me ha vuelto a funcionar sin problema pero ayer me ocurría exacto igual que a él..
Director. Guion. Interpretes no iba.
Hoy todo ok
-
- Posts: 99
- Joined: 2010-02-22 23:15:05
Re: Script Filmaffinity 3.0.5 no funciona
Ha vuelto a funcionar, pero lo que no puedo modificar es eso que mencionas, el de modificar el script con las críticas.m2s wrote: ↑2019-03-15 19:35:45 A mi me funciona correcto, excepto la importación de las críticas.
Para solucionarlo he modificado la línea 604 de la siguiente forma:
Original: LineNr := LineNr + 1;
Modificada: LineNr := LineNr + 2;
Con esto se soluciona el problema de importación de críticas, pero todo lo demás ya funcionaba correctamente.
Gracias
PD: Pude moficar y tampoco funciona, y me refiero a mostrar en la barra lateral algo que en inglés dice "display extras", en la segunda pestaña de configuración del programa donde dice película, abajo añadir, eliminar, aleatorio, cambiar número, carátula y abajo "display extras" y en la barra lateral te aparecen las críticas ampliadas que es una excelente función del programa.
Gracias
Re: Script Filmaffinity 3.0.5 no funciona
Hay que hacer la misma modificación que en la linea 604 también en la línea 670.
-
- Posts: 99
- Joined: 2010-02-22 23:15:05
Re: Script Filmaffinity 3.0.5 no funciona
Pues a mi si que me funciona. A ver si la pelicula que buscas no tiene enlaces a críticas.
De todas formas dejo aqui la version que me funciona numerada como 3.06
De todas formas dejo aqui la version que me funciona numerada como 3.06
Code: Select all
(***************************************************
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.06
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=0|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=0|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|99|Límite de criticas en Extras
ExtraImagesLimit=99|99|Límite de imágenes en Extras
ExtraTrailersLimit=99|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('<div class="float-right"><b>', Page, 0);
Count := StrToInt(TextBetween(Page.GetString(LineNr),'<div class="float-right"><b>','</b>' ),0);
if LineNr <> -1 then
// Add the results to the PickTree
if Count = 0 then
ShowMessage('No se ha encontrado ningún registro')
else
begin
PageNr := '';
LineNr := 0;
while true do
begin
LineNr := FindLine('<div class="mc-title"><a', Page, LineNr + 1);
if LineNr = -1 then
begin
LineNr := FindLine('<span class="current">', Page, 0);
if LineNr = -1 then
break;
Line := Page.GetString(LineNr);
Pages := Occurrences('<a href="advsearch.php?page=', Line);
PageNr := TextBetween(Line, '<span class="current">', '</span>');
if StrToInt(PageNr, 0) = Pages then
break;
NextPageNr := StrToInt(PageNr, 0) + 1;
PagSig:= 'https://www.filmaffinity.com/es/advsearch.php?page=' + IntToStr(NextPageNr) + '&stext=' + TextBetween(Line, '&stext=', '">');
PagSig:=StringReplace(PagSig,'&','&');
Page.Text := GetPage(PagSig);
LineNr := 0;
continue;
end;
Line := Page.GetString(LineNr);
MovieAddress := TextBetween(Line, 'href="', '.html"') + '.html';
MovieTitle := TextBetween(Line, 'title="', '"');
MovieTitle := DeleteTags(MovieTitle);
MovieTitle := LineDecode(MovieTitle);
//-------------------------------------
MovieYear := TextBetween(Line, '</a> (', ') <img src="/imgs/countries/');
if MovieYear = '' Then MovieYear := YearAnt
else YearAnt := MovieYear;
Line:= Page.GetString(LineNr-9);
//------------------------------------
LineNrax := FindLine('div class="mc-director">', Page, LineNr);
if LineNrax <> -1 then
begin
Line:= Page.GetString(LineNrax+1);
MovieDirector:= TextBetween(Line, 'title="', '"');
MovieDirector:= DeleteTags(MovieDirector);
MovieDirector:= LineDecode(MovieDirector);
end;
//------------------------------------
if (Length(MovieAddress) <> 0) and (Length(MovieTitle) <> 0) then
PickTreeAdd(MovieTitle+' ('+MovieYear+')'+' -<'+MovieDirector+'>-', BaseURL + MovieAddress);
end;
if ((Count = 1) and (GetOption('DontAsk') = 1)) then
AnalyzeMoviePage(BaseURL + MovieAddress)
else
begin
//
// PickTreeSort; // Si se quiere clasificar por orden alfabetico hay que activar el PickTreeSort, quitar las 2
// // las 2 barras "//" que hay a la izquierda la instrucción PickTreeSort y ya esta.
//
PickTreeExec(Address);
AnalyzeMoviePage(Address)
end
end;
Page.Free;
end;
//------------------------------------------------------------------------------------
procedure AnalyzePage(Address: string);
var
Page: TStringList;
LineNr,LineNrax: Integer;
Line: string;
Count: Integer;
MovieTitle, MovieAddress, MovieDirector, MovieYear: string;
YearAnt: string;
PagSig:String;
begin
Count := 0;
Page := TStringList.Create;
Page.Text := GetPage(Address);
PickTreeClear;
// Get how much search results have been found
// No encuentra las palabras "Resultados por título"¿?, busco la
// linea anterior, y cojo la siguiente linea, le quito los espacios
// y me quedo con el numerode peliculas.
LineNr := FindLine('<div class="sub-header-search">', Page, 0);
if LineNr <> -1 then
begin
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
Line := DeleteTags(Line);
Line := ConvertAlphaNum(Line);
Count := StrToInt(Line, 0);
end;
// Add the results to the PickTree
if Count = 0 then
ShowMessage('No se ha encontrado ningún registro')
else
begin
LineNr := 0;
while true do
begin
LineNr := FindLine('<div class="mc-title"><a', Page, LineNr + 1);
if LineNr = -1 then
begin
LineNr := FindLine('siguientes >>', Page, 0);
if LineNr = -1 then
break;
Line := Page.GetString(LineNr);
PagSig:= 'https://www.filmaffinity.com/es/search.php' + TextBetween(Line, '<a href="search.php', '"><div class="' );
PagSig:=StringReplace(PagSig,'&','&');
Page.Text := GetPage(PagSig);
LineNr := 0;
continue;
end;
Line := Page.GetString(LineNr);
MovieAddress := TextBetween(Line, 'href="', '.html"') + '.html';
MovieTitle := TextBetween(Line, 'title="', '"');
MovieTitle := DeleteTags(MovieTitle);
MovieTitle := LineDecode(MovieTitle);
//-------------------------------------
Line:= Page.GetString(LineNr-9);
MovieYear := TextBetween(Line, 'ye-w">', '</div>');
if MovieYear = '' Then MovieYear := YearAnt
else YearAnt := MovieYear;
//------------------------------------
LineNrax := FindLine('div class="mc-director">', Page, LineNr);
if LineNrax <> -1 then
begin
Line:= Page.GetString(LineNrax+1);
MovieDirector:= TextBetween(Line, 'title="', '"');
MovieDirector:= DeleteTags(MovieDirector);
MovieDirector:= LineDecode(MovieDirector);
end;
//------------------------------------
if (Length(MovieAddress) <> 0) and (Length(MovieTitle) <> 0) then
PickTreeAdd(MovieTitle+' ('+MovieYear+')'+' -<'+MovieDirector+'>-', BaseURL + MovieAddress);
end;
if ((Count = 1) and (GetOption('DontAsk') = 1)) then
AnalyzeMoviePage(BaseURL + MovieAddress)
else
begin
//
// PickTreeSort; // Si se quiere clasificar por orden alfabetico hay que activar el PickTreeSort, quitar las 2
// // las 2 barras "//" que hay a la izquierda la instrucción PickTreeSort y ya esta.
//
PickTreeExec(Address);
AnalyzeMoviePage(Address)
end
end;
Page.Free;
end;
//------------------------------------------------------------------------------------
procedure AnalyzeMoviePage(Address: string);
var
Page: TStringList;
LineNr, LineInc: Integer;
Line: string;
Item: string;
Comments: string;
CharStar: string;
auxItem: string;
begin
Comments := '';
// URL
SetField(fieldURL, Address);
Page := TStringList.Create;
Page.Text := GetPage(Address);
// Translated Title
LineNr := FindLine('<h1 id="main-title">', Page, 0);
Line := Page.GetString(LineNr+1);
Item := DeleteTags(TextBetween(Line, '<span itemprop="name">', '</span>'));
Item := LineDecode(Item);
SetField(fieldTranslatedTitle, Item);
// Picture
LineNr := FindLine('href="https://pics.filmaffinity.com/', Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
Item := TextBetween(Line, '<a class="lightbox" style="display: block;" href="', '" title="');
if Length(Item) = 0 then
Item := TextBetween(Line, '" src="', '"></a>');
Item := StringReplace(Item,'https://','http://');
GetPicture(Item);
end;
// Rating
LineNr := FindLine('<div id="movie-rat-avg" itemprop="ratingValue"', Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 1);
Item := DeleteTags(Line);
Item := LineDecode(Item);
SetField(fieldRating, StringReplace(Item, ',', '.'));
end;
// Original Title
LineNr := FindLine(UTF8Encode('<dt>Título original</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 1);
// Eliminar aka
if Pos('>aka <',Line) <>0 then
Line:= StringReplace(Line,'>aka <','');
Item := DeleteTags(TextBetween(Line, '<dd>', '</dd>'));
Item := LineDecode(Item);
if Length(Item) = 0 then
begin
Line := Page.GetString(LineNr + 2);
// Eliminar aka
if Pos('>aka <',Line) <>0 then
Line:= StringReplace(Line,'>aka <','');
Item := DeleteTags(Line);
Item := LineDecode(Item);
end;
SetField(fieldOriginalTitle, Item);
end;
// Year
LineNr := FindLine(UTF8Encode('<dt>Año</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 1);
Item := DeleteTags(TextBetween(Line, '">', '</dd>'));
Item := LineDecode(Item);
SetField(fieldYear, Item);
end;
// Length
LineNr := FindLine(UTF8Encode('<dt>Duración</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 1);
Item := DeleteTags(TextBetween(Line, 'duration">', 'min.</dd>'));
Item := LineDecode(Item);
SetField(fieldLength, Item);
end;
// Country
LineNr := FindLine(UTF8Encode('<dt>País</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 1);
Item := DeleteTags(TextBetween(Line, 'title="', '"></span'));
Item := LineDecode(Item);
SetField(fieldCountry, Item);
end;
// Director
LineNr := FindLine(UTF8Encode('class="directors">'), Page, LineNr);
if LineNr <> -1 then
begin
LineNr := LineNr + 3;
Line := Page.GetString(LineNr);
Item := TextBetween(Line,'"name">','</span>');
while Pos (',', Line) <> 0 do
begin
Item := Item + ', ';
LineNr := LineNr + 3;
Line := Page.GetString(LineNr);
auxItem := TextBetween(Line,'"name">','</span>');
Item := Item + auxItem;
end;
Item := LineDecode(Item);
SetField(fieldDirector, Item);
end;
// Script writer
LineNr := FindLine(UTF8Encode('<dt>Guion</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 1);
Item := TextBetween(Line, '<span>', '</div>');
Item := LineDecode(Item);
Item := DeleteTags(Item);
if ((CheckVersion(4,2,0) = true) and (GetOption('Force350') = 0)) then SetField(fieldWriter, Item)
else Comments := Comments + 'Guión: ' + Item + #13#10 + #13#10;
end;
// Composer
LineNr := FindLine(UTF8Encode('Música'), Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 1);
Item := TextBetween(Line, '<span>', '</div>');
Item := LineDecode(Item);
Item := DeleteTags(Item);
if ((CheckVersion(4,2,0) = true) and (GetOption('Force350') = 0)) then SetField(fieldComposer, Item)
else Comments := Comments + 'Música: ' + Item + #13#10 + #13#10;
end;
// Photography
LineNr := FindLine(UTF8Encode('<dt>Fotografía</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 1);
Item := TextBetween(Line, '<span>', '</div>');
Item := LineDecode(Item);
Item := DeleteTags(Item);
Comments := Comments + 'Fotografía: ' + Item + #13#10 + #13#10;
end;
// Actors
LineNr := FindLine(UTF8Encode('<dt>Reparto</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
Item := '';
while true do
begin
LineNr := FindLine('itemprop="name">', Page, LineNr);
if LineNr = -1 then break;
begin
if Item <> '' Then Item := Item + ', ';
Line := Page.GetString(LineNr);
Item := Item + TextBetween(Line, 'name">', '</span');
LineNr:=LineNr+1
end
end;
if GetOption('ActorsInALine') = 0 then
Item := StringReplace(Item, ', ', #13#10);
SetField(fieldActors, LineDecode(Item));
end;
// Productor
LineNr := FindLine(UTF8Encode('<dt>Productora</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 1);
Item := DeleteTags(TextBetween(Line, '<dd>', '</dd>'));
Item := LineDecode(Item);
SetField(fieldProducer, Item);
end;
// Category
LineNr := FindLine(UTF8Encode('<dt>Género</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 2);
Item := DeleteTags(Line);
Item := LineDecode(Item);
Item := StringReplace(Item, ' | ', ', ');
Item := StringReplace(Item, '. ', ', ');
SetField(fieldCategory, Item);
end;
// Official Webpage
LineNr := FindLine(UTF8Encode('<dt>Web oficial</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 1);
Item := DeleteTags(TextBetween(Line, ' href="', '">'));
Item := LineDecode(Item);
Comments := Comments + 'Web oficial: ' + Item + #13#10 + #13#10;
end;
// Synopsis
LineNr := FindLine(UTF8Encode('<dt>Sinopsis</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr + 1);
Item := DeleteTags(Line);
Item := LineDecode(Item);
SetField(fieldDescription, Item);
end;
// Awards
LineNr := FindLine(UTF8Encode('<dt>Premios</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
Comments := Comments + 'Premios: ' + #13#10;
while Pos ('</dd>', Line) = 0 do
begin
if Pos ('<span id="show-all-awards">', Line) = 0 then
begin
Item := DeleteTags(Line);
Item := LineDecode(Item);
if (Length(Item) <> 0) then
begin
Comments := Comments + ' - ' + Item + #13#10;
end;
end;
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
end;
Comments := Comments + #13#10;
end;
// Critic
LineNr := FindLine(UTF8Encode('<dt>Críticas</dt>'), Page, LineNr);
if LineNr <> -1 then
begin
// El unico objeto de esta linea es poder presentar en el foro el listado
// del script sin que se produzca la conversión del caracter estrella
CharStar := '&'+'#9733;';
Comments := Comments + 'Críticas: ' + #13#10 + #13#10;
LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1);
while LineNr <> -1 do
begin
LineNr := LineNr + 2;
Line := Page.GetString(LineNr);
if Pos (UTF8Encode('<a title="Leer crítica completa" href='), Line) <> 0 then
begin
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
end;
Line:= StringReplace(Line, CharStar, '*');
Item := DeleteTags(Line);
Item := LineDecode(Item);
if (Length(Item) <> 0) then
begin
Comments := Comments + Item + #13#10;
LineNr := FindLine('div class="pro-crit-med"', Page, LineNr + 1);
Line := Page.GetString(LineNr);
Item := DeleteTags(TextBetween(Line, ' itemprop="author">', '<i'));
Item := LineDecode(Item);
if (Length(Item) <> 0) then
begin
Comments := Comments + Item + #13#10;
end;
Comments := Comments + '________________________________________' + #13#10 + #13#10;
end;
LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1)
end;
end;
HTMLDecode(Comments);
SetField(fieldComments, Comments);
if GetOption('DontWantExtras') = 0 then
AnalyzeExtras(Page,Address);
end;
//------------------------------------------------------------------------------------
// Extras
procedure AnalyzeExtras(Page: TStringList; Address: string);
var
LineNr,NumImages,NumTrailers, i,CountC: Integer;
Line: string;
TrailersAddress: string;
ImagesAddress: string;
ImageTitle: string;
ExtraIndex: Integer;
ExtraString: string;
ExtraURL: string;
ExtraTagBase: string;
LimitImages,LimitTrailers,LimitCritics: Integer;
begin
ExtraTagBase := 'FA'+TextBetween(Address, '/film', '.html');
ClearExtrasOfScript;
LimitImages := StrtoInt (GetParam('ExtraImagesLimit'),0);
if LimitImages < 0 then LimitImages := 0;
LimitTrailers := StrtoInt (GetParam('ExtraTrailersLimit'),0);
if LimitTrailers < 0 then LimitTrailers := 0;
LimitCritics := StrtoInt (GetParam('ExtraCriticsLimit'),0);
if LimitCritics < 0 then LimitCritics := 0;
// Enlaces a Criticas
LineNr := FindLine(UTF8Encode('<dt>Críticas</dt>'), Page, LineNr);
CountC := 0;
if LineNr <> -1 then
begin
LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1);
while LineNr <> -1 do
begin
LineNr := LineNr + 2;
Line := Page.GetString(LineNr);
if Pos (UTF8Encode('<a title="Leer crítica completa" href='), Line) <> 0 then
begin
Line := Page.GetString(LineNr);
ExtraURL:= TextBetween(Line, 'href="', '" ');
if (Length(ExtraURL))>0 then
begin
ExtraIndex := AddExtra();
SetExtraField(ExtraIndex, extraFieldURL, ExtraURL);
SetExtraField(ExtraIndex, extraFieldCategory, 'Críticas');
SetExtraField(ExtraIndex, extraFieldTitle, TextBetween(ExtraURL, '//', '/'));
SetExtraField(ExtraIndex, extraFieldTag, ExtraTagBase+'C'+IntToStr(ExtraIndex));
end;
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
end;
LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1);
CountC := CountC+1;
if CountC = LimitCritics then
break;
end;
end;
// Imágenes y Trailers
NumTrailers := 0;
NumImages := 0;
LineNr := FindLine(UTF8Encode('>Tráilers <em>'), Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
NumTrailers := StrToInt(TextBetween(Line, '<em>[', ']</em>'),0);
TrailersAddress := TextBetween(Line, 'href="', '"');
end
LineNr := FindLine(UTF8Encode('>Imágenes <em>'), Page, LineNr+1);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
NumImages := StrToInt(TextBetween(Line, '<em>[', ']</em>'),0);
ImagesAddress := TextBetween(Line, 'href="', '"');
end
// Imágenes
If NumImages > LimitImages then NumImages := LimitImages;
if NumImages >0 then
begin
Page.Text := GetPage(ImagesAddress);
LineNr := FindLine(UTF8Encode('<span>Posters</span>'), Page,0);
if LineNr = -1 then
LineNr := FindLine(UTF8Encode('<span>Movie Posters</span>'), Page,0);
if LineNr =-1 then
LineNr := FindLine(UTF8Encode('<span>Fotogramas</span>'), Page,0);
if LineNr =-1 then
LineNr := FindLine(UTF8Encode('span>Otros</span>'), Page,0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
for i := 1 to NumImages do
begin
LineNr := FindLine('<a href="', Page, LineNr + 1);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
ExtraString := TextBetween(Line, 'href="', '"');
ImageTitle := TextBetween(Line, 'Tipo: </strong>', '</div>');
ExtraIndex := AddExtra();
if GetOption('GroupImages') = 1 then
begin
SetExtraField(ExtraIndex, extraFieldCategory, 'Imágenes');
SetExtraField(ExtraIndex, extraFieldTitle, ImageTitle);
end
else
begin
SetExtraField(ExtraIndex, extraFieldCategory, ImageTitle);
SetExtraField(ExtraIndex, extraFieldTitle, 'Imágenes')
end;
SetExtraField(ExtraIndex, extraFieldTag, ExtraTagBase+'I'+IntToStr(ExtraIndex));
GetExtraPicture(ExtraIndex, ExtraString);
end;
end;
end;
end;
If NumTrailers > LimitTrailers then NumTrailers := LimitTrailers;
if NumTrailers > 0 then
begin
Page.Text := GetPage(TrailersAddress);
LineNr := FindLine(UTF8Encode('>Mostrar video<'),Page,0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
for i:= 1 to NumTrailers do
begin
LineNr := FindLine('src="', Page,LineNr + 1);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
ExtraString := TextBetween(Line, 'src="', '"');
ExtraURL := TextAfter(ExtraString, '//');
ExtraIndex := AddExtra();
SetExtraField(ExtraIndex, extraFieldURL, ExtraURL);
SetExtraField(ExtraIndex, extraFieldCategory, 'Trailers');
SetExtraField(ExtraIndex, extraFieldTitle, TextBetween(ExtraString, '//', '/'))
SetExtraField(ExtraIndex, extraFieldTag, ExtraTagBase+'T'+IntToStr(ExtraIndex));
LineNr := FindLine(UTF8Encode('Mostrar video'), Page,LineNr + 1);
end;
end;
end;
end;
end;
//------------------------------------------------------------------------------------
begin
if (CheckVersion(4,2,2) = false) then
begin
if ShowWarning('This script requires a newer version of Ant Movie Catalog, at least the version 4.2.2, currently available as beta - do you wish to open the link to download it?)') = true then
begin
Launch('https://forum.antp.be/phpbb3/viewtopic.php?f=6&t=6862', '');
end;
exit;
end;
MovieName := GetField(fieldOriginalTitle);
MovieYear := GetField(fieldYear);
YearFrom := MovieYear;
YearTo := MovieYear;
AdvQuery := '/es/advsearch.php';
if Length(MovieName) = 0 then
MovieName := GetField(fieldTranslatedTitle);
if GetOption('DontAsk') = 0 then
Input('FilmAffinity', 'Título: ' + GetField(fieldFilePath), MovieName);
if Pos('filmaffinity.com', MovieName) > 0 then
AnalyzeMoviePage(MovieName)
else
begin
//MovieName := UTF8Encode(MovieName);
AdvQuery := AdvQuery + '?stext=' + UrlEncode(MovieName);
if GetOption('SearchByFromToYears') = 1 then
begin
if GetOption('DontAsk') = 0 then
begin
Input('FilmAffinity', 'Desde el año: ', YearFrom);
Input('FilmAffinity', 'Hasta el año: ', YearTo);
end;
AdvQuery := AdvQuery + '&fromyear=' + YearFrom;
AdvQuery := AdvQuery + '&toyear=' + YearTo;
end;
{
stype[]=title Título
stype[]=director Director
stype[]=cast Reparto
stype[]=script Guión
stype[]=photo Fotografía
stype[]=music Música
stype[]=producer Productor
}
if GetOption('SearchByTitle') = 1 then
AdvQuery := AdvQuery + '&stype[]=title';
if GetOption('SearchByDirector') = 1 then
AdvQuery := AdvQuery + '&stype[]=director';
if GetOption('SearchByCast') = 1 then
AdvQuery := AdvQuery + '&stype[]=cast';
if GetOption('SearchByScript') = 1 then
AdvQuery := AdvQuery + '&stype[]=script';
if GetOption('SearchByPhoto') = 1 then
AdvQuery := AdvQuery + '&stype[]=photo';
if GetOption('SearchByMusic') = 1 then
AdvQuery := AdvQuery + '&stype[]=music';
if GetOption('SearchByProducer') = 1 then
AdvQuery := AdvQuery + '&stype[]=producer';
if GetOption('SortByYear') = 1 then
AdvQuery := AdvQuery + '&orderby=year';
AnalyzeAdvPage(BaseURL + AdvQuery);
end;
end.
-
- Posts: 99
- Joined: 2010-02-22 23:15:05
Re: Script Filmaffinity 3.0.5 no funciona
claro amigo lo que yo no tengo es esa versión de script, dónde está el enlace para bajarlo directamente, ya que en eso soy de madera para copiar y pegar.Arturo wrote: ↑2019-04-07 10:00:22 Pues a mi si que me funciona. A ver si la pelicula que buscas no tiene enlaces a críticas.
De todas formas dejo aqui la version que me funciona numerada como 3.06
Code: Select all
(*************************************************** 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.06 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=0|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=0|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|99|Límite de criticas en Extras ExtraImagesLimit=99|99|Límite de imágenes en Extras ExtraTrailersLimit=99|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('<div class="float-right"><b>', Page, 0); Count := StrToInt(TextBetween(Page.GetString(LineNr),'<div class="float-right"><b>','</b>' ),0); if LineNr <> -1 then // Add the results to the PickTree if Count = 0 then ShowMessage('No se ha encontrado ningún registro') else begin PageNr := ''; LineNr := 0; while true do begin LineNr := FindLine('<div class="mc-title"><a', Page, LineNr + 1); if LineNr = -1 then begin LineNr := FindLine('<span class="current">', Page, 0); if LineNr = -1 then break; Line := Page.GetString(LineNr); Pages := Occurrences('<a href="advsearch.php?page=', Line); PageNr := TextBetween(Line, '<span class="current">', '</span>'); if StrToInt(PageNr, 0) = Pages then break; NextPageNr := StrToInt(PageNr, 0) + 1; PagSig:= 'https://www.filmaffinity.com/es/advsearch.php?page=' + IntToStr(NextPageNr) + '&stext=' + TextBetween(Line, '&stext=', '">'); PagSig:=StringReplace(PagSig,'&','&'); Page.Text := GetPage(PagSig); LineNr := 0; continue; end; Line := Page.GetString(LineNr); MovieAddress := TextBetween(Line, 'href="', '.html"') + '.html'; MovieTitle := TextBetween(Line, 'title="', '"'); MovieTitle := DeleteTags(MovieTitle); MovieTitle := LineDecode(MovieTitle); //------------------------------------- MovieYear := TextBetween(Line, '</a> (', ') <img src="/imgs/countries/'); if MovieYear = '' Then MovieYear := YearAnt else YearAnt := MovieYear; Line:= Page.GetString(LineNr-9); //------------------------------------ LineNrax := FindLine('div class="mc-director">', Page, LineNr); if LineNrax <> -1 then begin Line:= Page.GetString(LineNrax+1); MovieDirector:= TextBetween(Line, 'title="', '"'); MovieDirector:= DeleteTags(MovieDirector); MovieDirector:= LineDecode(MovieDirector); end; //------------------------------------ if (Length(MovieAddress) <> 0) and (Length(MovieTitle) <> 0) then PickTreeAdd(MovieTitle+' ('+MovieYear+')'+' -<'+MovieDirector+'>-', BaseURL + MovieAddress); end; if ((Count = 1) and (GetOption('DontAsk') = 1)) then AnalyzeMoviePage(BaseURL + MovieAddress) else begin // // PickTreeSort; // Si se quiere clasificar por orden alfabetico hay que activar el PickTreeSort, quitar las 2 // // las 2 barras "//" que hay a la izquierda la instrucción PickTreeSort y ya esta. // PickTreeExec(Address); AnalyzeMoviePage(Address) end end; Page.Free; end; //------------------------------------------------------------------------------------ procedure AnalyzePage(Address: string); var Page: TStringList; LineNr,LineNrax: Integer; Line: string; Count: Integer; MovieTitle, MovieAddress, MovieDirector, MovieYear: string; YearAnt: string; PagSig:String; begin Count := 0; Page := TStringList.Create; Page.Text := GetPage(Address); PickTreeClear; // Get how much search results have been found // No encuentra las palabras "Resultados por título"¿?, busco la // linea anterior, y cojo la siguiente linea, le quito los espacios // y me quedo con el numerode peliculas. LineNr := FindLine('<div class="sub-header-search">', Page, 0); if LineNr <> -1 then begin LineNr := LineNr + 1; Line := Page.GetString(LineNr); Line := DeleteTags(Line); Line := ConvertAlphaNum(Line); Count := StrToInt(Line, 0); end; // Add the results to the PickTree if Count = 0 then ShowMessage('No se ha encontrado ningún registro') else begin LineNr := 0; while true do begin LineNr := FindLine('<div class="mc-title"><a', Page, LineNr + 1); if LineNr = -1 then begin LineNr := FindLine('siguientes >>', Page, 0); if LineNr = -1 then break; Line := Page.GetString(LineNr); PagSig:= 'https://www.filmaffinity.com/es/search.php' + TextBetween(Line, '<a href="search.php', '"><div class="' ); PagSig:=StringReplace(PagSig,'&','&'); Page.Text := GetPage(PagSig); LineNr := 0; continue; end; Line := Page.GetString(LineNr); MovieAddress := TextBetween(Line, 'href="', '.html"') + '.html'; MovieTitle := TextBetween(Line, 'title="', '"'); MovieTitle := DeleteTags(MovieTitle); MovieTitle := LineDecode(MovieTitle); //------------------------------------- Line:= Page.GetString(LineNr-9); MovieYear := TextBetween(Line, 'ye-w">', '</div>'); if MovieYear = '' Then MovieYear := YearAnt else YearAnt := MovieYear; //------------------------------------ LineNrax := FindLine('div class="mc-director">', Page, LineNr); if LineNrax <> -1 then begin Line:= Page.GetString(LineNrax+1); MovieDirector:= TextBetween(Line, 'title="', '"'); MovieDirector:= DeleteTags(MovieDirector); MovieDirector:= LineDecode(MovieDirector); end; //------------------------------------ if (Length(MovieAddress) <> 0) and (Length(MovieTitle) <> 0) then PickTreeAdd(MovieTitle+' ('+MovieYear+')'+' -<'+MovieDirector+'>-', BaseURL + MovieAddress); end; if ((Count = 1) and (GetOption('DontAsk') = 1)) then AnalyzeMoviePage(BaseURL + MovieAddress) else begin // // PickTreeSort; // Si se quiere clasificar por orden alfabetico hay que activar el PickTreeSort, quitar las 2 // // las 2 barras "//" que hay a la izquierda la instrucción PickTreeSort y ya esta. // PickTreeExec(Address); AnalyzeMoviePage(Address) end end; Page.Free; end; //------------------------------------------------------------------------------------ procedure AnalyzeMoviePage(Address: string); var Page: TStringList; LineNr, LineInc: Integer; Line: string; Item: string; Comments: string; CharStar: string; auxItem: string; begin Comments := ''; // URL SetField(fieldURL, Address); Page := TStringList.Create; Page.Text := GetPage(Address); // Translated Title LineNr := FindLine('<h1 id="main-title">', Page, 0); Line := Page.GetString(LineNr+1); Item := DeleteTags(TextBetween(Line, '<span itemprop="name">', '</span>')); Item := LineDecode(Item); SetField(fieldTranslatedTitle, Item); // Picture LineNr := FindLine('href="https://pics.filmaffinity.com/', Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr); Item := TextBetween(Line, '<a class="lightbox" style="display: block;" href="', '" title="'); if Length(Item) = 0 then Item := TextBetween(Line, '" src="', '"></a>'); Item := StringReplace(Item,'https://','http://'); GetPicture(Item); end; // Rating LineNr := FindLine('<div id="movie-rat-avg" itemprop="ratingValue"', Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 1); Item := DeleteTags(Line); Item := LineDecode(Item); SetField(fieldRating, StringReplace(Item, ',', '.')); end; // Original Title LineNr := FindLine(UTF8Encode('<dt>Título original</dt>'), Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 1); // Eliminar aka if Pos('>aka <',Line) <>0 then Line:= StringReplace(Line,'>aka <',''); Item := DeleteTags(TextBetween(Line, '<dd>', '</dd>')); Item := LineDecode(Item); if Length(Item) = 0 then begin Line := Page.GetString(LineNr + 2); // Eliminar aka if Pos('>aka <',Line) <>0 then Line:= StringReplace(Line,'>aka <',''); Item := DeleteTags(Line); Item := LineDecode(Item); end; SetField(fieldOriginalTitle, Item); end; // Year LineNr := FindLine(UTF8Encode('<dt>Año</dt>'), Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 1); Item := DeleteTags(TextBetween(Line, '">', '</dd>')); Item := LineDecode(Item); SetField(fieldYear, Item); end; // Length LineNr := FindLine(UTF8Encode('<dt>Duración</dt>'), Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 1); Item := DeleteTags(TextBetween(Line, 'duration">', 'min.</dd>')); Item := LineDecode(Item); SetField(fieldLength, Item); end; // Country LineNr := FindLine(UTF8Encode('<dt>País</dt>'), Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 1); Item := DeleteTags(TextBetween(Line, 'title="', '"></span')); Item := LineDecode(Item); SetField(fieldCountry, Item); end; // Director LineNr := FindLine(UTF8Encode('class="directors">'), Page, LineNr); if LineNr <> -1 then begin LineNr := LineNr + 3; Line := Page.GetString(LineNr); Item := TextBetween(Line,'"name">','</span>'); while Pos (',', Line) <> 0 do begin Item := Item + ', '; LineNr := LineNr + 3; Line := Page.GetString(LineNr); auxItem := TextBetween(Line,'"name">','</span>'); Item := Item + auxItem; end; Item := LineDecode(Item); SetField(fieldDirector, Item); end; // Script writer LineNr := FindLine(UTF8Encode('<dt>Guion</dt>'), Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 1); Item := TextBetween(Line, '<span>', '</div>'); Item := LineDecode(Item); Item := DeleteTags(Item); if ((CheckVersion(4,2,0) = true) and (GetOption('Force350') = 0)) then SetField(fieldWriter, Item) else Comments := Comments + 'Guión: ' + Item + #13#10 + #13#10; end; // Composer LineNr := FindLine(UTF8Encode('Música'), Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 1); Item := TextBetween(Line, '<span>', '</div>'); Item := LineDecode(Item); Item := DeleteTags(Item); if ((CheckVersion(4,2,0) = true) and (GetOption('Force350') = 0)) then SetField(fieldComposer, Item) else Comments := Comments + 'Música: ' + Item + #13#10 + #13#10; end; // Photography LineNr := FindLine(UTF8Encode('<dt>Fotografía</dt>'), Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 1); Item := TextBetween(Line, '<span>', '</div>'); Item := LineDecode(Item); Item := DeleteTags(Item); Comments := Comments + 'Fotografía: ' + Item + #13#10 + #13#10; end; // Actors LineNr := FindLine(UTF8Encode('<dt>Reparto</dt>'), Page, LineNr); if LineNr <> -1 then begin Item := ''; while true do begin LineNr := FindLine('itemprop="name">', Page, LineNr); if LineNr = -1 then break; begin if Item <> '' Then Item := Item + ', '; Line := Page.GetString(LineNr); Item := Item + TextBetween(Line, 'name">', '</span'); LineNr:=LineNr+1 end end; if GetOption('ActorsInALine') = 0 then Item := StringReplace(Item, ', ', #13#10); SetField(fieldActors, LineDecode(Item)); end; // Productor LineNr := FindLine(UTF8Encode('<dt>Productora</dt>'), Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 1); Item := DeleteTags(TextBetween(Line, '<dd>', '</dd>')); Item := LineDecode(Item); SetField(fieldProducer, Item); end; // Category LineNr := FindLine(UTF8Encode('<dt>Género</dt>'), Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 2); Item := DeleteTags(Line); Item := LineDecode(Item); Item := StringReplace(Item, ' | ', ', '); Item := StringReplace(Item, '. ', ', '); SetField(fieldCategory, Item); end; // Official Webpage LineNr := FindLine(UTF8Encode('<dt>Web oficial</dt>'), Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 1); Item := DeleteTags(TextBetween(Line, ' href="', '">')); Item := LineDecode(Item); Comments := Comments + 'Web oficial: ' + Item + #13#10 + #13#10; end; // Synopsis LineNr := FindLine(UTF8Encode('<dt>Sinopsis</dt>'), Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr + 1); Item := DeleteTags(Line); Item := LineDecode(Item); SetField(fieldDescription, Item); end; // Awards LineNr := FindLine(UTF8Encode('<dt>Premios</dt>'), Page, LineNr); if LineNr <> -1 then begin LineNr := LineNr + 1; Line := Page.GetString(LineNr); Comments := Comments + 'Premios: ' + #13#10; while Pos ('</dd>', Line) = 0 do begin if Pos ('<span id="show-all-awards">', Line) = 0 then begin Item := DeleteTags(Line); Item := LineDecode(Item); if (Length(Item) <> 0) then begin Comments := Comments + ' - ' + Item + #13#10; end; end; LineNr := LineNr + 1; Line := Page.GetString(LineNr); end; Comments := Comments + #13#10; end; // Critic LineNr := FindLine(UTF8Encode('<dt>Críticas</dt>'), Page, LineNr); if LineNr <> -1 then begin // El unico objeto de esta linea es poder presentar en el foro el listado // del script sin que se produzca la conversión del caracter estrella CharStar := '&'+'#9733;'; Comments := Comments + 'Críticas: ' + #13#10 + #13#10; LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1); while LineNr <> -1 do begin LineNr := LineNr + 2; Line := Page.GetString(LineNr); if Pos (UTF8Encode('<a title="Leer crítica completa" href='), Line) <> 0 then begin LineNr := LineNr + 1; Line := Page.GetString(LineNr); end; Line:= StringReplace(Line, CharStar, '*'); Item := DeleteTags(Line); Item := LineDecode(Item); if (Length(Item) <> 0) then begin Comments := Comments + Item + #13#10; LineNr := FindLine('div class="pro-crit-med"', Page, LineNr + 1); Line := Page.GetString(LineNr); Item := DeleteTags(TextBetween(Line, ' itemprop="author">', '<i')); Item := LineDecode(Item); if (Length(Item) <> 0) then begin Comments := Comments + Item + #13#10; end; Comments := Comments + '________________________________________' + #13#10 + #13#10; end; LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1) end; end; HTMLDecode(Comments); SetField(fieldComments, Comments); if GetOption('DontWantExtras') = 0 then AnalyzeExtras(Page,Address); end; //------------------------------------------------------------------------------------ // Extras procedure AnalyzeExtras(Page: TStringList; Address: string); var LineNr,NumImages,NumTrailers, i,CountC: Integer; Line: string; TrailersAddress: string; ImagesAddress: string; ImageTitle: string; ExtraIndex: Integer; ExtraString: string; ExtraURL: string; ExtraTagBase: string; LimitImages,LimitTrailers,LimitCritics: Integer; begin ExtraTagBase := 'FA'+TextBetween(Address, '/film', '.html'); ClearExtrasOfScript; LimitImages := StrtoInt (GetParam('ExtraImagesLimit'),0); if LimitImages < 0 then LimitImages := 0; LimitTrailers := StrtoInt (GetParam('ExtraTrailersLimit'),0); if LimitTrailers < 0 then LimitTrailers := 0; LimitCritics := StrtoInt (GetParam('ExtraCriticsLimit'),0); if LimitCritics < 0 then LimitCritics := 0; // Enlaces a Criticas LineNr := FindLine(UTF8Encode('<dt>Críticas</dt>'), Page, LineNr); CountC := 0; if LineNr <> -1 then begin LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1); while LineNr <> -1 do begin LineNr := LineNr + 2; Line := Page.GetString(LineNr); if Pos (UTF8Encode('<a title="Leer crítica completa" href='), Line) <> 0 then begin Line := Page.GetString(LineNr); ExtraURL:= TextBetween(Line, 'href="', '" '); if (Length(ExtraURL))>0 then begin ExtraIndex := AddExtra(); SetExtraField(ExtraIndex, extraFieldURL, ExtraURL); SetExtraField(ExtraIndex, extraFieldCategory, 'Críticas'); SetExtraField(ExtraIndex, extraFieldTitle, TextBetween(ExtraURL, '//', '/')); SetExtraField(ExtraIndex, extraFieldTag, ExtraTagBase+'C'+IntToStr(ExtraIndex)); end; LineNr := LineNr + 1; Line := Page.GetString(LineNr); end; LineNr := FindLine('<div class="pro-review"', Page, LineNr + 1); CountC := CountC+1; if CountC = LimitCritics then break; end; end; // Imágenes y Trailers NumTrailers := 0; NumImages := 0; LineNr := FindLine(UTF8Encode('>Tráilers <em>'), Page, 0); if LineNr <> -1 then begin Line := Page.GetString(LineNr); NumTrailers := StrToInt(TextBetween(Line, '<em>[', ']</em>'),0); TrailersAddress := TextBetween(Line, 'href="', '"'); end LineNr := FindLine(UTF8Encode('>Imágenes <em>'), Page, LineNr+1); if LineNr <> -1 then begin Line := Page.GetString(LineNr); NumImages := StrToInt(TextBetween(Line, '<em>[', ']</em>'),0); ImagesAddress := TextBetween(Line, 'href="', '"'); end // Imágenes If NumImages > LimitImages then NumImages := LimitImages; if NumImages >0 then begin Page.Text := GetPage(ImagesAddress); LineNr := FindLine(UTF8Encode('<span>Posters</span>'), Page,0); if LineNr = -1 then LineNr := FindLine(UTF8Encode('<span>Movie Posters</span>'), Page,0); if LineNr =-1 then LineNr := FindLine(UTF8Encode('<span>Fotogramas</span>'), Page,0); if LineNr =-1 then LineNr := FindLine(UTF8Encode('span>Otros</span>'), Page,0); if LineNr <> -1 then begin Line := Page.GetString(LineNr); for i := 1 to NumImages do begin LineNr := FindLine('<a href="', Page, LineNr + 1); if LineNr <> -1 then begin Line := Page.GetString(LineNr); ExtraString := TextBetween(Line, 'href="', '"'); ImageTitle := TextBetween(Line, 'Tipo: </strong>', '</div>'); ExtraIndex := AddExtra(); if GetOption('GroupImages') = 1 then begin SetExtraField(ExtraIndex, extraFieldCategory, 'Imágenes'); SetExtraField(ExtraIndex, extraFieldTitle, ImageTitle); end else begin SetExtraField(ExtraIndex, extraFieldCategory, ImageTitle); SetExtraField(ExtraIndex, extraFieldTitle, 'Imágenes') end; SetExtraField(ExtraIndex, extraFieldTag, ExtraTagBase+'I'+IntToStr(ExtraIndex)); GetExtraPicture(ExtraIndex, ExtraString); end; end; end; end; If NumTrailers > LimitTrailers then NumTrailers := LimitTrailers; if NumTrailers > 0 then begin Page.Text := GetPage(TrailersAddress); LineNr := FindLine(UTF8Encode('>Mostrar video<'),Page,0); if LineNr <> -1 then begin Line := Page.GetString(LineNr); for i:= 1 to NumTrailers do begin LineNr := FindLine('src="', Page,LineNr + 1); if LineNr <> -1 then begin Line := Page.GetString(LineNr); ExtraString := TextBetween(Line, 'src="', '"'); ExtraURL := TextAfter(ExtraString, '//'); ExtraIndex := AddExtra(); SetExtraField(ExtraIndex, extraFieldURL, ExtraURL); SetExtraField(ExtraIndex, extraFieldCategory, 'Trailers'); SetExtraField(ExtraIndex, extraFieldTitle, TextBetween(ExtraString, '//', '/')) SetExtraField(ExtraIndex, extraFieldTag, ExtraTagBase+'T'+IntToStr(ExtraIndex)); LineNr := FindLine(UTF8Encode('Mostrar video'), Page,LineNr + 1); end; end; end; end; end; //------------------------------------------------------------------------------------ begin if (CheckVersion(4,2,2) = false) then begin if ShowWarning('This script requires a newer version of Ant Movie Catalog, at least the version 4.2.2, currently available as beta - do you wish to open the link to download it?)') = true then begin Launch('https://forum.antp.be/phpbb3/viewtopic.php?f=6&t=6862', ''); end; exit; end; MovieName := GetField(fieldOriginalTitle); MovieYear := GetField(fieldYear); YearFrom := MovieYear; YearTo := MovieYear; AdvQuery := '/es/advsearch.php'; if Length(MovieName) = 0 then MovieName := GetField(fieldTranslatedTitle); if GetOption('DontAsk') = 0 then Input('FilmAffinity', 'Título: ' + GetField(fieldFilePath), MovieName); if Pos('filmaffinity.com', MovieName) > 0 then AnalyzeMoviePage(MovieName) else begin //MovieName := UTF8Encode(MovieName); AdvQuery := AdvQuery + '?stext=' + UrlEncode(MovieName); if GetOption('SearchByFromToYears') = 1 then begin if GetOption('DontAsk') = 0 then begin Input('FilmAffinity', 'Desde el año: ', YearFrom); Input('FilmAffinity', 'Hasta el año: ', YearTo); end; AdvQuery := AdvQuery + '&fromyear=' + YearFrom; AdvQuery := AdvQuery + '&toyear=' + YearTo; end; { stype[]=title Título stype[]=director Director stype[]=cast Reparto stype[]=script Guión stype[]=photo Fotografía stype[]=music Música stype[]=producer Productor } if GetOption('SearchByTitle') = 1 then AdvQuery := AdvQuery + '&stype[]=title'; if GetOption('SearchByDirector') = 1 then AdvQuery := AdvQuery + '&stype[]=director'; if GetOption('SearchByCast') = 1 then AdvQuery := AdvQuery + '&stype[]=cast'; if GetOption('SearchByScript') = 1 then AdvQuery := AdvQuery + '&stype[]=script'; if GetOption('SearchByPhoto') = 1 then AdvQuery := AdvQuery + '&stype[]=photo'; if GetOption('SearchByMusic') = 1 then AdvQuery := AdvQuery + '&stype[]=music'; if GetOption('SearchByProducer') = 1 then AdvQuery := AdvQuery + '&stype[]=producer'; if GetOption('SortByYear') = 1 then AdvQuery := AdvQuery + '&orderby=year'; AnalyzeAdvPage(BaseURL + AdvQuery); end; end.
Gracias
PD Ves, amigo lo hice y no pude abrir el script, si ya no viene hecho no me funciona. Lo borré y he vuelto a descargar el sript, y en realidad las críticas si están dentro de la descripción de la película. Lo que ya no me aparece son los enlaces de la barra lateral, que en un momento sí aparecían.
Re: Script Filmaffinity 3.0.5 no funciona
La versión 3.06 ya esta donde siempre: update.antp.be/amc/scripts en el apartado Downloads de la página. Y con esa versión si salen los enlaces el la ventana lateral de Extras.masterchipo wrote: ↑2019-04-08 15:43:46
claro amigo lo que yo no tengo es esa versión de script, dónde está el enlace para bajarlo directamente, ya que en eso soy de madera para copiar y pegar.
Gracias
PD Ves, amigo lo hice y no pude abrir el script, si ya no viene hecho no me funciona. Lo borré y he vuelto a descargar el sript, y en realidad las críticas si están dentro de la descripción de la película. Lo que ya no me aparece son los enlaces de la barra lateral, que en un momento sí aparecían.
-
- Posts: 99
- Joined: 2010-02-22 23:15:05
Re: Script Filmaffinity 3.0.5 no funciona
La descargué y actualicé, y ahora todo funciona a la perfección.Arturo wrote: ↑2019-04-14 15:10:07La versión 3.06 ya esta donde siempre: update.antp.be/amc/scripts en el apartado Downloads de la página. Y con esa versión si salen los enlaces el la ventana lateral de Extras.masterchipo wrote: ↑2019-04-08 15:43:46
claro amigo lo que yo no tengo es esa versión de script, dónde está el enlace para bajarlo directamente, ya que en eso soy de madera para copiar y pegar.
Gracias
PD Ves, amigo lo hice y no pude abrir el script, si ya no viene hecho no me funciona. Lo borré y he vuelto a descargar el sript, y en realidad las críticas si están dentro de la descripción de la película. Lo que ya no me aparece son los enlaces de la barra lateral, que en un momento sí aparecían.
Gracias @antp
Re: Script Filmaffinity 3.0.5 no funciona
Hola
A mí con la versión 3.06 actualizado con UPDATE SCRIPTS no me salen los comentarios: ni fotografía, ni críticas.
No he hecho los cambios que se recomiendan para la versión 3.05 porque ya se dice que está corregido en la versión 3.06.
Qué podrá ser?
Saludos
A mí con la versión 3.06 actualizado con UPDATE SCRIPTS no me salen los comentarios: ni fotografía, ni críticas.
No he hecho los cambios que se recomiendan para la versión 3.05 porque ya se dice que está corregido en la versión 3.06.
Qué podrá ser?
Saludos