Page 4 of 5
Re: Загрузка инфы с сайта "Кинопоиск"
Posted: Sun Sep 26, 2010 3:32 am
by Radio
Добрый день! В версии 1.15 не загружался список актёров в главных ролях. Заменил как советовали csKinopoiskCastActor = '<a href="/level/.*?/people/(.*?)/">(.*?)</a></span>';
Загружается, но вместе с актёрами в карточку попадают и актёры дубляжа из раздела "Роли дублировали:"
Как их убрать и оставить только актёров?
и второй вопрос: можно ли загрузить информацию с Кинопоиска сразу для всех или выделенной группы фильмов, а не вручную по одному заходя в карточку к каждому фильму?
Спасибо!
Re: Загрузка инфы с сайта "Кинопоиск"
Posted: Wed Sep 29, 2010 8:45 pm
by iyoo
Добрый день, форум,
У меня дохрена фильмов и в общем-то меня задолбало жать на кнопку загрузки инфы с сайта кинопоиска, поэтому я сделал скрипт который обрабатывает пакетно список фильмов, который необходимо загрузить. Может еще кому понадобится. Скрипт написан очень топорно, потому что не знаю я этого вашего паскакаля. Его можно повесить на кнопку и обновлять вручную. Сделал бы и автоматически, но не знаю как получить список всех фильмов, а не только присутствующих в списке.
Code: Select all
const
csItem = '<a href=\".*?\">(.*?)</a>';
csTitle = '<title>(.*?)</title>';
csProducer = '<td class="type">продюсер</td><td>(.*?)</td>';
csActors = '<span class="title">В главных ролях:</span>(.*?)<span class="title">';
csDirector = '<td class="type">режиссер</td><td>(.*?)</td>';
csGenre = '<td class="type">жанр</td><td>(.*?)</td>';
csYear = '<td class="type">год</td><td class=""><a href=\".*?\">(.*?)</a></td>';
csRate = 'alt='#39'рейтинг (.*?)'#39' border';
function FindMediaInfo(const aHtmlText: string; const aRegEx: string; var aMatch: string): Boolean;
begin
with TRegExpr.Create(aRegEx) do
try
Result := Search(aHtmlText);
if Result then
aMatch := Match
finally
Free
end
end;
function FindMediaInfoMulti(const aHtmlText: string; const aRegExAll: string; const aRegExItem: string; var aMatch: string): Boolean;
var
sMatch: string;
begin
if FindMediaInfo(aHtmlText, aRegExAll, sMatch) then
begin
with TRegExpr.Create(aRegExItem) do
try
if Search(sMatch) then
repeat
if Match <> '...' then
begin
aMatch := aMatch + Match + ', ';
end;
until not SearchAgain;
finally
Free;
end;
Delete(aMatch, Length(aMatch) - 1, 2);
end;
end;
procedure ProcessItem(aItem: THmsScriptMediaItem; var aSuccessCount: Integer);
var
i: Integer;
html: string;
filmName: string;
res: Boolean;
sMatch: string;
begin
filmName := HmsHttpEncode(LeftCopy(aItem.Properties[4], Length(aItem.Properties[4]) - 4));
html := HmsDownloadURL('http://www.kinopoisk.ru/index.php?kp_query=' + filmName);
res := FindMediaInfo(html, '<a class="all" href=\"(.*?)\">.*?</a>', sMatch);
html := HmsDownloadURL('http://www.kinopoisk.ru' + sMatch);
if FindMediaInfo(html, csTitle, sMatch) then
begin
aItem.Properties[4] := sMatch;
end;
sMatch := '';
if FindMediaInfoMulti(html, csDirector, csItem, sMatch) then
begin
aItem.Properties[28] := sMatch;
end;
sMatch := '';
if FindMediaInfoMulti(html, csProducer, csItem, sMatch) then
begin
aItem.Properties[29] := sMatch;
end;
sMatch := '';
if FindMediaInfoMulti(html, csGenre, csItem, sMatch) then
begin
aItem.Properties[9] := sMatch;
end;
sMatch := '';
if FindMediaInfoMulti(html, csActors, csItem, sMatch) then
begin
aItem.Properties[36] := sMatch;
end;
if FindMediaInfo(html, csYear, sMatch) then
begin
aItem.Properties[8] := sMatch;
end;
if FindMediaInfo(html, csRate, sMatch) then
begin
aItem.Properties[30] := sMatch;
end;
aSuccessCount := aSuccessCount + 1;
end;
var
i, iSuccessCount: Integer;
MediaItemList: THmsScriptMediaItemList;
begin
MediaItemList := HmsCurrentMediaListItems;
try
iSuccessCount := 0;
if MediaItemList.Count > 0 then begin
HmsShowProgress('Загрузка метаданных...');
try
for i := 0 to MediaItemList.Count - 1 do begin
if HmsCancelPressed then
Break
else begin
ProcessItem(MediaItemList[i], iSuccessCount);
HmsSetProgress(Round(((i + 1) / MediaItemList.Count) * 100))
end
end
finally
HmsHideProgress
end
end;
if HmsCancelPressed then
MessageDlg('Загрузка прервана пользователем.', mtError, mbOK, 0)
else if iSuccessCount > 0 then
MessageDlg('Загрузка метаданных прошла успешно.', mtInformation, mbOK, 0)
else
MessageDlg('Нет информации для загрузки.', mtError, mbOK, 0)
finally
MediaItemList.Free
end;
HmsDatabaseAutoSave;
ProcessMediaResult := True
end.
Re: Загрузка инфы с сайта "Кинопоиск"
Posted: Wed Dec 15, 2010 1:14 am
by Elka
Скрипт замечательный, только пришлось его немножко подточить напильником (до ума ещё не довёл-доведу - выложу).
Но вот возник один вопрос, как его научить цеплять картинки(эскизы)? Картинка это какой по счёту параметр объекта коллекции? И как поступать с файлом картинки? Сначала предварительно куда-то скачать?
Re: Загрузка инфы с сайта "Кинопоиск"
Posted: Wed Feb 09, 2011 7:01 pm
by VIPet
Никак не пойму где все эти скрипты прописывать,чтобы кинопоиск пакетно использовать?
Re: Загрузка инфы с сайта "Кинопоиск"
Posted: Thu Sep 15, 2011 1:24 pm
by Captain
А кто может пояснить, почему с Кинопоиска не подгружается описание содержания фильма, а с Thetvdb.com - подгружается но почему-то на английском, хотя на самом сайте есть русское описание???
Re: Загрузка инфы с сайта "Кинопоиск"
Posted: Thu Oct 13, 2011 10:49 pm
by Captain
Совет по исправлению скрипта для загрузки содержания фильмов с Кинопоиска в этой теме я нашел, но вот по сериалам - как сделать русский язык? Что изменить в скрипте?
Re: Загрузка инфы с сайта "Кинопоиск"
Posted: Sun Oct 16, 2011 2:33 pm
by PyCu4
Господа, прошу вас поделится рабочим скриптом для кинопоиска.
А то у меня не грузит ни описание ни актёров.
И такой вопрос: а комплексно все фильмы одним кликом можно... ?
Re: Загрузка инфы с сайта "Кинопоиск"
Posted: Mon Oct 17, 2011 10:05 pm
by Captain
Кстати, в итоге и у меня не грузит ни то, ни другое
Re: Загрузка инфы с сайта "Кинопоиск"
Posted: Thu Dec 08, 2011 12:14 pm
by achilles_85
Всем привет. Проблема такая: при загрузке инфы с кинопоиска почему-то актеры грузятся по 2 раза. Как это исправить? HMS 1.20.3
Re: Загрузка инфы с сайта "Кинопоиск"
Posted: Fri Dec 09, 2011 8:37 am
by achilles_85
Неужели ни у кого нет такой проблемы?