(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Ilya & LA
Title=Friends-Forum.com
Description=Movie importation script for Imports movies info (RU) with picture from Friends-Forum.com
Site=www.friends-forum.com
Language=RU
Version=1.3 (01-Apr-2008)
Requires=3.5.0
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]
***************************************************)
// ver 1.2 - modified by LA
// ver 1.3 - fixed by bad4u
// format of pages has been updated; text has been changed
program FriendsForum;
const
BaseAddress = 'http://www.friends-forum.com/';
var
MovieName: string;
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
ID, FilmName, Line: String;
Page: TStringList;
FilmPage: TStringList;
BeginPos, EndPos, Lines: Integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
BeginPos := FindLine('
О Фильме | ', Page,0);
EndPos := FindLine('
', Page,0);
if BeginPos> 0 then
begin
Line:='';
for Lines := BeginPos+1 to EndPos do //Получение строк с названиями и адресами
Line:=Line+Page.GetString(Lines);
PickTreeClear; //Очистка дерева фильмов
PickTreeAdd('Поиск по слову: ' + MovieName, '');
repeat
BeginPos := Pos(' align=center>',Line);
ID := copy(Line, BeginPos, EndPos - BeginPos); //Получить адрес страницы фильма
BeginPos := Pos('">',Line)+12;
Delete(Line,1,BeginPos);
BeginPos := 1;
EndPos := Pos('
',Line)-1;
FilmName := Copy(Line, BeginPos, EndPos); //Получить название фильма
FilmName := StringReplace(FilmName,' ',' ');
PickTreeAdd(FilmName, BaseAddress + ID);
end;
until BeginPos < 1;
end;
If PickTreeExec(Address) Then
AnalyzeMoviePage(Address);
end;
procedure AnalyzeMoviePage(Address: String); //Получение информации о выбраном фильме
var
Page: TStringList;
LineNr : Integer;
Line, Value : String;
BeginPos, EndPos : Integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
SetField(fieldURL,Address); //Получение URL
BeginPos := FindLine('> » Информация о фильме', Page,0);
EndPos := FindLine('Рейтинг пользователей:', Page,0);
Line:='';
for LineNr := BeginPos to EndPos do //Получить строки с информацией
Line:=Line+Page.GetString(LineNr);
Value := ''; //импорт картинки
BeginPos := Pos('
Название:',Line)+16; //переведенное название
Delete(Line,1,BeginPos);
BeginPos :=1;
EndPos := Pos(' ',Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldTranslatedTitle,Value);
BeginPos := pos('Оригинальное название', Line)+26; //оригинальное название
Delete(Line,1,BeginPos);
BeginPos :=1;
EndPos := Pos(' ',Line);;
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldOriginalTitle, Value);
BeginPos := pos('выхода', Line)+10; //год
Delete(Line,1,BeginPos);
BeginPos :=1;
EndPos := BeginPos+5;
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldYear, Value);
BeginPos := pos('Жанр', Line)+9; //жанр
Delete(Line,1,BeginPos);
BeginPos :=1;
EndPos := Pos(' ',Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldCategory, Value);
BeginPos := pos('Режиссер', Line)+13; //режиссер
Delete(Line,1,BeginPos);
BeginPos :=1;
EndPos := Pos(' ',Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldDirector, Value);
BeginPos := pos('ролях', Line)+10; //в ролях
Delete(Line,1,BeginPos);
BeginPos :=1;
EndPos := Pos(' ',Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldActors, Value);
BeginPos := pos('фильме', Line)+11; //О фильме
Delete(Line,1,BeginPos);
BeginPos :=1;
EndPos := Pos(' ',Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldDescription,Value);
BeginPos := pos('Выпущено', Line)+13; //студия (продюсер)
Delete(Line,1,BeginPos);
BeginPos :=1;
EndPos := Pos(' ',Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldProducer, Value);
BeginPos := pos('Язык', Line)+9; //язык
Delete(Line,1,BeginPos);
BeginPos :=1;
EndPos := Pos(' ',Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldLanguages, Value);
BeginPos := pos('Примечания', Line)+15; //коментарии
Delete(Line,1,BeginPos);
BeginPos :=1;
EndPos := Pos('',Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldComments, Value);
BeginPos := Pos('Рейтинг пользователей:',Line)+31; //рейтинг (качество)
EndPos := Pos(' / 10 (',Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
Value := Trim(Left(StringReplace(Value, '.', ' '),2));
Value := IntToStr(StrToInt(Value,0));
SetField(fieldRating,Value);
//DisplayResults;
end;
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('Поиск на Friends-Forum.com', 'Введите название фильма:', MovieName) then
AnalyzePage('http://www.friends-forum.com/modules.php?name=Movie_News&file=index&orderfield=&direct=&pagenum=&searchterm='+UrlEncode(MovieName)+'&category=%C2%F1%E5&vlang=&let=&rezhiser=&artist=&format=%C2%F1%E5&kachestvo=%C2%F1%E5&storynum=100');
end.