[REL] VenAlCine [Es] - Primera version
Posted: 2005-12-15 09:47:16
Script de la página VenAlCine (http://www.venalcine.com).
Su base de datos cuenta con 1600 peliculas.
Pero su mayor importancia está en los carteles (Poster).
Ya contareis.
VenAlCine (ES).ifs
Su base de datos cuenta con 1600 peliculas.
Pero su mayor importancia está en los carteles (Poster).
Ya contareis.
VenAlCine (ES).ifs
Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=gilistico
Title=VenAlCine (ES)
Description= Movie (Posters) importation script for venalcine (Spain)
Site=http://www.venalcine.com
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 venalcine;
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, Count: Integer;
Line, Line2: string;
Title, DirURL: string;
Pagina: Integer;
begin
Pagina :=1;
Count := 0;
Page := TStringList.Create;
PickTreeClear;
while TRUE do
begin
Page.Text := GetPage(Address);
LineNr := FindLine('No hay resultados para la busqueda', Page, 0);
if LineNr <> -1 then
begin
if Count > 0 then
break;
ShowMessage('No hay resultados para su búsqueda.');
Page.Free;
exit;
end;
While TRUE do
begin
LineNr := FindLine('·', Page, LineNR+1);
if LineNR = -1 then
breaK;
Line := Page.GetString(LineNr);
Line2 := Line;
DirURL := 'http://www.venalcine.com/' + TextBetween (Line, '<a href=', '>');
Title := TextBetween (Line2,'<span class=descripcion>', '</span>');
if (DirURL ='') OR (Title = '') then
continue;
DeleteTags(Title);
HTMLDecode(Title);
PickTreeAdd(Title, DirURL);
Count := Count +1;
end;
Pagina := Pagina + 1;
LineNr := FindLine('<span class=letras2>'+IntToStr(pagina)+'</span>', Page, 0);
if LineNR = -1 then
break;
Address := 'http://www.venalcine.com/' + 'buscador.php?palabra='+MovieName + '&pagina=' + IntToStr(Pagina) +'&tipobusqueda=titulo';
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);
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
Line := GetLine(Page, 'class=pelicula', '</span>', 0);
Item := TextBetween (Line, '>', '(');
If Item <> '' then
begin
SetField(fieldTranslatedTitle, Trim (Item));
SetField(fieldOriginalTitle,Trim (Item));
end;
// Titulo original
Line := GetLine(Page, 'TÍTULO ORIGINAL', '<br>', 0);
Item := TextBetween (Line, ':', '(');
if Item <> '' then
SetField(fieldOriginalTitle,Trim (Item));
// Dirección
Item := GetLine(Page, 'DIRECTOR:', '<br>', 1);
if Item <>'' then
SetField(fieldDirector, Trim (Item));
// Año
Line := GetLine(Page, 'class=pelicula', '</span>', 0);
Item := TextBetween (Line, '(', ')');
if Item <>'' then
SetField(fieldYear, Trim (Item));
// Interpretación
Item := GetLine(Page, 'REPARTO:', '<br>', 0);
if Item <>'' then
SetField(fieldActors, Trim (Item));
// Productora
Item := GetLine(Page, 'PRODUCTORA:', '<br>', 1);
if Item <>'' then
SetField(fieldProducer, Trim (Item));
// Productora
Item := GetLine(Page, 'GÉNERO:', '<br>', 1);
if Item <>'' then
SetField(fieldCategory, Trim (Item));
// Sinopsis
Item := GetLine(Page, 'SINOPSIS:', '</td>', 0);
if Item <>'' then
SetField(fieldDescription, Trim (Item));
// Estreno 1
LineNr := FindLine('FECHA DE ESTRENO', Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
Item := TextBetween (Line, '<span class=titulo>', '<br>');
Item := DeleteTags(Item);
HTMLDecode(Item);
if Item <>'' then
Comments := Comments + Item + #13#10;
end;
// Estreno 2
LineNr := FindLine('FECHA DE ESTRENO', Page, LineNR+1);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
Item := TextBetween (Line, '<span class=titulo>', '<br>');
Item := DeleteTags(Item);
HTMLDecode(Item);
if Item <>'' then
Comments := Comments + Item + #13#10;
end;
// Pagina web
Item := GetLine(Page, 'WEB OFICIAL:', '<br>', 0);
if Item <>'' then
Comments := Comments + 'Web oficial: ' + Item + #13#10;
HTMLDecode(Comments);
SetField(fieldComments, Comments);
// Pagina de sinopsis
Item := GetLine(Page, 'href=sinopsis', '>', 0);
if Item <>'' then
begin
Address := 'http://www.venalcine.com/sinopsis' + Item;
Page.Text := GetPage(UrlEncode(Address));
Item := GetLine(Page, 'class=descripcion3>', '</td>', 0);
if Item <>'' then
SetField(fieldDescription, Trim (Item));
end;
// Pagina de carteles
Item := GetLine(Page, 'href=carteles', '>', 0);
if Item <>'' then
begin
Address := 'http://www.venalcine.com/carteles' + Item;
Page.Text := GetPage(UrlEncode(Address));
PickTreeClear;
Count := 0;
LineNr := 0;
While TRUE do
begin
LineNr := FindLine('href=''vercartel.php', Page, LineNr+1);
if LineNr = -1 then
break;
Line := Page.GetString(LineNr);
Direccion := 'http://carteles.venalcine.com/cartel/' + TextBetween (Line, 'vercartel.php?cartel=', '&pelicula') +'.jpg';
Count := Count + 1;
Cartel := 'Cartel ' + IntToStr(Count);
PickTreeAdd(Cartel, Direccion);
end;
If Count > 1 then
PickTreeExec(Direccion);
If Count > 0 then
GetPicture(Direccion );
end;
Page.Free;
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('venalcine', 'Titulo de la pelicula:', MovieName);
AnalyzePage(UrlEncode('http://www.venalcine.com/buscador.php?&tipobusqueda=titulo&palabra=' + MovieName));
end.