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(...) из примера выше.