Добрый день! В версии 1.15 не загружался список актёров в главных ролях. Заменил как советовали csKinopoiskCastActor = '<a href="/level/.*?/people/(.*?)/">(.*?)</a></span>';
Загружается, но вместе с актёрами в карточку попадают и актёры дубляжа из раздела "Роли дублировали:"
Как их убрать и оставить только актёров?
и второй вопрос: можно ли загрузить информацию с Кинопоиска сразу для всех или выделенной группы фильмов, а не вручную по одному заходя в карточку к каждому фильму?
Спасибо!
Загрузка инфы с сайта "Кинопоиск"
Re: Загрузка инфы с сайта "Кинопоиск"
Добрый день, форум,
У меня дохрена фильмов и в общем-то меня задолбало жать на кнопку загрузки инфы с сайта кинопоиска, поэтому я сделал скрипт который обрабатывает пакетно список фильмов, который необходимо загрузить. Может еще кому понадобится. Скрипт написан очень топорно, потому что не знаю я этого вашего паскакаля. Его можно повесить на кнопку и обновлять вручную. Сделал бы и автоматически, но не знаю как получить список всех фильмов, а не только присутствующих в списке.
У меня дохрена фильмов и в общем-то меня задолбало жать на кнопку загрузки инфы с сайта кинопоиска, поэтому я сделал скрипт который обрабатывает пакетно список фильмов, который необходимо загрузить. Может еще кому понадобится. Скрипт написан очень топорно, потому что не знаю я этого вашего паскакаля. Его можно повесить на кнопку и обновлять вручную. Сделал бы и автоматически, но не знаю как получить список всех фильмов, а не только присутствующих в списке.
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: Загрузка инфы с сайта "Кинопоиск"
Скрипт замечательный, только пришлось его немножко подточить напильником (до ума ещё не довёл-доведу - выложу).
Но вот возник один вопрос, как его научить цеплять картинки(эскизы)? Картинка это какой по счёту параметр объекта коллекции? И как поступать с файлом картинки? Сначала предварительно куда-то скачать?
Но вот возник один вопрос, как его научить цеплять картинки(эскизы)? Картинка это какой по счёту параметр объекта коллекции? И как поступать с файлом картинки? Сначала предварительно куда-то скачать?
Re: Загрузка инфы с сайта "Кинопоиск"
Никак не пойму где все эти скрипты прописывать,чтобы кинопоиск пакетно использовать?
Re: Загрузка инфы с сайта "Кинопоиск"
А кто может пояснить, почему с Кинопоиска не подгружается описание содержания фильма, а с Thetvdb.com - подгружается но почему-то на английском, хотя на самом сайте есть русское описание???
Re: Загрузка инфы с сайта "Кинопоиск"
Совет по исправлению скрипта для загрузки содержания фильмов с Кинопоиска в этой теме я нашел, но вот по сериалам - как сделать русский язык? Что изменить в скрипте?
Re: Загрузка инфы с сайта "Кинопоиск"
Господа, прошу вас поделится рабочим скриптом для кинопоиска.
А то у меня не грузит ни описание ни актёров.
И такой вопрос: а комплексно все фильмы одним кликом можно... ?
А то у меня не грузит ни описание ни актёров.
И такой вопрос: а комплексно все фильмы одним кликом можно... ?
Re: Загрузка инфы с сайта "Кинопоиск"
Кстати, в итоге и у меня не грузит ни то, ни другое
Re: Загрузка инфы с сайта "Кинопоиск"
Всем привет. Проблема такая: при загрузке инфы с кинопоиска почему-то актеры грузятся по 2 раза. Как это исправить? HMS 1.20.3