Page 1 of 1

Script for filmow.com (BR)

Posted: 2011-08-11 18:59:18
by mikepax
Hi, yesterday I knew a good brazilian site to get and share information about movies and séries. The site is http://filmow.com/.
It is a social network aboutmovies and series.
So I made this script to get information about movies on that, later I'll make some modifcations to get series too.

Code: Select all

program Filmow;
var MovieName:string;
uses StringUtils1;

procedure SubstituiCaracteres(var X:string);
begin
  X:= StringReplace(X,'é','é');
  X:= StringReplace(X,'ç','ç');
  X:= StringReplace(X,'ã','ã');
  X:= StringReplace(X,'á','á');
  X:= StringReplace(X,'í­','í');
  X:= StringReplace(X,'í','í');
  X:= StringReplace(X,'ú','ú');
  X:= StringReplace(X,'ê','ê');
  X:= StringReplace(X,'–','-');
  X:= StringReplace(X,'ó','ó');
  X:= StringReplace(X,''','''');
  X:= StringReplace(X,'õ','õ');
  X:= StringReplace(X,'É','É');
  X:= StringReplace(X,'Ó','Ó');
  X:= StringReplace(X,'Ã￾','Í');
  X:= StringReplace(X,'ô','ô');
  X:= StringReplace(X,'â','â');
  X:= StringReplace(X,'"','"');
  X:= StringReplace(X,'ª','ª');
  X:= StringReplace(X,'º','º');
  X:= StringReplace(X,'Ã￾','Á');
  X:= StringReplace(X,'Ú','Ú');
  X:= StringReplace(X,'À','À');
  X:= StringReplace(X,'Ê','Ê');
  X:= StringReplace(X,'Â','Â');
  X:= StringReplace(X,'Ô','Ô');
  X:= StringReplace(X,'“','"');
  X:= StringReplace(X,'â€￾','"');
  X:= StringReplace(X,'Ã','à');
end;

procedure AnalyzeFilmPage(Address:string);
var Page:TStringList;
    valor:String;
    i:integer;
begin
  Page := TStringList.Create;
  valor:= Address;
  Page.Text:=GetPage(valor);
  SetField(fieldURL,valor);

  i:=FindLine('<h2>Sinopse</h2>">',Page,0);
  valor:=TextBetween(Page.Text,'<p>','</p>');
  SubstituiCaracteres(valor);
  valor:= StringReplace(valor, '<br />', #13#10);
  SetField(fieldDescription, valor);

  i:=FindLine('<meta property="og',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'content="','" />');
  SubstituiCaracteres(valor);
  SetField(fieldTranslatedTitle, valor);
  
  i:=FindLine('Original:</strong>',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'Original: ');
  SubstituiCaracteres(valor);
  SetField(fieldOriginalTitle, valor);

  i:=FindLine('<div class="item genres"><strong>',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'nero: ');
  SubstituiCaracteres(valor);
  SetField(fieldCategory,valor);

  i:=FindLine('<small class="year">',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'(',')');
  SetField(fieldYear,valor);

  i:=FindLine('<div class="item running_time">',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor:=TextBetween(valor,'o: ',' minutos');
  SetField(fieldLength,valor);

  i:=FindLine('<div class="item directors"><strong>',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'o: ');
  SubstituiCaracteres(valor);
  SetField(fieldDirector,valor);
  
  i:=FindLine('<div class="item producers">',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'Produtores: ');
  SubstituiCaracteres(valor);
  SetField(fieldProducer,valor);

  i:=FindLine('<div class="item country"><strong>',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'em: ');
  SubstituiCaracteres(valor);
  SetField(fieldCountry,valor);

  i:=FindLine('<div class="item cast"><strong>Elenco:</strong>',Page,0);
  valor:=Page.GetString(i);
  valor:= StringReplace(valor, '</span><span>', #13#10);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'Elenco: ');
  SubstituiCaracteres(valor);
  SetField(fieldActors,valor);

  i:=FindLine('<meta property="og:image"',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'content="','" />');
  valor:= StringReplace(valor,'195x289','290x478');
  GetPicture(valor);


  i:=FindLine('<li class="average_rating" style',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'a: ');
  SetField(fieldRating,valor);
  
  Page.free;
end;

procedure AnalyzePage(Address: String);
var Page:TStringList;
    i:integer;
    nome, url:string;
begin
  PickTreeClear;
  Page := TStringList.Create;
  Page.Text := GetPage(Address+MovieName);
  i:=0;
  repeat
    i:=FindLine('<h4 class="title">',Page,i+1);
    nome:=Page.GetString(i);
    nome:=TextBetween(nome,'title="','">');
    SubstituiCaracteres(nome);
    if (length(nome)>0) then
    begin
      url:=Page.GetString(i);
      url:=TextBetween(url,'"/','" title');
      url:='http://filmow.com/'+url;
      PickTreeAdd(nome,url);
    end;
  until i=-1;
 if PickTreeExec(Address) then
      AnalyzeFilmPage(Address);
  Page.free;
end;


begin
  PickListClear;
  MovieName := GetField(fieldOriginalTitle);
  if Input('Importar do filmow.com', 'Escreva o nome do filme:', MovieName) then
  begin
    MovieName := StringReplace(MovieName, ' ', '+');
    AnalyzePage('http://filmow.com/filmes/buscar/?q=');
  end;
end.

Posted: 2011-08-11 20:09:48
by antp
Hi,
Thanks, but you forgot the comment block at the top which contents script properties (not visible in AMC editor: you have to open the file in a text editor).

Note that the function SubstituiCaracteres is strange: it looks like a mix of very partial UTF8 decoding and some other replacement which seem more random :??: It could probably be replaced by a call to Utf8Decode.

Posted: 2011-08-12 03:54:10
by mikepax
Hi,
Thanks, I didn't know the Utf8Decode neider HTMLDecode and I was making it for my own and was afraid to miss some caractere. I think it's ok now, I inserted a window asking if the user wants search in movies or series .

Code: Select all

(***************************************************

Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/

[Infos]
Authors=MIKEPAX
Title=Filmow
Description=Movie importation script for filmow.com
Site=http://filmow.com/
Language=BR
Version=1.00
Requires=3.5.1
Comments=
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 Filmow;
var MovieName:string;
uses StringUtils1;

procedure AnalyzeFilmPage(Address:string);
var Page:TStringList;
    valor:String;
    i:integer;
begin
  Page := TStringList.Create;
  valor:= Address;
  Page.Text:=GetPage(valor);
  SetField(fieldURL,valor);

  i:=FindLine('<h2>Sinopse</h2>">',Page,0);
  valor:=TextBetween(Page.Text,'<p>','</p>');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  valor:= StringReplace(valor, '<br />', #13#10);
  SetField(fieldDescription, valor);

  i:=FindLine('<meta property="og',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'content="','" />');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldTranslatedTitle, valor);
  
  i:=FindLine('Original:</strong>',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'Original: ');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldOriginalTitle, valor);

  i:=FindLine('<div class="item genres"><strong>',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'nero: ');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldCategory,valor);

  i:=FindLine('<small class="year">',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'(',')');
  SetField(fieldYear,valor);

  i:=FindLine('<div class="item running_time">',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor:=TextBetween(valor,'o: ',' minutos');
  SetField(fieldLength,valor);

  i:=FindLine('<div class="item directors"><strong>',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'o: ');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldDirector,valor);
  
  i:=FindLine('<div class="item producers">',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'Produtores: ');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldProducer,valor);

  i:=FindLine('<div class="item country"><strong>',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'em: ');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldCountry,valor);

  i:=FindLine('<div class="item cast"><strong>Elenco:</strong>',Page,0);
  valor:=Page.GetString(i);
  valor:= StringReplace(valor, '</span><span>', #13#10);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'Elenco: ');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldActors,valor);

  i:=FindLine('<meta property="og:image"',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'content="','" />');
  valor:= StringReplace(valor,'195x289','290x478');
  GetPicture(valor);


  i:=FindLine('<li class="average_rating" style',Page,0);
  valor:=Page.GetString(i);
  HTMLRemoveTags(valor);
  valor := TextAfter(valor, 'a: ');
  SetField(fieldRating,valor);
  
  Page.free;
end;

procedure AnalyzePage(Address: String);
var Page:TStringList;
    i:integer;
    nome, url:string;
begin
  PickTreeClear;
  PickTreeAdd('Filmes','filmes/buscar/?q=');
  PickTreeAdd('Series','series/?q=');
  if PickTreeExec(nome) then
     Address:=Address+nome;
  PickTreeClear;
  Page := TStringList.Create;
  Page.Text := GetPage(Address+MovieName);
  i:=0;
  repeat
    i:=FindLine('<h4 class="title">',Page,i+1);
    nome:=Page.GetString(i);
    nome:=TextBetween(nome,'title="','">');
    nome:= Utf8Decode(nome);
    HTMLDecode(nome);
    if (length(nome)>0) then
    begin
      url:=Page.GetString(i);
      url:=TextBetween(url,'"/','" title');
      url:='http://filmow.com/'+url;
      PickTreeAdd(nome,url);
    end;
  until i=-1;
 if PickTreeExec(Address) then
      AnalyzeFilmPage(Address);
  Page.free;
end;


begin
  PickListClear;
  MovieName := GetField(fieldOriginalTitle);
  if Input('Importar do Filmow.com', 'Escreva o nome do filme:', MovieName) then
  begin
    MovieName := StringReplace(MovieName, ' ', '+');
    AnalyzePage('http://filmow.com/');
  end;
end.

Posted: 2011-08-12 09:06:21
by antp
Thanks ;)

Posted: 2011-08-12 18:24:23
by mikepax
You posted the Scrict as Filmov.ifs when the correct is Filmow.ifs.
Can you change it to Filmow (BR).ifs? Would make easier to identify it as a brasillian script because the site isn't very popullar yet.
Thanks.

Posted: 2011-08-12 22:24:09
by antp
of course, sorry :D

Posted: 2012-08-03 22:41:29
by ronniewo2
The code below fixes the script for filmow made by MIKEPAX ... The old version was not working...

Code: Select all

(***************************************************

Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/

[Infos]
Authors=MIKEPAX / Ronniewo2
Corrections (03/08/2012)=Ronnie W. Oliveira
Title=Filmow (BR)
Description=Movie importation script for filmow.com
Site=http://filmow.com/
Language=BR
Version=1.00
Requires=3.5.1
Comments=
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 Filmow;
var MovieName:string;
uses StringUtils1;

procedure AnalyzeFilmPage(Address:string);
var Page:TStringList;
    valor:String;
    i:integer;
begin
  Page := TStringList.Create;
  valor:= Address;
  Page.Text:=GetPage(valor);
 
  SetField(fieldMediaType,'DVD');

  i:=FindLine('<strong>Sinopse:',Page,0);
  valor:=TextBetween(Page.Text,'<p>','</p>');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  valor:= StringReplace(valor, '<br />', #13#10);
  SetField(fieldDescription, valor);

  i:=FindLine('<div class="movieTitle"><h1 itemprop="name">',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'<h1 itemprop="name">','</h1><');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldTranslatedTitle, valor);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'class="release">(',')');
  SetField(fieldYear,valor);

  i:=FindLine('Original: </strong><h2>',Page,0);
  valor:=Page.GetString(i);
  valor := TextBetween(valor, '</strong><h2>' , '</h2>');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldOriginalTitle, valor);

  i:=FindLine('itemprop="genre" rel="tag">',Page,0);
  valor:=Page.GetString(i);
  valor := TextBetween(valor, 'rel="tag">' , '</a>');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldCategory,valor);

  valor:=Page.GetString(i);
  valor := TextBetween(valor, 'itemprop="name">' , '</a>');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldDirector,valor);
 
  valor:=Page.GetString(i);
  valor:= StringReplace(valor, '</span><span ', #13#10);
  valor:= StringReplace(valor, 'itemprop="actor" itemscope itemtype="http://schema.org/Person">' , '');
  valor:= StringReplace(valor, 'itemprop="actor" itemscope itemtype="http://schema.org/Person" class="hide">' , '');
  HTMLRemoveTags(valor);
  valor:=TextAfter(valor, 'Elenco: ');
  valor:=copy(valor,1,pos(')mais',valor));
  valor:=Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldActors,valor);
  
  valor:=Page.GetString(i);
  valor := TextBetween(valor, 'de Origem: </strong><div><a href' , '</a>');
  valor := TextAfter(valor, '" >');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldCountry,valor);

  i:=FindLine('<meta property="og:image"',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'"og:image"','/><');
  valor:=TextBetween(valor,'content="','"');
  GetPicture(valor);

  Page.free;
end;

procedure AnalyzePage(Address: String);
var Page:TStringList;
    i:integer;
    nome, url:string;
begin
  PickTreeClear;
  {PickTreeAdd('Filmes','buscar/?q=');
  PickTreeAdd('Series','series/?q=');
  if PickTreeExec(nome) then}
  Address:=Address+'buscar/?q=';//nome;
  Page := TStringList.Create;
  Page.Text := GetPage(Address+MovieName);
  i:=0;
  repeat
    i:=FindLine('<h4 class="title">',Page,i+1);
    nome:=Page.GetString(i);
    nome:=TextBetween(nome,'<h4 class="title"><a href=','">');
    nome:=copy(nome,pos('=',nome)+2,length(nome));
    nome:= Utf8Decode(nome);
    HTMLDecode(nome);
    if (length(nome)>0) then begin
      url:=Page.GetString(i);
      url:=TextBetween(url,'<h4 class="title"><a href="/','/"');
      url:='http://filmow.com/'+url;
      PickTreeAdd(nome,url);
    end;
  until i=-1;
 if PickTreeExec(Address) then
      AnalyzeFilmPage(Address);
  Page.free;
end;


begin
  PickListClear;
  MovieName := GetField(fieldOriginalTitle);
  if Input('Importar do Filmow.com', 'Escreva o nome do filme:', MovieName) then
  begin
    MovieName := StringReplace(MovieName, ' ', '+');
    AnalyzePage('http://filmow.com/');
  end;
end.

Posted: 2012-08-04 21:42:09
by antp
Thanks.
I changed the version number to 1.10 when uploading it to my server.

Posted: 2012-08-10 23:14:41
by ronniewo2
Mr. Blobby wrote:Thanks.
I changed the version number to 1.10 when uploading it to my server.
Thanks. Below is the version 1.20 with some bug fixes...

Code: Select all

(***************************************************

Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/

[Infos]
Authors=MIKEPAX / Ronniewo2
Title=Filmow
Description=Movie importation script for filmow.com
Site=http://filmow.com/
Language=BR
Version=1.20
Requires=3.5.1
Comments=
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 Filmow;
var MovieName:string;
uses StringUtils1;

procedure AnalyzeFilmPage(Address:string);
var Page:TStringList;
    valor, valor2:String;
    j, i:integer;
begin
  Page := TStringList.Create;
  valor:= Address;
  Page.Text:=GetPage(valor);
  
  SetField(fieldMediaType,'DVD');

  i:=FindLine('<strong>Sinopse:',Page,0);
  valor:=TextBetween(Page.Text,'<p>','</p>');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  valor:= StringReplace(valor, '<br />', #13#10);
  SetField(fieldDescription, valor);

  i:=FindLine('<div class="movieTitle"><h1 itemprop="name">',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'<h1 itemprop="name">','</h1><');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldTranslatedTitle, valor);

  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'class="release">(',')');
  SetField(fieldYear,valor);

  i:=FindLine('Original: </strong><h2>',Page,0);
  valor:=Page.GetString(i);
  valor := TextBetween(valor, '</strong><h2>' , '</h2>');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldOriginalTitle, valor);

  i:=FindLine('itemprop="genre" rel="tag">',Page,0);
  valor:=Page.GetString(i);
  valor := TextBetween(valor, 'rel="tag">' , '</a></span><a href');
  HTMLRemoveTags(valor);
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldCategory,valor);

  valor:=Page.GetString(i);
  valor := TextBetween(valor, 'itemprop="name">' , '</a>');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldDirector,valor);
 
  valor:=Page.GetString(i);
  valor:= StringReplace(valor, '</span><span ', #13#10);
  valor:= StringReplace(valor, 'itemprop="actor" itemscope itemtype="http://schema.org/Person">' , '');
  valor:= StringReplace(valor, 'itemprop="actor" itemscope itemtype="http://schema.org/Person" class="hide">' , '');
  HTMLRemoveTags(valor);
  valor:=TextAfter(valor, 'Elenco: ');
  valor:=Utf8Decode(valor);
  j:=pos('mais?',valor);
  if j=0 then
     j:=pos('Países de',valor);
  valor:=copy(valor,1,j-1);
  j:=pos('Produtores:',valor);
  if j>0 then
     valor:=copy(valor,1,j-1);
  HTMLDecode(valor);
  SetField(fieldActors,valor);
  
  valor:=Page.GetString(i);
  valor := TextBetween(valor, 'de Origem: </strong><div><a href' , '</a>');
  valor := TextAfter(valor, '" >');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldCountry,valor);

  i:=FindLine('<meta property="og:image"',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'"og:image"','/><');
  valor:=TextBetween(valor,'content="','"');
  GetPicture(valor);

  Page.free;
end;

procedure AnalyzePage(Address: String);
var Page:TStringList;
    i:integer;
    nome, url:string;
begin
  PickTreeClear;
  Address:=Address+'buscar/?q=';//nome;
  Page := TStringList.Create;
  Page.Text := GetPage(Address+MovieName);
  i:=0;
  repeat
    i:=FindLine('<h4 class="title">',Page,i+1);
    nome:=Page.GetString(i);
    nome:=TextBetween(nome,'<h4 class="title"><a href=','">');
    nome:=copy(nome,pos('=',nome)+2,length(nome));
    nome:= Utf8Decode(nome);
    HTMLDecode(nome);
    if (length(nome)>0) then begin
      url:=Page.GetString(i);
      url:=TextBetween(url,'<h4 class="title"><a href="/','/"');
      url:='http://filmow.com/'+url;
      PickTreeAdd(nome,url);
    end;
  until i=-1;
 if PickTreeExec(Address) then
      AnalyzeFilmPage(Address);
  Page.free;
end;


begin
  PickListClear;
  MovieName := GetField(fieldOriginalTitle);
  if Input('Importar do Filmow.com', 'Escreva o nome do filme:', MovieName) then
  begin
    MovieName := StringReplace(MovieName, ' ', '+');
    AnalyzePage('http://filmow.com/');
  end;
end. 

Posted: 2012-08-11 14:04:09
by antp
Thanks

Posted: 2013-10-01 19:19:26
by ronniewo2
Please, check this version.

Code: Select all

(***************************************************

Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/

[Infos]
Authors=Ronniewo2 (Ronnie Oliveira)
Title=Filmow
Description=Movie importation script for filmow.com
Site=http://filmow.com/
Language=BR
Version=1.30
Requires=3.5.1
Comments=Previous author: MIKEPAX
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 Filmow;
var MovieName:string;
uses StringUtils1;

procedure AnalyzeFilmPage(Address:string);
var Page:TStringList;
    valor, valor2, Texto:String;
    j, i, k, Inicio, Fim:integer;
begin
  Page := TStringList.Create;
  valor:= Address;
  Page.Text:=GetPage(valor);
  valor2:=Page.Text;
  Inicio:=pos('<a itemprop="genre"', valor2);
  Fim:=pos('<meta itemprop="duration"', valor2);
  if Inicio>0 then begin
     Texto:=copy(valor2,Inicio,Fim-Inicio);
  end;

  valor:=Page.Text;
  Inicio:=pos('<meta property="og:description" content="',valor);
  Fim:=pos('<meta property="og:site_name"',valor);
  valor:=copy(valor,Inicio,Fim-Inicio);
  valor:=TextBetween(valor,'content="','">');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  valor:= StringReplace(valor, #13#10, '');
  SetField(fieldDescription, valor);

  i:=FindLine('<title>',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'<title>','| Filmow</title>');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldTranslatedTitle, valor);

  //Ano:
  valor:=Page.Text;
  Inicio:=pos('<small class="release">',valor);
  valor2:=copy(valor,Inicio,Inicio+20);
  valor2 := TextBetween(valor2, '">' , '</');
  if Inicio=0 then begin
    Inicio:=pos('<div class="item release_date">',valor);
    valor2:=copy(valor,Inicio,Inicio+100);
    valor2 := TextBetween(valor2, '<div>' , '</div>');
  end;
  valor2:= StringReplace(valor2, #9, ''); //tab}
  valor2:= StringReplace(valor2, #13#10, '');
  valor2:= Utf8Decode(valor2);
  HTMLDecode(valor2);
  HTMLRemoveTags(valor2);
  SetField(fieldYear,trim(valor2));

  i:=FindLine('<h2 class="movie-original-title">',Page,0);
  valor:=Page.GetString(i);
  valor := TextBetween(valor, 'title">' , '</h2>');
  valor:= Utf8Decode(valor);
  //*HTMLRemoveTags(valor);
  HTMLDecode(valor);
  SetField(fieldOriginalTitle, valor);

  valor:='';
  repeat
    j:=pos('<a itemprop="genre"', Texto);
    i:=pos('"btn-tag">', Texto);
    valor:=valor+' / '+TextBetween(Texto, '"btn-tag">' , '</a>');
    delete(Texto,j,i);
    delete(Texto,i,10);
  until j=0;
  delete(valor,1,3);
  delete(valor,length(valor)-2,3);
  HTMLRemoveTags(valor);
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  SetField(fieldCategory,valor);

  valor:=Page.Text;
  Inicio:=pos('<span itemprop="director"',valor);
  valor:=copy(valor,Inicio,Inicio+100);
  valor := TextBetween(valor, '="name">' , '</span>');
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  HTMLRemoveTags(valor);
  SetField(fieldDirector,valor);

  valor:=Page.Text;
  Inicio:=pos('<h2>Elenco</h2>',valor);
  Fim:=pos('class="tip movie-report">',valor);
  valor:=copy(valor,Inicio,Fim-Inicio);
  valor := TextBetween(valor, '<span itemprop="name">' , '</div>');
  valor:= StringReplace(valor, ' <em>', '..... ');
  valor:= StringReplace(valor, 'class="more">Mais', '');
  valor:= StringReplace(valor, #9, ''); //tab
  valor := StringReplace(valor, #13#10#13#10, #13#10);
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  HTMLRemoveTags(valor);
  delete(valor,length(valor)-5,6);
  SetField(fieldActors,valor);
  
  valor:=Page.Text;
  Inicio:=pos('ses de Origem:<',valor);
  if Inicio>0 then begin
     Fim:=pos('<ul class="videos-list">',valor);
     valor:=copy(valor,Inicio,Fim-Inicio);
     valor := TextBetween(valor, 'class="btn-tag">' , '</a>');
     valor:= Utf8Decode(valor);
     HTMLDecode(valor);
     HTMLRemoveTags(valor);
     SetField(fieldCountry,valor);
  end;

  i:=FindLine('<meta property="og:image"',Page,0);
  valor:=Page.GetString(i);
  valor:=TextBetween(valor,'content="','">');
  GetPicture(valor);
  
  valor:=Page.Text;
  Inicio:=pos('<span class="running_time">',valor);
  valor:=copy(valor,Inicio,Inicio+40);
  valor := TextBetween(valor, '_time">' , '</span>');
  valor:=copy(valor,1,pos(' ',valor)-1);
  valor:= Utf8Decode(valor);
  HTMLDecode(valor);
  HTMLRemoveTags(valor);
  SetField(fieldLength,valor);

  Page.free;
end;

procedure AnalyzePage(Address: String);
var Page:TStringList;
    i, j:integer;
    nome, url, ano:string;
begin
  PickTreeClear;
  Address:=Address+'buscar/filmes/?q=';//nome;
  Page := TStringList.Create;
  Page.Text := GetPage(Address+MovieName);
  i:=0;
  j:=0;
  repeat
    i:=FindLine('<a href="/',Page,i+1);
    nome:=Page.GetString(i);
    nome:=TextBetween(nome,'title="','" class="');
    nome:= Utf8Decode(nome);
    HTMLDecode(nome);
    if (length(nome)>0) then begin
      url:=Page.GetString(i);
      url:=TextBetween(url,'<a href="','" title="');
      url:='http://filmow.com/'+url;
      PickTreeAdd(nome,url);
    end;
  until i=-1;
 if PickTreeExec(Address) then
      AnalyzeFilmPage(Address);
  Page.free;
end;


begin
  PickListClear;
  MovieName := GetField(fieldOriginalTitle);
  if Input('Importar do Filmow.com', 'Escreva o nome do filme:', MovieName) then
  begin
    MovieName := StringReplace(MovieName, ' ', '+');
    AnalyzePage('http://filmow.com/');
  end;
end. 

Posted: 2013-10-01 21:23:56
by antp
Thanks