[УРОК] Как да създадем video addon за Kodi Media Center - Версия за принтиране +- Коди Фен Форум България (https://kodibg.org/forum) +-- Форум: Разработка (https://kodibg.org/forum/forum-7.html) +--- Форум: Програмиране (https://kodibg.org/forum/forum-8.html) +--- Тема: [УРОК] Как да създадем video addon за Kodi Media Center (/thread-17.html) |
[УРОК] Как да създадем video addon за Kodi Media Center - Majide - 02-11-2015 Kodi Media Center (познат още като XBMC) позволява разширяване на функционалността му чрез различни категории приставки (addons). Видео приставките позволяват да намирате и гледате видео, без да напускате интерфейса на Kodi. Този урок демонстрира как се създава такава приставка чрез елементарни знания по програмиране и логическо мислене.
/Готовата структура е съобразена с python2, а в Коди вече се използва python3 т.е. ще трябва да се съобразите с промяната в някои функции, методи и др. направени след прехода към новата версия на програмния език и с текущата версия на Коди/
Предварителни изисквания:
Видео приставките за Kodi се пишат на езика python, както е посочено в kodi.wiki. За да започнем работа, първо изтеглете някаква среда за разработка/програмиране с поддръжка на python. Аз използвам DrPython, който освен текстов редактор със синтактично оцветяване на сорс кода, предлага възможност и за изпълнение/дебъгинг на python скриптове. Обикновения Notepad няма да ви е достатъчен, защото интерпретатора на python е супер чувствителен към отстъпите в началото на всеки ред и средата за разработка е хубаво да следи за неправилни indent-и. Изтеглете също и този примерен video addon, който създадох като отправна точка за целта на урока. Стартирайте Kodi и по обичайния начин инсталирайте в него пробната приставка plugin.video.example-0.0.1.zip. За да можем да превключваме от Kodi към другите прозорци, ще трябва да го демаксимизирате - това става с вълшебната команда '\' (наклонена на ляво черта) \намира се близо до бутона Ентър на клавиатурата\. Сега стартирайте средата за програмиране (DrPython в моя случай) и отворете в нея файла на примерната приставка: default.py (а къде се намира този файл? в потребителската директория на kodi/addons/plugin.video.example/default.py ). Отваряйки default.py ще видите следния примерен код:
Код: # -*- coding: utf-8 -*- Забележка: В посочените долу примери ще срещнете интернет адреси от вида h**p://server/link - да се четат http://server/link(форумната система автоматично съкращава връзките и те не могат да се видят целите)
Начало
1. Изберете подходящ сайт за създаването на видео приставка. Трябва да има богато и интересно съдържание, по възможност с разлистване по каталог, налична търсачка и еднакво структуриране на страниците, обложките, видеата и именованията им. Нека изберем сайта http://www.vplaybg.com. Видеата в него са разпределени по категории, с 24 заглавия на страница, налична търсачка и както вече споменахме еднакво структуриране - което ще направи правенето на приставката лесно. Ако страницата с желания от нас видеоклип е h**p://www.vplaybg.com/watch.php?vid=a2bc4d02b, тогава преглеждаме изходния й код през интернет браузър и се спираме на това:
Код: var flashvars = { "flashplayer": "http://www.vplaybg.com/players/jwplayer5/jwplayer.swf", "playlist": [{ file: 'http://www.vplaybg.com/videos.php?vid=a2bc4d02b', type: 'video', image: 'http://www.vplaybg.com/uploads/thumbs/a2bc4d02b-1.jpg' Тук виждаме, че видеата се зареждат през адрес h**p://www.vplaybg.com/videos.php?vid= и същия идентификатор, като този от адреса на страницата a2bc4d02b. По същия начин стои въпросът с обложките на видеата. Ако знаем идентификатора на едно видео, тогава неговата обложка ще бъде h**p://www.vplaybg.com/uploads/thumbs/идентификатор-1.jpg
2. Създаване на главно меню на приставката. Въвеждаме в default.py от 24 ред надолу категориите от сайта по същия шаблон: addDir('Папка','h**p://www.example.com',1,'DefaultFolder.png') Когато приключите, модула CATEGORIES трябва да изглежда по този начин: Код: def CATEGORIES(): Изразът &page=1&order=DESC трябва да бъде добавян към края на адресите на категориите, за да бъде възможно минаването към следваща страница по-нататък. DefaultVideo, DefaultAudio и др. такива изображения може да ползвате наготово като обложки в Kodi. Иначе, може да използвате и ваши локални или интернет хостнати изображения от вида http://server/image.jpg
Преминете към прозореца на Kodi и тествайте добавката example - отворете я и нашето меню вече трябва да се вижда!
3. Разлистване на видеата. Ако опитате да отворите меню "Игрални филми", трябва да се случат следните неща:
- зареждане на подадения адрес на категория от модула CATEGORIES;
- претърсването му по зададен шаблон (регулярен израз);
- структуриране на резултатите по подходящ за Kodi начин;
- добавянето на всеки елемент към един общ списък, явяващ се съдържанието на тези виртуални директории.
Погледнете следния код в модула INDEXPAGES: match = re.compile('(.+?)').findall(data)
На мястото на (.+?) трябва да бъде поставен регулярен израз, способен да "хване" всичко необходимо: (заглавие, адрес на видеото или поне страницата му, обложка). Предвид удобното структуриране в този сайт, ние ще прихванем само името на видеото и неговото ID. По това ID сами ще конструираме адреса за зареждане на видеото и неговата обложка без изобщо да се налага да посещаваме и претърсваме страницата на отделното видео. И така, през интернет браузъра заредете сайта https://regex101.com и от левия му панел превключете на python. В голямото поле TEST STRING сложете целия изходен код на страницата каталог с игрални филми. В полето REGULAR EXPRESSION поставете vid=(.+?)" class="pm-title-link " title="(.+?)"> а в малкото поле в дясно от него буква "g". В панела в дясно MATCH INFORMATION трябва да видите следното:
т.е. регулярния израз е "хванал" необходимото Накратко регулярния израз е последователност от HTML (в случая) или др. тагове и (.+?) поставен на мястото, на което искаме да "хванем" полезни данни. Този регулярен израз поставяме в кода на приставката match = re.compile('vid=(.+?)" class="pm-title-link " title="(.+?)">').findall(data)
Конструирането адресът на обложката се налага, когато е възможно това и/или когато не сме прихванали пълния й адрес с регулярния израз. В случая, адресът на обложката (ред 46) ще стане thumbnail = 'h**p://www.vplaybg.com/uploads/thumbs/' + vid + '-1.jpg'
Понеже страниците с видеата са много повече от една, трябва някак да си осигурим преминаване към следващата страница през приставката. В сайта, това става чрез следните атрибути "закачени" към края на адресите &page=номернастраница&order=DESC . Order логично касае сортирането по азбучен ред или наопаки, а номера на страницата е ясен. Затова в първия модул CATEGORIES трябва да добавим &page=1&order=DESC към края на адресите на всички категории. По този начин просто ще актуализираме номера на текущата страница +1 и ще я подаваме на модула INDEXPAGES наново за преиндексиране. Всяка страница с изключение на последната съдържа точно 24 видеа. Т.е. ако списъка с заглавията във виртуалната директория на Kodi показва 24 видеа, тогава следваща страница с резултати трябва да има. За целта създаваме брояча br и му задаваме начална стойност 0. След всяко добавяне на ново видео към списъка в INDEXPAGES актуализираме брояча br = br + 1. След като приключи обхождането на текущата страница проверяваме колко са текущите видеа в брояча. Ако са точно 24, добавяме виртуална директория в края на списъка със заглавие "следваща страница>>" и конструираме адреса на тази следваща страница. Заменяме номера на текущата страница със следващия и после изпращаме към INDEXPAGES за индексиране. Намирането на текущата страница става отново с регулярен израз (.+?)&page=(.+?)&order=DESC по показаният отгоре начин. След като приключите работата по този модул, целия ще изглежда по следния начин:
Код: def INDEXPAGES(url): 4. Търсачка. През вашия браузър потърсете думата word в търсачката на vplaybg.com. Адресът, който получавате е следния: h**p://www.vplaybg.com/search.php?keywords=word т.е. h**p://www.vplaybg.com/search.php?keywords=низ–за–търсене. В модул CATEGORIES поставете h**p://www.vplaybg.com/search.php?keywords= като адрес на търсачката. Отидете на ред 70, където започва модула на търсачката. Тук ние преконструираме адресът за търсене, за да бъде възможно преминаването към следващата страница с резултати searchurl = url + searchText + '&page=1&order=DESC' След като приключите, модулът ще изглежда така:
Код: def SEARCH(url): 5. Модул за зареждане на видео. За да можем да отваряме разлистените заглавия в Kodi, трябва да го "захраним" с подходящо конструирани данни. Основно трябват ни адреса на видеото, заглавието му и обложката. Разбира се, може да му подадете и много други данни, които сте успяли да извлечете с регулярните изрази (или от json в случай, че имате щастието да разчитате на официално API към сайта).
В случая трябва да конструираме финалния адрес за достъп до видеото, като към h**p://www.vplaybg.com/videos.php?vid= добавим ID-то на избраното видео. Ще получите това: Код: def PLAY(name,url,iconimage): 6. Подробностите. Най-важното са пуправките, извинете подробностите. Всеизвестен факт е, че външния вид продава, а характеристиките задържат потребителя във времето да не избяга към друг продукт. Стига толкова маркетинг. В същата директория като default.py отворете с Notepad или друг текстов редактор със синтактично оцветяване на XML файла addon.xml и го редактирайте според вашите нужди. Посочете желаното име на приставката, нейната версия, вашето име или прякор и описанието й. Като приключите, трябва да сте получили нещо такова:
Код: <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> Отворете също и changelog.txt за да посочите информация относно промените в тази версия на приставката.
Следва направа на обложка за приставката. С растерен или векторен графичен редактор по ваш избор (Gimp, Photoshop,...) направете желаната от вас обложка. Може да си вземете логото на сайта от въпросния сайт (ако той разполага с подходящо такова).
В същата тази директория на приставката plugin.video.example влезте в директория resources и изтрийте файла settings.xml и директорията language след като приставката няма да има настройки и няма да е мултиезична , а само на български език. Сега преименувайте директорията plugin.video.example на plugin.video.vplaybg. Затворете Kodi и го стартирайте отново (демаксимизиран, както беше и досега). Изпробвайте работоспособността на приставката и в случай на грешка, погледнете в дъното на лог файла kodi.log (който все още трябва да държите отворен). Там ще откриете подробности за грешката, ако има такава. Ако нямате грешки, остава да бъде изключено ненужното рапортуване в лога: в default.py коментирайте следните редове, поставяйки знак # преди командата print: 38,47,48,60,79.
За да разпространите приставката, компресирайте директорията с ZIP и посочете точната й версия: plugin.video.vplaybg-0.0.1.zip. За повече информация (на английски език) посетете kodi.wiki
RE: [УРОК] Как да създадем video addon за Kodi Media Center - NEOhidra - 13-12-2015 Връзката към много други данни не е актуална. Предполагам трябва да води към: http://romanvm.github.io/Kodistubs/docs/xbmcgui.ListItem-class.html или не? RE: [УРОК] Как да създадем video addon за Kodi Media Center - Majide - 13-12-2015 Да, явно автора е преименувал в името XBMC на Kodi и затова линка се е променил. Прилагам корекцията. RE: [УРОК] Как да създадем video addon за Kodi Media Center - pepo - 05-05-2016 Дне среших да се опитам да направя един video addon за немски телевизии от един немски сайт (прилича на bg-gledai). Сложих коди 16.1 на уиндолс 10, но директорията на примерния addon така и не се появи в папката. Възможно ли е последната версия на Коди, която обещава "Never cache addons directories" да блокира list-ването на директории или са скрити някъде (hidden files са ми активирани)? PS: интересното е, че когато от Kodi мина на Add Source и отида на Home Directory в папка addons ми излиза example, но не и когато от Windows мина в директорията на Коди. Може би в 16.1 са скрити на друго място? Но търсих "example" и не намира нищо. PS2: намерих го. Windows разбира се си прави други планове с папките. Инсталираните addon-и са в C:\Users\USERNAME\AppData\Roaming\Kodi\addons RE: [УРОК] Как да създадем video addon за Kodi Media Center - barev - 26-09-2016 Благодаря много за много полезната и съдържателна тема. Аз не съм професионален програмист, но благодарение на тази тема успях да си създам първия ми любителски addon за БГ ТВ канали. Имам въпрос: Не е ли по-лесно да се използва за parse-ване на html кода наличната библиотека Parsedom, за която се твърди, че работи много бързо и е лесна за боравене: http://kodi.wiki/view/Add-on:Parsedom_for_xbmc_plugins Аз не съм я ползвал все още (мисля да я разуча), но се чудя дали примерът няма да е по-лесен и разбираем с нея. RE: [УРОК] Как да създадем video addon за Kodi Media Center - Majide - 26-09-2016 Примерът е просто... пример, в който се разчита на абсолютния минимум външни библиотеки. Поне моето мнение е, че колкото по-малко външни зависимости, толкова по-добре: самите добавки ще бъдат респективно по стабилни и съвместими с повечето стари версии на Kodi, та чак и до последния XBMC.
П.С: Ако направите добавка, която искате да споделите с останалите, създайте й отделна тема (по образеца на останалите в раздел "Български компоненти за Kodi" RE: [УРОК] Как да създадем video addon за Kodi Media Center - natrov - 07-11-2016 Защо в DrPython не ми излиза кирилицата в пайтънските файлове? Ако има значение аз съм на W10 64bit. RE: [УРОК] Как да създадем video addon за Kodi Media Center - Majide - 08-11-2016 При мен си излиза нормално под Ubuntu Mate 16.10. Не съм сигурен доколко Windows се оправя с UTF-8 кодировки... Винаги можеш да пробваш с друг python редактор. Този беше първия, който намерих с търсачката и досега ми върши работа RE: [УРОК] Как да създадем video addon за Kodi Media Center - natrov - 08-11-2016 (08-11-2016, 09:09)Majide написа: При мен си излиза нормално под Ubuntu Mate 16.10. Не съм сигурен доколко Windows се оправя с UTF-8 кодировки... Винаги можеш да пробваш с друг python редактор. Този беше първия, който намерих с търсачката и досега ми върши работа Не е проблема в Windows. Същите файлове отворени в Notepad++ си показват кирилицата. Явно ще трябва да погледна друг редактор. RE: [УРОК] Как да създадем video addon за Kodi Media Center - xbmcbg - 08-11-2016 Най-добре ще е да си добавиш Линукс като втора OS |