Sharereactor (RU) (large picture) doesn't work picture
Sharereactor (RU) (large picture) doesn't work picture
Hello.
Everything fine with this script, but pic doesn't work at all. Made this message about error "HTTP/1.1 403 Forbidden" May be somebody can help me ?
THX.
Everything fine with this script, but pic doesn't work at all. Made this message about error "HTTP/1.1 403 Forbidden" May be somebody can help me ?
THX.
[RUS]
Подправил скрипт. Получилось сразу два
ShareReactor (RU) (large pic - DVD).ifs
--------------------------------------------------------------------------------------------------------------------------------------------------------
ShareReactor (RU) (large pic - file info).ifs
Подправил скрипт. Получилось сразу два
- ShareReactor (RU) (large pic - DVD).ifs - качает картинку, но не трогает информацию о файле
ShareReactor (RU) (large pic - file info).ifs - качает и картику и информацию и файле
ShareReactor (RU) (large pic - DVD).ifs
Code: Select all
// GETINFO SCRIPTING
// Use only for sharereactor.ru releases
(***************************************************
* Movie information import script for: *
* Sharereactor Russian, *
* http://www.sharereactor.ru/ *
* *
* (c) 2003 By AIG *
* corrected by KoSeA & Leonid_Z *
* *
* Update: 18.06.2004 *
* - Fixed some false checkboxes *
* *
* Known issues: *
* - time can't be added to catalog in some cases *
* *
* For use with Ant Movie Catalog 3.4.3 *
* http://www.antp.be/software/moviecatalog *
* *
* The source code of the script can be used in *
* another program only if full credits to *
* script author and a link to Ant Movie Catalog *
* website are given in the About box or in *
* the documentation of the program *
* *
***************************************************)
program Sharereactorru;
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
Page: TStringList;
LineNr: Integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
PickTreeClear;
LineNr := 0;
LineNr := FindLine('По вашему запросу отобрано', Page, LineNr);
if LineNr > -1 then
begin
PickTreeAdd('По вашему запросу отобрано', '');
AddMoviesTitles(Page, LineNr);
end;
if PickTreeExec(Address) then
begin
Page.Free;
Page := TStringList.Create;
Page.Text := GetPage(Address);
SetField(fieldURL, Address);
AnalyzeMoviePage(Page)
end
Page.Free;
end;
procedure AnalyzeMoviePage(Page: TStringList);
var
Line, Value, value1, cuchr: string;
LineNr, i: Integer;
time_length: Integer;
BeginPos, EndPos: Integer;
begin
// Original Title & TranslatedTitle & Year
LineNr := FindLine('<TD VALIGN="TOP"><IMG SRC=', Page, 0); // Картинка
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('SRC=', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := pos('></TD>', Line);
if EndPos > 0 then
EndPos := EndPos - 1;
Value := copy(Line, BeginPos, EndPos - BeginPos );
GetPicture(Value, False);
end
LineNr := FindLine(' ', Page, LineNr+1); // Поиск имени фильма РУС
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('<H1>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 4;
EndPos := pos('</H1>', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLRemoveTags(Value);
HTMLDecode(Value);
SetField(fieldTranslatedTitle, Value);
end
LineNr := FindLine(' ', Page, LineNr+1); // Переведенное название
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldOriginalTitle, Value);
end
LineNr := FindLine(' ', Page, LineNr+1); // Год выхода
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
SetField(fieldYear, Value);
end;
//Category
LineNr := FindLine(' ', Page, LineNr+1); // Жанр
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('("', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 2;
EndPos := pos('")', Line)-1;
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldCategory, Value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Режисcер
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldDirector,Value);
end
LineNr := FindLine(' ', Page, LineNr+1); // Актеры
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
HTMLRemoveTags(Value);
SetField(fieldActors,value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Описание
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldDescription, Value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Продюссер
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldProducer, Value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Продолжительность
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
time_length := strtoint( copy( Value, 0, 1 ), 0) * 60 + strtoint( copy( Value, 2, 3 ), 0 ) * 10 + strtoint( copy( Value, 3, 4 ), 0 );
SetField(fieldLength, inttostr(time_length));
end;
LineNr := FindLine(' ', Page, LineNr+1); // Язык
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldLanguages, Value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Комментарии
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldComments, Value);
end;
DisplayResults;
end;
procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
var
Line: string;
MovieTitle, MovieAddress: string;
StartPos,EndPos,AddPos: Integer;
begin
LineNr := LineNr + 10;
Line := Page.GetString(LineNr);
StartPos := pos('<A', Line);
repeat
if StartPos > 0 then
begin
StartPos:=StartPos+8;
EndPos := Length(Line);
Line:=copy(Line,StartPos,EndPos - StartPos);
MovieAddress := copy(Line, 2, pos('">', Line) -2 );
StartPos := pos('">', Line) + 2;
MovieTitle := copy(Line, StartPos, pos('</A>', Line) - StartPos);
HTMLDecode(Movietitle);
PickTreeAdd(MovieTitle, 'http://sharereactor.ru' + MovieAddress);
end;
StartPos := Length(Movietitle)+StartPos;
StartPos := pos('<A', Line);
until StartPos <= 0;
end;
begin
if CheckVersion(3,4,0) then
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('IMDb Import', 'Enter the title of the movie:', MovieName) then
begin
AnalyzePage('http://sharereactor.ru/cgi-bin/mzsearch.cgi?search='+UrlEncode(MovieName));
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
end.
ShareReactor (RU) (large pic - file info).ifs
Code: Select all
// GETINFO SCRIPTING
// Use only for sharereactor.ru releases
(***************************************************
* Movie information import script for: *
* Sharereactor Russian, *
* http://www.sharereactor.ru/ *
* *
* (c) 2003 By AIG *
* corrected by KoSeA & Leonid_Z *
* *
* Update: 18.06.2004 *
* - Fixed some false checkboxes *
* *
* Known issues: *
* - time can't be added to catalog in some cases *
* *
* For use with Ant Movie Catalog 3.4.3 *
* http://www.antp.be/software/moviecatalog *
* *
* The source code of the script can be used in *
* another program only if full credits to *
* script author and a link to Ant Movie Catalog *
* website are given in the About box or in *
* the documentation of the program *
* *
***************************************************)
program Sharereactorru;
var
MovieName: string;
function TextBetween(WholeText: string; BeforeText: string; AfterText: string; var Found: integer ): string;
var
FoundPos: Integer;
WorkText: string;
begin
Result := '';
FoundPos := Pos(BeforeText, WholeText);
if FoundPos = 0 then
Exit;
WorkText := Copy(WholeText, FoundPos + Length(BeforeText), Length(WholeText));
Found := FoundPos + Length(BeforeText);
if AfterText = '\n' then begin
FoundPos := Length(WorkText) + 1;
end else begin
FoundPos := Pos(AfterText, WorkText);
end;
if FoundPos = 0 then
Exit;
Result := Copy(WorkText, 1, FoundPos - 1);
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: Integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
PickTreeClear;
LineNr := 0;
LineNr := FindLine('По вашему запросу отобрано', Page, LineNr);
if LineNr > -1 then
begin
PickTreeAdd('По вашему запросу отобрано', '');
AddMoviesTitles(Page, LineNr);
end;
if PickTreeExec(Address) then
begin
Page.Free;
Page := TStringList.Create;
Page.Text := GetPage(Address);
SetField(fieldURL, Address);
AnalyzeMoviePage(Page)
end
Page.Free;
end;
procedure AnalyzeMoviePage(Page: TStringList);
var
Line, Value, value1, cuchr: string;
LineNr, i: Integer;
time_length: Integer;
FoundPos, FoundPos2: Integer;
BeginPos, EndPos: Integer;
begin
// Original Title & TranslatedTitle & Year
LineNr := FindLine('<TD VALIGN="TOP"><IMG SRC=', Page, 0); // Картинка
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('SRC=', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := pos('></TD>', Line);
if EndPos > 0 then
EndPos := EndPos - 1;
Value := copy(Line, BeginPos, EndPos - BeginPos );
GetPicture(Value, False);
end
LineNr := FindLine(' ', Page, LineNr+1); // Поиск имени фильма РУС
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('<H1>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 4;
EndPos := pos('</H1>', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLRemoveTags(Value);
HTMLDecode(Value);
SetField(fieldTranslatedTitle, Value);
end
LineNr := FindLine(' ', Page, LineNr+1); // Переведенное название
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldOriginalTitle, Value);
end
LineNr := FindLine(' ', Page, LineNr+1); // Год выхода
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
SetField(fieldYear, Value);
end;
//Category
LineNr := FindLine(' ', Page, LineNr+1); // Жанр
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('("', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 2;
EndPos := pos('")', Line)-1;
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldCategory, Value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Режисcер
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldDirector,Value);
end
LineNr := FindLine(' ', Page, LineNr+1); // Актеры
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
HTMLRemoveTags(Value);
SetField(fieldActors,value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Описание
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldDescription, Value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Продюссер
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldProducer, Value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Продолжительность
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
time_length := strtoint( copy( Value, 0, 1 ), 0) * 60 + strtoint( copy( Value, 2, 3 ), 0 ) * 10 + strtoint( copy( Value, 3, 4 ), 0 );
SetField(fieldLength, inttostr(time_length));
end;
LineNr := FindLine(' ', Page, LineNr+1); // Язык
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldLanguages, Value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Комментарии
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldComments, Value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Дополнительно
LineNr := FindLine(' ', Page, LineNr+1); // Рейтинг
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Value := TextBetween(Line, '</B> ', '/10', FoundPos);
if Value <> '' then begin
HTMLDecode(Value);
for i := 0 to length(Value) do begin
if copy(Value, i, 1) = '.' then begin
Value := copy(Value, 1, i-1);
break;
end;
end;
SetField(fieldRating, Value);
end;
end;
LineNr := FindLine('<TABLE ', Page, LineNr+1);
if LineNr > -1 then
begin
LineNr := FindLine(' ', Page, LineNr+1); // Формат
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldVideoFormat, Value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Качество
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldMediaType, Value);
end;
LineNr := FindLine(' ', Page, LineNr+1); // Видео
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
Value := TextBetween(Line, '</B> ', ';', FoundPos);
if Value <> '' then begin
Delete( Line, 1, FoundPos - 1 );
HTMLDecode(Value);
SetField(fieldResolution, Value);
end;
Value := TextBetween(Line, '; ', ' fps', FoundPos);
if Value <> '' then begin
Delete( Line, 1, FoundPos - 1 );
HTMLDecode(Value);
SetField(fieldFramerate, Value);
end;
Value := TextBetween(Line, '; ', ' Кбит/с', FoundPos);
if Value <> '' then begin
Delete( Line, 1, FoundPos - 1 );
HTMLDecode(Value);
for i := 0 to length(Value) do begin
if copy(Value, i, 1) = '.' then begin
Value := copy(Value, 1, i-1);
break;
end;
end;
SetField(fieldVideoBitrate, Value);
end;
Value := TextBetween(Line, '; ', '\n', FoundPos);
if Value <> '' then begin
Delete( Line, 1, FoundPos - 1 );
HTMLDecode(Value);
SetField(fieldVideoFormat, Value);
end;
end;
LineNr := FindLine(' ', Page, LineNr+1); // Звук
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
Value := TextBetween(Line, '</B> ', ' kbit/s', FoundPos);
if Value <> '' then begin
Delete( Line, 1, FoundPos - 1 );
FoundPos := Length(Value);
for i := Length(Value) downto 0 do begin
if (copy(Value, i, 1) < '0') or (copy(Value, i, 1) > '9') then begin
Break;
end;
end;
Value := Left( Line, i-2 );
HTMLDecode(Value);
SetField(fieldAudioFormat, Value);
Delete( Line, 1, i-1 );
Value := TextBetween(Line, ' ', ' kbit/s', FoundPos);
if Value <> '' then begin
HTMLDecode(Value);
SetField(fieldAudioBitrate, Value);
end;
end else begin
Value := Trim(TextBetween(Line, '</B> ', '\n', FoundPos));
HTMLDecode(Value);
SetField(fieldAudioFormat, Value);
end;
end;
LineNr := FindLine(' ', Page, LineNr+1); // Размер
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
Value := TextBetween(Line, '</B> ', ' Мб', FoundPos);
if Value <> '' then begin
HTMLDecode(Value);
SetField(fieldSize, Value);
end;
end;
LineNr := FindLine(' ', Page, LineNr+1); // Количество дисков
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
FoundPos := 0;
i := 0;
while pos( 'href', Line ) > 0 do begin
i := i+1;
Delete( Line, 1, pos( 'href', Line ) + 2 );
end;
SetField(fieldDisks, inttostr(i));
end;
end;
DisplayResults;
end;
procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
var
Line: string;
MovieTitle, MovieAddress: string;
StartPos,EndPos,AddPos: Integer;
begin
LineNr := LineNr + 10;
Line := Page.GetString(LineNr);
StartPos := pos('<A', Line);
repeat
if StartPos > 0 then
begin
StartPos:=StartPos+8;
EndPos := Length(Line);
Line:=copy(Line,StartPos,EndPos - StartPos);
MovieAddress := copy(Line, 2, pos('">', Line) -2 );
StartPos := pos('">', Line) + 2;
MovieTitle := copy(Line, StartPos, pos('</A>', Line) - StartPos);
HTMLDecode(Movietitle);
PickTreeAdd(MovieTitle, 'http://sharereactor.ru' + MovieAddress);
end;
StartPos := Length(Movietitle)+StartPos;
StartPos := pos('<A', Line);
until StartPos <= 0;
end;
begin
if CheckVersion(3,4,0) then
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('IMDb Import', 'Enter the title of the movie:', MovieName) then
begin
AnalyzePage('http://sharereactor.ru/cgi-bin/mzsearch.cgi?search='+UrlEncode(MovieName));
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
end.
Do these scripts replace or complete this one ?
http://antp.be/temp/scripts/ShareReacto ... 20pic).ifs
(does this one still work ?)
If they have to be included in AMC, please send them to me by e-mail since I can't copy/paste correctly russian text with my european Windows
Thanks.
http://antp.be/temp/scripts/ShareReacto ... 20pic).ifs
(does this one still work ?)
If they have to be included in AMC, please send them to me by e-mail since I can't copy/paste correctly russian text with my european Windows
Thanks.
I find and replace wrong strings :
99str
99str
Code: Select all
//Æàíð
LineNr := FindLine(' ', Page, LineNr+1);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldCategory, Value);
end;
Fixing get picture code (marked with begin/end picture fix comments)
Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=m a x
Title=Sharereactor.ru
Description=Import data & picture from Sharereactor.ru
Site=Sharereactor.ru
Language=RU
Version=1.03
Requires=3.5.0
Comments=Based on the script made for version 3.x by AIG corrected by KoSeA & Leonid_Z & m a x
License=
GetInfo=1
[Options]
***************************************************)
program Sharereactorru;
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
Page: TStringList;
LineNr: Integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
PickTreeClear;
LineNr := 0;
LineNr := FindLine('По вашему запросу отобрано', Page, LineNr);
if LineNr > -1 then
begin
PickTreeAdd('По вашему запросу отобрано', '');
AddMoviesTitles(Page, LineNr);
end;
if PickTreeExec(Address) then
begin
Page.Free;
Page := TStringList.Create;
Page.Text := GetPage(Address);
SetField(fieldURL, Address);
AnalyzeMoviePage(Page)
end
Page.Free;
end;
procedure AnalyzeMoviePage(Page: TStringList);
var
Line, Value, value1, cuchr: string;
LineNr, i: Integer;
BeginPos, EndPos: Integer;
begin
// Original Title & TranslatedTitle & Year
//Русское название
LineNr := FindLine('<td><H1>', Page, 0);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('<H1>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 4;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos-22 );
HTMLDecode(Value);
SetField(fieldTranslatedTitle, Value);
end
//Оригинальное название
LineNr := FindLine(' ', Page, LineNr+1);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldOriginalTitle, Value);
end
//Год выхода
LineNr := FindLine(' ', Page, LineNr+1);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
SetField(fieldYear, Value);
end;
//Жанр
LineNr := FindLine(' ', Page, LineNr+1);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldCategory, Value);
end;
//Режисcер
LineNr := FindLine(' ', Page, LineNr+1);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldDirector,Value);
end
//Актеры
LineNr := FindLine(' ', Page, LineNr+1);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
HTMLRemoveTags(Value);
SetField(fieldActors,value);
end;
//Описание
LineNr := FindLine(' ', Page, LineNr+1);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldDescription, Value);
end;
//Продюссер
LineNr := FindLine(' ', Page, LineNr+1);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldProducer, Value);
end;
//Язык
LineNr := FindLine('Язык', Page, LineNr+1);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
SetField(fieldLanguages, Value);
end;
//Комментарии
LineNr := FindLine('Примечания', Page, LineNr+1);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1 );
HTMLDecode(Value);
HTMLRemoveTags(Value)
SetField(fieldComments, Value);
end;
//Оценка
LineNr := FindLine('Оценка пользователей:', Page, LineNr+1);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('</B> ', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 5;
EndPos := pos('/10', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos );
SetField(fieldRating, Value);
// IntToStr(Round(StrToFloat(Value))));
end;
// begin picture fix
//Картинка
LineNr := FindLine('<TD VALIGN="TOP"><IMG SRC=', Page, 0);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('SRC=', Line);
if BeginPos > 0 then
BeginPos := BeginPos+5; //+ 1;
EndPos:=pos('.jpg', Line);
if EndPos < 0 then
EndPos:=pos('.gif', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+4 );
GetPicture(Value);
end
// end picture fix
// DisplayResults;
end;
procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
var
Line: string;
MovieTitle, MovieAddress: string;
StartPos,EndPos,AddPos: Integer;
begin
LineNr := LineNr + 10;
Line := Page.GetString(LineNr);
StartPos := pos('<A', Line);
repeat
if StartPos > 0 then
begin
StartPos:=StartPos+8;
EndPos := Length(Line);
Line:=copy(Line,StartPos,EndPos - StartPos);
MovieAddress := copy(Line, 2, pos('">', Line) -2 );
StartPos := pos('">', Line) + 2;
MovieTitle := copy(Line, StartPos, pos('</A>', Line) - StartPos);
HTMLDecode(Movietitle);
PickTreeAdd(MovieTitle, 'http://sharereactor.ru' + MovieAddress);
end;
StartPos := Length(Movietitle)+StartPos;
StartPos := pos('<A', Line);
until StartPos <= 0;
end;
begin
if CheckVersion(3,5,0) then
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('Sharereactor.ru Import', 'Введите название фильма:', MovieName) then
begin
AnalyzePage('http://sharereactor.ru/cgi-bin/mzsearch.cgi?search='+UrlEncode(MovieName));
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
end.