[REL] VenAlCine [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] VenAlCine [Es] - Primera version

Post by gilistico »

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

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.

Post Reply