Please, can anyone make a script to this site:
www.CineGuia.com.br. Thanks.
abrahao2k@yahoo.com.br
Script Request for www.CineGuia.com.br
Seems to work, wanna test it?
I did not include the Rating, do you want it?
I did not include the Rating, do you want it?
Code: Select all
// GETINFO SCRIPTING
// Cine Guia (BR) import
(***************************************************
* Movie importation script for: *
* Cine Guia (BR), http://www.cineguia.com.br *
* *
* (c) 2003 Louis Francisco ork@everydayangels.net *
* *
* For use with Ant Movie Catalog 3.4.1 *
* www.ant.be.tf/moviecatalog ··· www.buypin.com *
* *
* 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 *
***************************************************)
program CineGuia;
var
MovieName: string;
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: integer;
BeginPos: integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
//Added this line, thought it could be useful...
LineNr := FindLine('Foram encontrados muitos resultados para sua pesquisa, você precisa fazer um pesquisa mais precisa', Page, 0);
if LineNr <> -1 then
begin
Page.Free;
//Too much titles, wanna retry?
ShowMessage('Foram encontrados muitos resultados para sua pesquisa, você precisa fazer um pesquisa mais precisa');
if Input('Cine Guia Import', 'Enter the title of the movie:', MovieName) then
begin
AnalyzePage('http://www.cineguia.com.br/index.shtml?search='+UrlEncode(MovieName)+'&Submit=++Busca++&op=filmes');
end;
end
else
begin
LineNr := FindLine('--> Resultado da busca para:', Page, 0);
if LineNr = -1 then
begin
//Almost forgot about that javascript redirection
LineNr := FindLine('location.href="', Page, 0);
if LineNr <> -1 then
begin
Address := Page.GetString(LineNr);
delete(Address, 1, pos('location.href="', Address)+14);
Address := 'http://www.cineguia.com.br/' + copy(Address, 1, pos('"', Address)-1);
SetField(fieldURL, Address);
Page.Text := GetPage(Address);
AnalyzeMoviePage(Page);
end;
end
else
begin
PickTreeClear;
AddMoviesTitles(Page, LineNr);
if PickTreeExec(Address) then
begin
SetField(fieldURL, Address);
Page.Text := GetPage(Address);
AnalyzeMoviePage(Page);
end;
end;
Page.Free;
end;
end;
procedure AnalyzeMoviePage(Page: TStringList);
var
Line, Value: string;
LineNr, IntValue: Integer;
BeginPos, EndPos: Integer;
Field: integer;
begin
LineNr := FindLine('function trl(link) {', Page, 0);
if LineNr > -1 then LineNr := FindLine('<td>', Page, LineNr);
// Translated Title
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
BeginPos := pos('<b>', Line) + 3;
EndPos := pos('</b>', Line);
if EndPos=0 then EndPos := length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldTranslatedTitle, Value);
end;
//Fly over external links
LineNr := FindLine('Site Oficial', Page, LineNr);
if LineNr > -1 then
begin
LineNr := FindLine('<font size="2"', Page, LineNr+1);
if LineNr > -1 then
begin
Value := '';
repeat
Value := Value + Page.GetString(LineNr);
LineNr := LineNr + 1;
until pos('</font>', Value)>0;
HTMLRemoveTags(Value);
SetField(fieldDescription, Value);
end;
end;
LineNr := FindLine('Ficha Técnica', Page, LineNr);
if LineNr > -1 then
begin
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
repeat
//May have multiple lines of table in one line of html
while pos('<tr>', Line) > 0 do
begin
//Get a full line
while pos('</tr>', Line) = 0 do
begin
LineNr := LineNr + 1;
Line := Line + Page.GetString(LineNr);
end;
//Look for type of line
EndPos := pos('</td>', Line);
if EndPos > 0 then
begin
Value := copy(Line, 1, EndPos - 1);
HTMLRemoveTags(Value);
Delete(Line, 1, EndPos + 4);
if Value = 'Título Original:' then
Field := fieldOriginalTitle
else if Value = 'Direção:' then
Field := fieldDirector
else if Value = 'Produtor:' then
Field := fieldProducer
else if Value = 'Produção:' then
Field := fieldCountry //Special case: <country> <year>
else if Value = 'Gênero:' then
Field := fieldCategory
else if Value = 'Duração:' then
Field := fieldLength //Special case: <length> minutos
else if Value = 'Elenco (Personagem):' then
Field := fieldActors
else if Value = 'Formato de Tela:' then
Field := fieldVideoFormat
else if Value = 'Formato de Som:' then
Field := fieldAudioFormat
else if Value = 'Idiomas:' then
Field := fieldLanguages
else if Value = 'Legendas:' then
Field := fieldSubtitles
else
Field := 0;
//Get values
EndPos := pos('</td>', Line);
if EndPos > 0 then
begin
Value := copy(Line, 1, EndPos - 1);
//Special case: <actor> (<character>)
if Field = fieldActors then
Value := StringReplace(Value, '</a><br><font color=#339900>',' ');
Value := StringReplace(Value, '<br>', ', ');
HTMLRemoveTags(Value);
Delete(Line, 1, EndPos + 4);
if Field = fieldCountry then
begin
EndPos := pos(' ', Value);
if EndPos > 0 then //Can this happen?
begin
SetField(fieldYear, copy(Value, EndPos+1, 4));
Value := copy(Value, 1, EndPos-1);
end;
end
else if Field = fieldLength then
begin
EndPos := pos(' ', Value);
if EndPos > 0 then Value := copy(Value, 1, EndPos-1);
end;
if copy(Value, length(Value)-1, 2)=', ' then Delete(Value, length(Value)-1, 2);
HTMLDecode(Value);
if Field<>0 then SetField(Field, Value);
end;
end;
Delete(Line, 1, pos('</tr>', Line)+4);
end;
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
until pos('</table>', Line) <> 0;
end;
DisplayResults;
end;
procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
var
Line: string;
MovieTitle, MovieAddress: string;
hrefPos, hrefType: Integer;
begin
repeat
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
if pos('<li>', Line) > 0 then
begin
repeat
Delete(Line,1,pos('>',Line));
until copy(Line,1,1)<>'<';
MovieTitle:=copy(Line,1,pos('<',Line)-1);
HTMLDecode(Movietitle);
hrefpos := pos('<a href=',Line);
while hrefPos<>0 do
begin
Delete(Line,1,hrefPos+7);
hrefType:=pos('>',Line)+1;
MovieAddress := copy(Line, 1, hrefType-2);
PickTreeAdd(MovieTitle+' ('+copy(Line,hrefType,pos('</a>',Line)-hrefType)+')', 'http://www.cineguia.com.br/' + MovieAddress);
hrefpos := pos('<a href=',Line);
end;
end;
until pos('</ul>', Line) > 0;
end;
begin
if CheckVersion(3,4,1) then
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('Cine Guia Import', 'Enter the title of the movie:', MovieName) then
begin
AnalyzePage('http://www.cineguia.com.br/index.shtml?search='+UrlEncode(MovieName)+'&Submit=++Busca++&op=filmes');
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.1)');
end.
Last edited by Ork on 2003-01-07 01:14:36, edited 2 times in total.
Edited my entry with the script above viewtopic.php?p=1626#1626 to correct a bug.
I also added the choice of retrying a search if the site sends a "too much titles" reply.
I also added the choice of retrying a search if the site sends a "too much titles" reply.
A little modification to the script.
The constant 'ImportOfficialSiteURL' can be put to True if you want the official site URL instead of the CineGuia URL.
The constant 'ImportOfficialSiteURL' can be put to True if you want the official site URL instead of the CineGuia URL.
Code: Select all
// GETINFO SCRIPTING
// Cine Guia (BR) import
(***************************************************
* Movie importation script for: *
* Cine Guia (BR), http://www.cineguia.com.br *
* *
* (c) 2003 Louis Francisco ork@everydayangels.net *
* *
* For use with Ant Movie Catalog 3.4.1 *
* www.ant.be.tf/moviecatalog ··· www.buypin.com *
* *
* 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 *
***************************************************)
program CineGuia;
const
ImportOfficialSiteURL = True;
var
MovieName: string;
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: integer;
BeginPos: integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
//Added this line, thought it could be useful...
LineNr := FindLine('Foram encontrados muitos resultados para sua pesquisa, você precisa fazer um pesquisa mais precisa', Page, 0);
if LineNr <> -1 then
begin
Page.Free;
//Too much titles, wanna retry?
ShowMessage('Foram encontrados muitos resultados para sua pesquisa, você precisa fazer um pesquisa mais precisa');
if Input('Cine Guia Import', 'Enter the title of the movie:', MovieName) then
begin
AnalyzePage('http://www.cineguia.com.br/index.shtml?search='+UrlEncode(MovieName)+'&Submit=++Busca++&op=filmes');
end;
end
else
begin
LineNr := FindLine('--> Resultado da busca para:', Page, 0);
if LineNr = -1 then
begin
//Almost forgot about that javascript redirection
LineNr := FindLine('location.href="', Page, 0);
if LineNr <> -1 then
begin
Address := Page.GetString(LineNr);
delete(Address, 1, pos('location.href="', Address)+14);
Address := 'http://www.cineguia.com.br/' + copy(Address, 1, pos('"', Address)-1);
SetField(fieldURL, Address);
Page.Text := GetPage(Address);
AnalyzeMoviePage(Page);
end;
end
else
begin
PickTreeClear;
AddMoviesTitles(Page, LineNr);
if PickTreeExec(Address) then
begin
SetField(fieldURL, Address);
Page.Text := GetPage(Address);
AnalyzeMoviePage(Page);
end;
end;
Page.Free;
end;
end;
procedure AnalyzeMoviePage(Page: TStringList);
var
Line, Value: string;
LineNr, IntValue: Integer;
BeginPos, EndPos: Integer;
Field: integer;
begin
LineNr := FindLine('function trl(link) {', Page, 0);
if LineNr > -1 then LineNr := FindLine('<td>', Page, LineNr);
// Translated Title
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
BeginPos := pos('<b>', Line) + 3;
EndPos := pos('</b>', Line);
if EndPos=0 then EndPos := length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldTranslatedTitle, Value);
end;
//Find Official Site URL
LineNr := FindLine('Site Oficial', Page, LineNr);
if LineNr > -1 then
begin
if ImportOfficialSiteURL then
begin
Line := Page.GetString(LineNr);
BeginPos := pos('href=',Line);
EndPos := pos(' target=_blank>Site Oficial', Line);
if (BeginPos > -1) and (BeginPos < EndPos) then
SetField(fieldURL, copy(Line, BeginPos+5, EndPos-BeginPos-5));
end;
LineNr := FindLine('<font size="2"', Page, LineNr+1);
if LineNr > -1 then
begin
Value := '';
repeat
Value := Value + Page.GetString(LineNr);
LineNr := LineNr + 1;
until pos('</font>', Value)>0;
HTMLRemoveTags(Value);
SetField(fieldDescription, Value);
end;
end;
LineNr := FindLine('Ficha Técnica', Page, LineNr);
if LineNr > -1 then
begin
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
repeat
//May have multiple lines of table in one line of html
while pos('<tr>', Line) > 0 do
begin
//Get a full line
while pos('</tr>', Line) = 0 do
begin
LineNr := LineNr + 1;
Line := Line + Page.GetString(LineNr);
end;
//Look for type of line
EndPos := pos('</td>', Line);
if EndPos > 0 then
begin
Value := copy(Line, 1, EndPos - 1);
HTMLRemoveTags(Value);
Delete(Line, 1, EndPos + 4);
if Value = 'Título Original:' then
Field := fieldOriginalTitle
else if Value = 'Direção:' then
Field := fieldDirector
else if Value = 'Produtor:' then
Field := fieldProducer
else if Value = 'Produção:' then
Field := fieldCountry //Special case: <country> <year>
else if Value = 'Gênero:' then
Field := fieldCategory
else if Value = 'Duração:' then
Field := fieldLength //Special case: <length> minutos
else if Value = 'Elenco (Personagem):' then
Field := fieldActors
else if Value = 'Formato de Tela:' then
Field := fieldVideoFormat
else if Value = 'Formato de Som:' then
Field := fieldAudioFormat
else if Value = 'Idiomas:' then
Field := fieldLanguages
else if Value = 'Legendas:' then
Field := fieldSubtitles
else
Field := 0;
//Get values
EndPos := pos('</td>', Line);
if EndPos > 0 then
begin
Value := copy(Line, 1, EndPos - 1);
//Special case: <actor> (<character>)
if Field = fieldActors then
Value := StringReplace(Value, '</a><br><font color=#339900>',' ');
Value := StringReplace(Value, '<br>', ', ');
HTMLRemoveTags(Value);
Delete(Line, 1, EndPos + 4);
if Field = fieldCountry then
begin
EndPos := pos(' ', Value);
if EndPos > 0 then //Can this happen?
begin
SetField(fieldYear, copy(Value, EndPos+1, 4));
Value := copy(Value, 1, EndPos-1);
end;
end
else if Field = fieldLength then
begin
EndPos := pos(' ', Value);
if EndPos > 0 then Value := copy(Value, 1, EndPos-1);
end;
if copy(Value, length(Value)-1, 2)=', ' then Delete(Value, length(Value)-1, 2);
HTMLDecode(Value);
if Field<>0 then SetField(Field, Value);
end;
end;
Delete(Line, 1, pos('</tr>', Line)+4);
end;
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
until pos('</table>', Line) <> 0;
end;
DisplayResults;
end;
procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
var
Line: string;
MovieTitle, MovieAddress: string;
hrefPos, hrefType: Integer;
begin
repeat
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
if pos('<li>', Line) > 0 then
begin
repeat
Delete(Line,1,pos('>',Line));
until copy(Line,1,1)<>'<';
MovieTitle:=copy(Line,1,pos('<',Line)-1);
HTMLDecode(Movietitle);
hrefpos := pos('<a href=',Line);
while hrefPos<>0 do
begin
Delete(Line,1,hrefPos+7);
hrefType:=pos('>',Line)+1;
MovieAddress := copy(Line, 1, hrefType-2);
PickTreeAdd(MovieTitle+' ('+copy(Line,hrefType,pos('</a>',Line)-hrefType)+')', 'http://www.cineguia.com.br/' + MovieAddress);
hrefpos := pos('<a href=',Line);
end;
end;
until pos('</ul>', Line) > 0;
end;
begin
if CheckVersion(3,4,1) then
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('Cine Guia Import', 'Enter the title of the movie:', MovieName) then
begin
AnalyzePage('http://www.cineguia.com.br/index.shtml?search='+UrlEncode(MovieName)+'&Submit=++Busca++&op=filmes');
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.1)');
end.