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