Ya contareis.
MXP (ES).ifs
Code: Select all
(***************************************************
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('</tr>', 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, '<a href="', '"');
Title := TextBetween (Line,'>', '<tr>');
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, '</html>');
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">', '</font> ', 0);
If Item <> '' then
begin
SetField(fieldTranslatedTitle, Trim (Item));
SetField(fieldOriginalTitle,Trim (Item));
end;
// Titulo original
Item := GetLine(Page, 'Título Original:', '<br>', 0);
if Item <> '' then
SetField(fieldOriginalTitle,Trim (Item));
// Año
Item := GetLine(Page, 'Año:', '<br>', 0);
if Item <>'' then
SetField(fieldYear, Trim (Item));
// Pais
Item := GetLine(Page, 'País:', '<br>', 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:', '<br>', 1);
if Item <>'' then
SetField(fieldDirector, Trim (Item));
// Interpretación
Item := GetLine(Page, 'Intérpretes:', '<br>', 0);
if Item <>'' then
SetField(fieldActors, Trim (Item));
// genero
Item := GetLine(Page, 'Género:', '<br>', 1);
if Item <>'' then
SetField(fieldCategory, Trim (Item));
// Sinopsis
Item := GetLine(Page, 'td rowspan="2" align="left" valign="top">', '<br>', 0);
if Item <>'' then
SetField(fieldDescription, Trim (Item));
//HTMLDecode(Comments);
//SetField(fieldComments, Comments);
// Imagen
Item := GetLine(Page, '<img src="http://www.mediaxpres.com/imagen.asp?', '"', 0);
GetPicture('http://www.mediaxpres.com/imagen.asp?'+Item);
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('MXP', 'Titulo de la pelicula:', MovieName);
AnalyzePage(UrlEncode('http://www.mxp.tv/home.cmd?accion=buscar&titulo=' + MovieName));
end.