[REL] MXP [ES] - Primera version

If you made a script you can offer it to the others here, or ask help to improve it. You can also report here bugs & problems with existing scripts.
Post Reply
gilistico
Posts: 22
Joined: 2005-12-12 18:09:27

[REL] MXP [ES] - Primera version

Post by gilistico »

En este caso una compañía de alquiler de peliculas DVD

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.



Post Reply