1. Введение
Узнайте, как написать ваше первое видео расширение для Kodi/XBMC из этого урока!
2. Инструменты
Если вы делали урок про то, как написать скрипт HelloWorld, то у вас уже, наверное, установлен текстовый редактор, который нам понадобится и в этом уроке. Может быть, стоит установить еще и видео плеер, раз мы теперь имеем дело с видео. Вдобавок к Kodi установите vlc, такой же замечательный и открытый.
— VLC www.videolan.org/vlc
3. Установка
В этом уроке нам понадобятся два достаточно простых видео плагина. Найдите их в git-репозитории.
Можете загрузить себе на компьютер оба zip-файла и установить видеодополнения из zip-файла внутри интерфейса Kodi. Также можете распаковать их в папку userdata/addons.
4. Первый запуск
Выполните команду Система >> Дополнения >> Мои дополнения >> Видео дополнения >> Example Kodi video Plugin и вы увидите несколько тестовых видео с некоего интернет-сервера.
5. Что это было
Видео плагин сделал свое дело. Как?
По существу он проверяет веб-сайт на наличие размещенных видео. В этом примере мы напрямую ссылаемся на видео, а могли бы искать и вычищать контент из нашего онлайн-источника.
Отправив видеогиперссылку в Kodi, мы передаем управление нашему видеоплееру, который буферизует видео и затем воспроизводит его так же, как из любого другого источника.
6. Структура
main.py — вот она, ваша программа на Python.
addon.xml — а это ее описание в формате xml.
icon.png — значок для вашего плагина. Нарисуйте его в квадрате величиной 256 или 512 пикселей, сделайте это красиво.
Readme.md — прочтите это на странице используемого в этом уроке видеодополнения на GitHub, чтобы знать, что и как в общем оно делает, а также откуда его можно скачать.
7. Текст программы
Скоро вы увидите текст видеодополнения. Код на Python, который составляет большую его часть, хранимый в простом текстовом файле.
Дадим Kodi понять, что нам нужно.
Сделаем еще кое-что…
Чтобы не заморачиваться с парсингом или API ради ссылок на видеофайлы/потоки с какого-либо веб-сайта или онлайн-ресурса, как это делается в «настоящих» расширениях Kodi (потому что совсем не за тем был написан этот плагин), берем фиксированный набор свойств.
А теперь объявим это…
Сообщим Kodi еще кое о чем…
Без списка категорий никуда.
Расскажем Kodi, как мы перечислим наши видео…
… и где они находятся.
Добавим маршрутизацию в наш плагин…
… и передадим это Kodi.
8. Изменим код!
Умея запускать ваше расширение, понимая его структуру и зная, что оно делает, изменим его!
Откройте папку с вашим видео плагином, исправьте код. Будьте готовы запустить его с помощью Kodi, когда сделаете это. Для этого переключитесь между текстовым редактором и Kodi.
Откройте main.py из вашей папки userdata и как следует его исправьте.
Не стесняйтесь сделать ссылки на другие файлы в формате jpeg или другие онлайн-видео. Создайте новый жанр и посмотрите, что после этого будет в Kodi.
Сохраните файл с помощью вашего текстового редактора и запустите видеодополнение из Kodi. Обратите внимание, как изменились видео в видеодополнении и его структура.
Поздравляем с тем, что ваше видеорасширение теперь воспроизводит новые видео из интернета!
9. Потоковое видео
Как опытный программист, я вам сейчас расскажу кое-что про «настоящие» видеодополнения.
Во-первых, я бы им не стал без документации на codedocs.xyz, которая поможет и вам не хуже какой-нибудь вики-энциклопедии.
codedocs.xyz/xbmc/xbmc
Кстати о документации. Руководство по ListItem будет вам все время помогать, если вы свяжетесь с потоковым видео.
Сами по себе вы мало что сделаете, полагаясь на стриминговую платформу, которая вам и передаст данные для вывода в Kodi элементов с URL-адресами видео. Когда вашим видео понадобится DRM, полагайтесь на InputStream.Adaptive.
Смотря какие у вас данные, можете соответствующим образом использовать ваш модуль запросов. В Kodi заявлена полная его поддержка, включая файлы куки и сеансы. В двух словах, с ним вы будете
- получать необходимую информацию из интернета (пусть для начала это будут заголовки и url-адреса);
- создавать элементы, которые Kodi будет рассматривать как источники видео (см. об этом xbmcplugin.addDirectoryItem() and xbmcgui.ListItem()).
Знакомство с написанием плагинов для работы с потоковым видео будет неполным без чтения исходников этих самых расширений, таких как AsciiDisco для Nexflix или Sandmann79 для Amazon/AmazonVOD.
Хотите прочитать об этом больше? Идите на ветку форума.
10. Заключительные соображения
На самом деле, написание видеодополнений — дело довольно простое, как только вы получите хорошую базовую структуру. Можете парсить с помощью Regex многие онлайн-источники, либо размещать там свои собственные видео. С помощью простых в использовании дополнительных модулей у вас в Kodi появятся видеоклипы с youtube или vevo-видео.
Не стесняйтесь обсуждать этот урок на ветке форума, если у вас есть какие-либо вопросы.
11. Кое-что еще
Никогда не вводите табуляцию вместо пробелов в Python. Не спрашивайте почему. Просто запомните это.