08-07-2024, 21:21
Когато решите да създавате video addon за Kodi е добре да обмислите предварително нещата: дали е целесъобразно и добре ли ще се получи или само половинчато... В тази тема ще разгледам някои фактори, които е хубаво да вземете под внимание.
ЛЕГЕНДА НА ПОНЯТИЯТА
видео хостинг -> сайт за споделяне на видео клипове за вграждане в други сайтове (например YouTube. При него по подразбиране видеата са публично достъпни за търсене чрез търсачка и в каталози, а при повечето други хостинги са частни и достъпни, само ако разполагате с директен линк до страницата им);
IA -> Inputstream Adaptive addon за Kodi (да не се бърка с AI). Поддържа допълнителни формати субтитри, манифести, DRM и други екстри, като адаптивен стрийминг (които вградения плейър в Kodi не поддържа);
API -> Application Programming Interface (да не се бърка с Агенция Пътна Инфраструктура). Обезпечава правила на форматирани заявки между клиент и сървър и гарантира конкретен формат и съдържание на отговора на конкретна заявка къмто съответен възел (ендпойнт). Най често, форматът на отговорите е JSON или XML, а заявките съдържат някакъв API Key за достъп (статичен или динамичен).
URL resolver -> скрипт за извличане на директни "пускаеми" линкове. Използва се за резолфване на Obfuscation code, Minified code, криптиран код с някакъв шифър или просто изкуствено усложнен до някакъв математически израз на Javascript, който би отказал почти всекиго да го подхване... Такива резолфвъри са yt-dlp, Universal URL Resolver, ResolveURL и др. (аз използвам последния, понеже лесно се вгражда в Kodi и активно се поддържа).
ПРЕПОРЪКИ
- Сайта да разполага с API
- Сорс кода на сайта да не се променя често
- Сайта да използва вътрешен видео хостинг
- Сайта да използва външен видео хостинг, за който разполагате със скрипт за извличане (някакъв URL resolver)
- Сайта да предлага отделни субтитри (за не дублираното съдържание) или hardsub в самите кадри
ЛОШИ ВАРИАНТИ
- Сайта не разполага с API и се налага да скрейпвате сорс кода с регулярни изрази
- Сорс кода на сайта бива променян всяка седмица или дори по-често
- Сайта използва външни видео хостинги (голям брой или пък малко, но екзотични и рядко използвани), за които няма наличен скрипт за извличане
- Сайта не предлага никакви български субтитри или пък са вградени в манифеста на стрийма
- За защита на стриймовете в страниците се използват някакви Javascript-ове
- Сайта използва неподдържан формат за DRM
Ако си избирате сайт за който да напишете addon за Kodi е препоръчително той да разполага с API, защото резултата ще е надежден, стабилен и ще продължава да работи без значение на козметичните промени в сорс кода на фронтенда (сайта). С API разполагат само големите стрийминг услуги. Малките любителски проекти от типа Wordpress с някакъв Movie скин отгоре не разполагат с нищо подобно, освен вграденото в Wordpress REST API. По принцип, дори и да го използвате, резултата от заявките до него пак ще изискват регулярни изрази, така, че малко се обезмисля използването му, но в някои случаи е наистина полезно - когато сайта е зад Cloudflare! И така...
Когато трябва да скрейпнете заглавието на филма, линка към неговата страница в сайта, обложката му и евентуално други елементи като описание, времетраене и т.н., не се опитвайте да го направите наведнъж с един регулярен израз: С една заявка прочетете цялата страница и запишете отговора й в една променлива и с отделни регулярни изрази скрейпвайте поотделно каквото потрябва от този отговор! По този начин правите само една заявка към самата страница и можете да прочитате разхвърляни из нея тагове с метаданни (както е в повечето от случаите). Изпращайте оригиналните хедъри при заявката ви, същите, които и вашия собствен браузър би изпращал при отварянето на тази страница. По този начин трафикът от заявките на потребителите (на вашия addon) ще бъде неразличим от "органичния" трафик на web browser-а на потребителите на сайта.
Сорс кода на сайта се променя прекалено често: ако няма стабилен API за достъп до услугата, то не си правете труда изобщо да се захващате, защото е уморителна игра на котка и мишка.
Видео хостинг: В идеалния случай, ще се използва вътрешен видео хостинг т.е. видеата винаги ще са работещи (ще се отварят), няма да бъдат свалени от хостинга поради неактивност или предявени претенции за нарушени авторски права. В сравнително оптимистичните случаи, се използва само един външен хостинг т.е. има да имплементирате кода за извличане на стриймовете от едно място. Хубаво е, ако кода на страница за вграждане (iframe) използва открит кода на стриймовете, лесен за скрейпване с регулярни изрази. В повечето случаи обаче, имаме Obfuscation code и се налага да разчитате на чужд URL resolver. Трябва да помислите, как/откъде потребителите ви да получават редовни ъпдейти на URL resolver-а, защото той е измежду най-важните компоненти на вашия addon, въпреки, че не го разработвате вие. Ако той е ъпдейтнат има голяма вероятност да разполага с актуален resolver за външния хостинг, който ви тормози. Например, може да предвидите инсталация на хранилище откъдето URL resolver-а да се ъпдейтва автоматично.
Субтитри и DRM: При перфектни обстоятелства, в кода на страницата с iframe-а ще има директен линк до файл със субтитри, какъвто Kodi поддържа. Чрез съответните python команди, ще можете да ги зареждате след стартиране на видеото. Такъв късмет се случва сравнително рядко. Също много добър вариант е да намерите сайт, където субтитрите се вграждат като hardsub в самите кадри на видео файловете. В повечето случаи имаме "манджа" от множество различни видео хостинги в които заедно с видео файла е ъплоуднат и файл за субтитри. При някои от тях, файла си стои външен и плейъра им го зарежда, ако е наличен и съвпадне като език с този на web browser-а. При останалите случаи, субтитрите се вграждат в манифеста HLS/MPD на видео файла. Вградения плейър в Kodi ffplay (ffmpeg) не поддържа MPEG DASH манифести, но поддържа HLS и при това, само половинчато и не поддържа субтитрови стриймове в HLS, както и AES криптиране на чънковете (DRM). На помощ в такъв случай, може да разчитате само на IA, защото той поддържа както различни формати субтитри от Kodi (като например WebVTT), така и вградени субтитри в манифестите, така и допълнителни манифести като MPD и ISM. Също така поддържа и Google Widevine DRM, а в недалечното бъдеще и на ClearKey и Microsoft PlayReady. Накрая, ще бъде добавена поддръжка и на Apple FairPlay (според "пътната им карта"). За добавки, ориентирани към родна аудитория е несериозно да очаквате хората да търсят ръчно субтитри, чрез добавки за субтитри, при условие, че в самия сайт автоматично си зареждат!
Защити: Ако сайта е изградил някаква форма на защита за скриване на самите iframe-ове или чрез Javascript инжектира съдържанието в себе си, ще се наложи да възпроизведете въпросната функционалност чрез python, иначе добавката ви няма да достигне до съдържанието, което очаквате да зарежда! Използването на специални хедъри, потребителски ключове, потребителски сесии (изискват login в сайта с валиден акаунт), Obfuscation code, anti-adbloker-и, anti-developer-tools, Cloudflare и т.н. други мизерии се срещат под една или друга форма, понякога самостоятелно, а друг път като комбинации между тях. Това не бива да ви отказва. Дайте си достатъчно време да експериментирате, да изпробвате различни варианти, докато намерите работещо решение и да го приложите.