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
Неужели ни у кого нет такой проблемы?