1 (2017.05.30 23:29:18 отредактировано михаил)

Тема: kinokrad.co

Разработка подкаста!!!

"Хорошо написанная программа — это программа, написанная 2 раза" :-X
Спасибо сказали: Hunter, Dr.Dru2

2

Re: kinokrad.co

Там ссылки для фильмов зашифрованы в

var filmSourceM = "#06807407407003a02f02f06d02d06306406e02e06b06906e06f06b07206106402e06306f02f06606906c06507302f06407704d05406f07704d07506904506805a07206803104106403006c02d03405102f03103403903603203503603703503102f04e06906b06907406102e04b06f06a06506d07906106b06102e03203003103602e04804405206907002e06d070034";

Функция расшифровки этой лабуды будет такая (это просто unicode коды по три байта, тевёртый всегда ноль - выкинут):

///////////////////////////////////////////////////////////////////////////////
// Декодирование ссылок для HTML5 плеера
string Html5Decode(string sEncoded) {
  if ((sEncoded=="") || (Pos(".", sEncoded) > 0)) return sEncoded;
  if (sEncoded[1]=="#") sEncoded = Copy(sEncoded, 2, Length(sEncoded)-1);
  string sDecoded = "";
  for (int i=1; i <= Length(sEncoded); i+=3) {
    sDecoded += "\\u0" + Copy(sEncoded, i, 3);
  }
  return HmsJsonDecode(sDecoded);
}

Теперь можно искать на странице такой зашифрованный текст и расшифровывать:

if (HmsRegExMatch('filmSourceM\\s*=\\s*"(.*?)"', sHtml, sLink, 1, PCRE_SINGLELINE)) {
    // Создаём ссылку на конкретный фильм
    sLink = Html5Decode(sLink);
    CreateMediaItem(PodcastItem, mpTitle, sLink);

}

В случае сериалов, там вообще не зашиврована, как я понял, ссылка на json плейлист серий:

this.videoplayer = new Uppod({
  m:"video",
  uid:"videoplayer_315702",
  pl:'/playlist?315702&html5=1',
  vast_preroll: 'https://homenick.biz/assets/vendor/f182fd17d9dd8f0a94c699e799a14491.xml?v=3.0',
  st:'uppodvideo'
});

Короче, участок кода в подкасте теперь может быть примерно такой:

+ открыть спойлер
  // =========================================================================
  // Сбор информации о фильме
  if (HmsRegExMatch('Год:.*?(\\d{4})', sHtml, sVal)) PodcastItem[mpiYear] = sVal;
  if (HmsRegExMatch('Продолжительность.*?(\\d{2}:\\d{2}:\\d{2})', sHtml, sVal)) gsTime = sVal+'.000';
  if (HmsRegExMatch('Продолжительность.*?(\\d+)\\s*мин', sHtml, sVal)) gsTime = HmsTimeFormat(StrToInt(sVal)*60)+'.000';
  if (HmsRegExMatch('Жанр:(.*?)</li>'    , sHtml, sVal)) PodcastItem[mpiGenre    ] = HmsHtmlToText(sVal);
  if (HmsRegExMatch('Страна:(.*?)</li'  , sHtml, sVal)) PodcastItem[mpiCountry  ] = HmsHtmlToText(sVal);
  if (HmsRegExMatch('Перевод:(.*?)</li' , sHtml, sVal)) PodcastItem[mpiTranslate] = HmsHtmlToText(sVal);
  if (HmsRegExMatch('Качество:(.*?)</li', sHtml, sVal)) PodcastItem[mpiQuality  ] = HmsHtmlToText(sVal);
  if (HmsRegExMatch('Режиссёр:(.*?)</li', sHtml, sVal)) PodcastItem[mpiDirector ] = HmsHtmlToText(sVal);
  if (HmsRegExMatch('(<div[^>]+"description".*?)<br', sHtml, sVal)) PodcastItem[mpiComment] = HmsHtmlToText(sVal);
  // =========================================================================
  
  // Ищем ссылки на видео или плейлист сериала
  if (HmsRegExMatch("pl:'(/playlist.*?)'", sHtml, sLink, 1, PCRE_SINGLELINE)) {
    // Загружаем плейлист серий
    sData = HmsDownloadURL(gsUrlBase + sLink, 'Referer: '+mpFilePath, true);
    // Создаём список серий
    CreateSeriesFromPlaylist(PodcastItem, sData);
  
  } else if (HmsRegExMatch('filmSourceM\\s*=\\s*"(.*?)"', sHtml, sLink, 1, PCRE_SINGLELINE)) {
    // Создаём ссылку на конкретный фильм
    sLink = Html5Decode(sLink);
    CreateMediaItem(PodcastItem, mpTitle, sLink);

  } else {
    
    CreateErrorItem('Не удалось найти ссылку на фильм на странице сайта.');
    
  }

Естественно там же в коде должна быть добавлена функция Html5Decode(...) из примера выше.

Sony Bravia KDL-32CX523
Спасибо сказали: Hunter1