Приветствую Вас, Гость!
[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Zeltorix  
Шпаргалка разработчика
labideb | 10.02.2024, 19:41 | # 1
Репутация: 0
Друзья, поделитесь своим опытом создания плагинов. С чего стоит начать изучать вопрос? Может быть из документации или лучше посмотреть на примере готовых плагинов типа simple.video.plugin? Может быть дадите советы по ide, плагинам, упрощающим разработку? Может быть поделитесь ссылками на документацию или статьи, которые помогут в разработке? Например, по input adaptive или tam? Суровая официальная документация с kodi.tv может отпугнуть новичка, а значит лишит нас потенциально интересных плагинов. Старшие, расскажите о своем опыте и дайте совет новичкам
 
Zeltorix | 10.02.2024, 23:09 | # 2
Репутация: 12
Хоть я и не программист, для меня это просто хобби, а сюда пришёл больше, чтобы получить/перенять опыт в разработке)

Прежде всего определится с языком на котором будешь писать:
  • Python легко изучить, материала в интернете много, но не весь актуален.
  • C++ возможно сложен в изучении, сам его изучаю сейчас.


Про выбор IDE:
  • Если Python то есть два варианта на мой взгляд
  • PyCharm, редакция Community бесплатна. Просто установил и тут же можно работать, из минусов очень прожорлив для ОЗУ.
  • Visual Studio Code, придется установить кучу плагинов. По виду плагины обрабатывают информацию с запозданием, но не критично.
  • Если C++ на мой взгляд
  • Visual Studio, описывать в принципе мне нечего изучаю)
    Про документацию:
  • Основная документация по этим языкам тут. Обновляется часто.
  • Для обложек тут. Обновляется часто.
  • Также в вики, но очень много устаревшего встречается.
    Примеры:
  • На Python - как раз с ру комьюнити автор, хотя всё описание на английском.
  • На C++ - по мне не особо всё понятно, но разобраться при желании можно.
  • А так можешь любой плагин посмотреть, практически на все плагины выкладывают исходники, что касается C++, а Python и так обычные текстовые файлы)


И что ещё нужно знать по мимо тех языков если делаете сетевой плагин. Как работают протоколы, какие методы запросов существуют и как они работают, так же изучить заголовки для этих запросов. По мимо этого нужны минимальные знания HTML, CSS, JavaScript и его ответвлений, уметь пользоваться инструментами разработчика в браузере.

Именно по inputstream.adaptive документация есть, как раз для python.
На счёт других inputstream:
Там везде принцип одинаковый
Это тоже самое
Код
#KODIPROP:inputstream=inputstream.ffmpegdirect
 что и

Код
listitem.setProperty("inputstream", "inputstream.ffmpegdirect")


Скрывайте ссылки и способы обхода от роскомтян)
 
labideb | 11.02.2024, 03:11 | # 3
Репутация: 0
Подскажите, а как это всё лучше отлаживать? Я так понял, логгеры, кроме xbmc.log не работают? А web_pdb вообще не понял как использовать. Вы пишите код, а потом его тестирует непосредственно в установленном kodi или есть какой то эмулятор с дебагером?
 
tdw1980 | 11.02.2024, 17:05 | # 4
Репутация: 7
Можно основной код вынести в отдельный модуль, не привязанный к библиотекам и интерфейсу Kodi.
Его писать и отлаживать в среде которая Вам наиболее удобна.
Окончательно проверить уже непосредственно в составе плагина прямо в Kodi на разных версиях и на разных платформах.
Помимо того что Python на разных ОС имеет небольшие особенности, так и Kodi может вести себя по разному.

Не претендую на правильность подхода и чистоту кода (каюсь грешен, бэйсик меня сгубил smile ), но вот пример элементарного плагина с коментариями. https://github.com/tdw1980/tdw/tree/master/plugin.audio.mp3bob

ПС: Не программист по профессии. Хобби со студенческих времен.
 
Zeltorix | 11.02.2024, 22:23 | # 5
Репутация: 12
labideb.
Логер и стандартный от Python работает.
web_pdb даже не пробовал.
У меня подход такой разбиваю на модули, делаю им обертку, чтобы потом легче было менять сторонние пакеты или модули.
В основном у меня структура такая.
Локально:
  • Есть Роутер который раскидывает принятые значения при выборе в интерфейсе на нужные методы Модели. Проще говоря если значения ни какового нет перекидывает на главное меню, если скажем был запрошен поиск, то перебрасывает на меню поиска и .т.д.
  • Есть Модель, в которой собираются и обрабатываются данный с сайта, выдавая данные в json для дальнейшего вывода. Короче говоря формируется Модель вывода для интерфейса.


Вынесенные внешние части в отдельный модули, пакеты, потому, что они везде повторяются:
  • Модуль Обертка работы с интерфейсом KODI. Данный модуль получает и обрабатывает сформированный Моделью json для вывода на экран. Здесь уже используются сами модули и пакеты KODI. За поддержка всех версий KODI на Python 3 как раз таки отвечает этот модуль, в нем прописаны все особенности вывода для каждой версии.
  • Модуль Обертка работы с запросами. Просто обертка для работы скажем с request. Здесь по мимо модуля запросов также есть маскировка под браузер. Сделана для того, чтобы легче переключатся с разных сторонних модулей и пакетов, скажем перешёл с request на httpx просто поменяв три четыре слова в коде в одном месте, не переписывая это в каждом плагине.
  • Пакеты. Просто собрание в одном месте все использование сторонние модули и пакеты, которых нет в репозиториях KODI. Скажем тот же httpx и yt-dlp, и xmltodict который вроде как есть в официальный репозитории, но на некоторых сборках KODI его почему то нет, как бы не звучало это странно.


Благодаря использования Роутеров, получаем преимущество, неблокирующею работу плагина. Что при ошибки не закроется весь плагина, а только та часть которая была выполнена с ошибкой в данный момент.
Благодаря тому что плагин разбит на части, и есть Модель не зависимая от пакетов и модулей кода KODI. Что позволяет протестировать работу кода парсера и сбора данных до запуска в самом KODI.
Благодаря вынесенным повторяющимся частям, в плагинах пишется меньше кода.
Благодаря использования Оберток, есть возможность быстро сменить не рабочий пакет или модуль, не переписывая его везде. Да и быстро сделать поддержку для новых версий KODI.
Благодаря использования внешних пакетов которых нет в KODI, можно расширить возможности плагина и писать меньше кода.

А теперь о тестировании.
Так как у меня всё разбито по частям, я просто тестирую Модель. Создал для себя модуль через который запускается Модель и проверяется выдаваемая структура и типы данных json. Запускается в виде консоли, навигация по вводу цифр нужного пункта, некая подобия консольной версии интерфейса KODI. Благодаря эту делаю автоматические тесты, где случайно выбираются пункты и скрипт бегает по структуре меню проверяя его работу. Из минусов этого нужно всегда придерживается одной и той же структуры json модели, да и проверить отображение ни как.
Ещё делал и забросил такое тестирование. Поднимался сервер открывался браузер и в нём копия интерфейса KODI, просто переходил по меню плагина и видел, что отрабатывают ли отображения постеров и переходы, с воспроизведением загвоздка, так и не смог осилить сделать собственные плеер на JavaScripts, пришлось использовать сторонние с самих сайтов. В отличие от консольного тестирования здесь можно проврать подтягиваются ли картинки и воспроизводится ли видео.


Скрывайте ссылки и способы обхода от роскомтян)
 
tdw1980 | 12.02.2024, 09:50 | # 6
Репутация: 7
Подробная анатомия простого плагина для XBMC
Статья старая но крайне полезная. Нужно только понимать что в Коди успели наделать нововведений с тех пор.
 
santax | 14.02.2024, 12:48 | # 7
Репутация: 0
Цитата tdw1980 ()
Не претендую на правильность подхода и чистоту кода (каюсь грешен, бэйсик меня сгубил ), но вот пример элементарного плагина с коментариями. https://github.com/tdw1980/tdw/tree/master/plugin.audio.mp3bob
Спасибо! Как раз в эту ветку вошел, чтобы найти некий шаблон-плагин для основы. Давно хотел заняться написанием плагинов для Kodi, так как тема в целом интересная.
С Python знаком с 2017 года, когда прошел базовый ещё бесплатный курс Devman.org. После этого часто использовал свои навыки для написания каких-то скриптов с обращениями к веб-ресурсам и дальнейшей их обработкой. В том числе и на работе развивал этот навык (сисадмин). 
На днях нашел сайт с трансляциями из веб-камер моего города, решил для себя написать плагин. Чтобы через коди их просматривать.
 
Zeltorix | 14.02.2024, 21:56 | # 8
Репутация: 12
Будет время, попробую расписать для версий KODI под Python 3.
В статье выше используется старый стиль настроек, да и некоторые импорты уже можно не делать, т.к. они уже включены в поставляемые с KODI модули/пакеты. Все картинки и другое медиа тоже в отдельной подпапки должны быть, хотя это только все рекомендации от разработчиков)


Скрывайте ссылки и способы обхода от роскомтян)
 
labideb | 15.02.2024, 00:10 | # 9
Репутация: 0
Я так понял, что при разработке можно использовать фреймверки. Из того что видел, код с маршрутами выглядит лучше всего. Но так и не смог понять, как его импортировать в pycharm. Или стоит забить на красные подчеркивания всего, что связанно с routing и отлавливать проблемы на стадии отладки?
 
santax | 16.02.2024, 19:14 | # 10
Репутация: 0
Ура! Первый плагин! resources не используется, просто был скопирован из одного плагина Zeltorix. Спасибо!
Прикрепления: plugin_video_yola_webs.zip (39.3 Kb)
 
tdw1980 | 16.02.2024, 20:17 | # 11
Репутация: 7
Цитата santax ()
Ура! Первый плагин! resources не используется, просто был скопирован из одного плагина Zeltorix. Спасибо!Прикрепления: plugin_video_yola_webs.zip (39.3 Kb)

Размещай в раздел помощь по плагинам. Там его заметят быстрее и обсудить можно.
 
Zeltorix | 16.02.2024, 21:11 | # 12
Репутация: 12
Цитата santax ()
Ура! Первый плагин! resources не используется, просто был скопирован из одного плагина Zeltorix. Спасибо!
Поздравлю, в нашёл полку прибыло)
Хотя есть замечания по поводу импортов в файл addon.xml.
Все стандартные пакеты и модули KODI можно не импортировать, т.к. они импортируются автоматически к каждому плагину, поправите если это не так.
А в твоем плагине используется requests, который не является стандартным пакетом или модулем поставляемым вместе с ним, и может быть скачен с репозиторий KODI.
Так что не хватает строчки импорта стороннего пакета/модуля:

Код
<import addon="script.module.requests" version="0.0.0" />
В файле addon.xml
Я даже вижу с какого плагина скопирован, в файле с настройками)


Скрывайте ссылки и способы обхода от роскомтян)
 
Zeltorix | 16.02.2024, 21:25 | # 13
Репутация: 12
Дальше осталось изучить, как работать с системой контроля версий, например с GIT.
Определится по какой структуре будешь использовать сборку репозитории для KODI.
Создать репозиторию, например в GIT.
Создать структуру и файл репозитории с ссылками на плагины.
Либо не парится, скачать и использовать готовый сборщик. Статья по использованию есть на официальной вики и комментариях скрипта-сборщика. Также на официальной вики есть описано как создать сам файл репозитории.
А то в ручную скачивать и устанавливать не особо все любят)


Скрывайте ссылки и способы обхода от роскомтян)
 
gp | 17.02.2024, 09:24 | # 14
Репутация: 1
А есть какой-нибудь готовый скрипт для сборки аддона из исходников?
 
tdw1980 | 17.02.2024, 13:15 | # 15
Репутация: 7
Если на Python то собирать там нечего. Просто упаковывается папка в zip и все.
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: