Posted: 2014-02-11 16:48:51
u mnie też padł
Code: Select all
// Scenariusz (2013-05-10 by MaAd)
Value := GetMaterials(Page, 'role-screenwriter');
if (Length(Value) > 0) then
SetField(fieldWriter, Trim(Value));
// Muzyka (2013-05-10 by MaAd)
Value := GetMaterials(Page, 'role-music');
if (Length(Value) > 0) then
SetField(fieldComposer, Trim(Value));
Code: Select all
// Plakat
Line := TextBetween(Page.Text, '<div class=posterLightbox>', '</div>');
case GetOption('Plakat') of
1: begin
Szukane := TextBetween(Line, 'href="', '"');
// Szukane := TextBefore(Szukane, '?', '');
GetPicture(Szukane);
end;
2: begin
Szukane := TextBetween(Line, 'src="', '"');
// Szukane := TextBefore(Szukane, '?', '');
GetPicture(Szukane);
end;
end;
Ten skrypt ze stycznia nie działa na mojej wersji programu (4.2). Działa tylko ten starszy, po odpowiednich przeróbkach. Nie wiem jak wrzucić tu na stronę plik tekstowy ze starym skryptem (alfa 18), ten na pewno działa poprawnie, używam go bez problemów.wojteos wrote:wysyłałem nowy skrypt
Code: Select all
(*********************************************************
* *
* VERSION HISTORY *
* *
* 2.0.0.3 (13.03.2014) by wojteos *
* - edycja pierwsza *
* *
*********************************************************)
program filmwebUser;
uses
StringUtils7552;
type
TFilmUzytkownika = record
Tytul, Rok, AdresHTM, Ocena: String;
end;
var
MovieName, MAddress : String;
StrSep : String;
FilmyUzytkownika : TStringList;
// nowe zmienne
PlikUzytkownika : String;
function Czysc(napis: String): String;
begin
Result := StringReplace(napis, #9, '');
Result := StringReplace(Result, #10, '');
Result := StringReplace(Result, #13, '');
end;
procedure AnalizujFilmyUzytkownika (Nazwa1PlikuUzytkownika : String);
// przy załóżeniu że mamy pełny dostęp ustalenie limitu na stronie oraz ilości stron
// ilość filmów na ostatniej ????????????
var
Strona : TStringList;
NazwaPlik1, NazwaPlik2, strExtPlik, strNrPlik : String;
NrPlik, m : Integer;
begin // =================================== procedure AnalizujFilmyUzytkownika
Strona := TStringList.Create; // utworzenie kolekcji
strExtPlik := ExtractFileExt(Nazwa1PlikuUzytkownika);
NazwaPlik1 := Copy(Nazwa1PlikuUzytkownika, 1, Pos(strExtPlik, Nazwa1PlikuUzytkownika)-1);
// pobranie numeru pierwszego pliku
m := Length(NazwaPlik1);
while (StrGet(NazwaPlik1, m) >= '0') and (StrGet(NazwaPlik1, m) <= '9') do
begin
strNrPlik := StrGet(NazwaPlik1, m) + strNrPlik;
m := m-1;
end; // while (StrGet(NazwaPlik1, m) >= '0') and (StrGet(NazwaPlik1, m) <= '9')
NrPlik := StrToInt(strNrPlik, 0);
NazwaPlik1 := Copy(NazwaPlik1, 1, Pos(strNrPlik, NazwaPlik1)-1);
NazwaPlik2 := NazwaPlik1 + IntToStr(NrPlik) + strExtPlik;
while FileExists(NazwaPlik2) do
begin
Strona.LoadFromFile(NazwaPlik2);
PobierzDaneFilmow(Strona.Text);
NrPlik := NrPlik + 1;
NazwaPlik2 := NazwaPlik1 + IntToStr(NrPlik) + strExtPlik;
end;
Strona.Free;
end; // =================================== procedure AnalizujFilmyUzytkownika
procedure PobierzDaneFilmow(StronaHTM : String);
var
Strona : TStringList;
Linia : String;
NrLinia : Integer;
FilmId, FilmTytul, FilmAdres, FilmRok : String;
FilmUzytkownika : TFilmUzytkownika;
begin // ========================================= procedure PobierzDaneFilmow
Strona := TStringList.Create;
Strona.Text := UTF8Decode(StronaHTM);
//Jeden film w jednej linii
Strona.Text := StringReplace(Strona.Text, '<div class="voteFilmTitle', #13#10 + '<div class="voteFilmTitle');
linia:=Strona.Text;
NrLinia := FindLine('<div class=' + StrSep + 'voteFilmTitle' + StrSep + '><a href=' + StrSep + 'http://www.filmweb.pl', Strona, 0);
while NrLinia > -1 do
begin //Pobieranie tytułu i URL
Linia := Czysc(Strona.GetString(NrLinia));
FilmId := TextBetween(Linia, 'entityName=film&id=', StrSep+' target='+StrSep+'_blank');
if (Pos('<br>', Linia) > 0)
then
FilmTytul := TextBetween(Linia, 'target='+StrSep+'_blank'+StrSep+' title='+StrSep, '<br>')
else
FilmTytul := TextBetween(Linia, 'target='+StrSep+'_blank'+StrSep+' title='+StrSep, ' <div class='+StrSep+'countryLabel'+StrSep+'>');
FilmRok := TextBetween(FilmTytul, '(',')'); //Pobierania roku produkcji
FilmTytul := TextBetween(FilmTytul, '>','</a>');
FilmAdres := 'http://www.filmweb.pl/film/' + FilmTytul + '-' + FilmRok + '-' + FilmId;
FilmUzytkownika.Tytul := FilmTytul;
FilmUzytkownika.Rok := FilmRok;
FilmUzytkownika.AdresHTM := FilmAdres;
FilmUzytkownika.Ocena := TextBetween(Linia, '<div class='+StrSep+'rateText'+StrSep+'><span style='+StrSep+'font-color:#8D000;font-weight:bold'+StrSep+'>', '</span>/10</div>');
FilmTytul := FilmTytul + ' (' + FilmRok + ')';
{ Dodanie do drzewka }
if (FindLine(FilmAdres, FilmyUzytkownika, 0) < 0) then
begin
PickTreeAdd(FilmTytul, FilmAdres);
FilmyUzytkownika.Add(FilmUzytkownika.Tytul+'|'+FilmUzytkownika.Rok+'|'+FilmUzytkownika.AdresHTM+'|'+FilmUzytkownika.Ocena);
AddNewMovieToQueue;
end;
NrLinia := FindLine('<div class=' + StrSep + 'voteFilmTitle' + StrSep + '><a href=' + StrSep + 'http://www.filmweb.pl', Strona, NrLinia + 1);
end; // while NrLinia > -1
Strona.Free;
end; // ========================================= procedure PobierzDaneFilmow
function GetStringDelim(Delimiter: char; var s: string): string;
var tym_str: string; poz_sp: integer;
begin {======= function GetString =======}
poz_sp:=Pos(Delimiter,s);
if poz_sp=0 then begin
tym_str:=s; s:=''; GetStringDelim:=tym_str
end
else begin
tym_str:=Copy(s,1,poz_sp-1);
Delete(s,1,poz_sp);
s:=Trim(s);
GetStringDelim:=tym_str
end
end; {======= function GetString =======}
var
iloscNowychFilmow, nowyFilmStart, i : Integer;
strT : string;
begin
if CheckVersion(4,1,0) then begin
i:=GetIteration;
if GetIteration = 0 then begin // iteracja pierwsza
FilmyUzytkownika := TStringList.Create;
PickTreeClear;
case GetOption('StringSep') of
0: StrSep := '';
1: StrSep := '"';
end;
StrSep := '"';
PlikUzytkownika := 'y:\testamc\test1.htm';
if Input('Import filmów ocenianych na filmweb.pl', 'Podaj nazwę 1-ego pliku użytkownika: ', PlikUzytkownika) then
AnalizujFilmyUzytkownika(PlikUzytkownika);
iloscNowychFilmow := FilmyUzytkownika.Count;
end else begin//if GetIteration = 0
i:=GetIteration;
strT:=FilmyUzytkownika.GetString(i-1);
SetField(fieldTranslatedTitle, GetStringDelim('|', strT));
SetField(fieldYear, GetStringDelim('|', strT));
SetField(fieldURL, GetStringDelim('|', strT));
SetField(fieldRating, Trim(strT));
end;
end else
ShowMessage('Skrypt wymaga programu Ant Movie Catalog w wersji 4.1.0.0 lub nowszej');
end.
Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=wojteos
Title=fillmweb_User.ifs
Description=filmy z filmweb oceniane przez użytkownika zapisane lokalnie
Site=
Language=PL
Version=2.0.0.5
Requires=4.1.2
Comments=baza AMC może być pusta, nie tworzy duplikatów
License=
GetInfo=0
RequiresMovies=0
[Options]
[Parameters]
***************************************************)
(*********************************************************
* *
* VERSION HISTORY *
* *
* 2.0.0.4 (14.03.2014) by wojteos *
* - edycja pierwsza *
* *
*********************************************************)
program filmwebUser;
uses
StringUtils7552;
type
TFilmUzytkownika = record
Tytul, Rok, AdresHTM, Ocena: String;
end;
var
MovieName, MAddress : String;
StrSep : String;
FilmyUzytkownika : TStringList;
// nowe zmienne
PlikUzytkownika : String;
function Czysc(napis: String): String;
begin
Result := StringReplace(napis, #9, '');
Result := StringReplace(Result, #10, '');
Result := StringReplace(Result, #13, '');
end;
procedure AnalizujFilmyUzytkownika (NazwaKataloguUzytkownika : String);
// przegląda katalog użytkownika i analizuje zapisane strony filmweb w plikach htm
var
Katalog, Strona : TStringList;
NazwaPliku : String;
NrPlik, m : Integer;
strKatalog: string;
begin // =================================== procedure AnalizujFilmyUzytkownika
if not DirectoryExists(NazwaKataloguUzytkownika) then begin
ShowMessage('Brak katalogu!');
Exit;
end // brak taalogu
else begin
Katalog := TStringList.Create; // utworzenie kolekcji katalogu
Katalog.Text := ListDirectory(NazwaKataloguUzytkownika,'*.htm');
m := Katalog.Count;
if Katalog.Count=0 then begin
ShowMessage('Katalog: '+NazwaKataloguUzytkownika+' nie zawiera plików htm!');
Exit;
end // katalog nie zawiera htm
else begin
Strona := TStringList.Create; // utworzenie kolekcji strony htm
for m:=0 to Katalog.Count-1 do begin
NazwaPliku := Copy(Katalog.GetString(m), 1, Pos(#9, Katalog.GetString(m))-1) ;
Strona.LoadFromFile(NazwaPliku);
PobierzDaneFilmow(Strona.Text);
end;
Strona.Free;
Katalog.Free;
end; // są w katalogu htm
end; // jest katalog
end; // =================================== procedure AnalizujFilmyUzytkownika
procedure PobierzDaneFilmow(StronaHTM : String);
var
Strona : TStringList;
Linia : String;
NrLinia : Integer;
FilmId, FilmTytul, FilmAdres, FilmRok : String;
FilmUzytkownika : TFilmUzytkownika;
begin // ========================================= procedure PobierzDaneFilmow
Strona := TStringList.Create;
Strona.Text := UTF8Decode(StronaHTM);
//Jeden film w jednej linii
Strona.Text := StringReplace(Strona.Text, '<div class="voteFilmTitle', #13#10 + '<div class="voteFilmTitle');
linia:=Strona.Text;
NrLinia := FindLine('<div class=' + StrSep + 'voteFilmTitle' + StrSep + '><a href=' + StrSep + 'http://www.filmweb.pl', Strona, 0);
while NrLinia > -1 do
begin //Pobieranie tytułu i URL
Linia := Czysc(Strona.GetString(NrLinia));
FilmId := TextBetween(Linia, 'entityName=film&id=', StrSep+' target='+StrSep+'_blank');
if (Pos('<br>', Linia) > 0)
then
FilmTytul := TextBetween(Linia, 'target='+StrSep+'_blank'+StrSep+' title='+StrSep, '<br>')
else
FilmTytul := TextBetween(Linia, 'target='+StrSep+'_blank'+StrSep+' title='+StrSep, ' <div class='+StrSep+'countryLabel'+StrSep+'>');
FilmRok := TextBetween(FilmTytul, '(',')'); //Pobierania roku produkcji
FilmTytul := TextBetween(FilmTytul, '>','</a>');
FilmAdres := 'http://www.filmweb.pl/film/' + FilmTytul + '-' + FilmRok + '-' + FilmId;
FilmUzytkownika.Tytul := FilmTytul;
FilmUzytkownika.Rok := FilmRok;
FilmUzytkownika.AdresHTM := FilmAdres;
FilmUzytkownika.Ocena := TextBetween(Linia, '<div class='+StrSep+'rateText'+StrSep+'><span style='+StrSep+'font-color:#8D000;font-weight:bold'+StrSep+'>', '</span>/10</div>');
FilmTytul := FilmTytul + ' (' + FilmRok + ')';
{ Dodanie do drzewka }
if (FindLine(FilmAdres, FilmyUzytkownika, 0) < 0) then
begin
PickTreeAdd(FilmTytul, FilmAdres);
FilmyUzytkownika.Add(FilmUzytkownika.Tytul+'|'+FilmUzytkownika.Rok+'|'+FilmUzytkownika.AdresHTM+'|'+FilmUzytkownika.Ocena);
AddNewMovieToQueue;
end;
NrLinia := FindLine('<div class=' + StrSep + 'voteFilmTitle' + StrSep + '><a href=' + StrSep + 'http://www.filmweb.pl', Strona, NrLinia + 1);
end; // while NrLinia > -1
Strona.Free;
end; // ========================================= procedure PobierzDaneFilmow
function GetStringDelim(Delimiter: char; var s: string): string;
var tym_str: string; poz_sp: integer;
begin {======= function GetString =======}
poz_sp:=Pos(Delimiter,s);
if poz_sp=0 then begin
tym_str:=s; s:=''; GetStringDelim:=tym_str
end
else begin
tym_str:=Copy(s,1,poz_sp-1);
Delete(s,1,poz_sp);
s:=Trim(s);
GetStringDelim:=tym_str
end
end; {======= function GetString =======}
var
iloscNowychFilmow, nowyFilmStart, i : Integer;
strT : string;
begin
if CheckVersion(4,1,0) then begin
i:=GetIteration;
if GetIteration = 0 then begin // iteracja pierwsza
FilmyUzytkownika := TStringList.Create;
PickTreeClear;
case GetOption('StringSep') of
0: StrSep := '';
1: StrSep := '"';
end;
StrSep := '"';
PlikUzytkownika := 'D:\testamc\';
if Input('Import filmów ocenianych na filmweb.pl', 'Podaj nazwę katalogu z zapisanymi plikami stron: ', PlikUzytkownika) then
AnalizujFilmyUzytkownika(PlikUzytkownika);
iloscNowychFilmow := FilmyUzytkownika.Count;
end else begin//if GetIteration = 0
i:=GetIteration;
strT:=FilmyUzytkownika.GetString(i-1);
SetField(fieldTranslatedTitle, GetStringDelim('|', strT));
SetField(fieldYear, GetStringDelim('|', strT));
SetField(fieldURL, GetStringDelim('|', strT));
SetField(fieldRating, Trim(strT));
end;
end else
ShowMessage('Skrypt wymaga programu Ant Movie Catalog w wersji 4.1.0.0 lub nowszej');
end.