Коди Фен Форум България

Пълна версия: [УРОК] Как да създадем video addon за Kodi Media Center
В момента виждате орязана версия на нашия форум. Вижте пълната версия с подходящо форматиране.
Страници: 1 2 3 4 5 6
def PLAY ( )

   регулярен израз за плейър 1
       връща videourl

   регулярен израз за плейър 2
       връща videourl

   ...

   регулярен израз за извличане на обложка, описание # опционално
       връща cover, description

   конструиране на List.Item елемент. Подаваш му за path да използва videourl. Няма как всички гореописани регулярни изрази да сработят едновременно, но дори и да се случи, последният в описаният ред (който промени стойността на променливата videourl) ще определи крайният абсолютен адрес за зареждане на видеото.
актуализирах си предният пост
оправих си грешката явно notepad+++ прави грешки но сега получавам
Error Contents: ('invalid syntax', ('C:\\Users\\SonyVaio\\AppData\\Roaming\\Kodi\\addons\\plugin.video.vplaybg\\default.py', 90, 28, '\tmatch = re.compile(\'src=\'(.+?)\' type="video/mp4" data-res="(.+?)" />\').findall(data)\n'))
SyntaxError: ('invalid syntax', ('C:\\Users\\SonyVaio\\AppData\\Roaming\\Kodi\\addons\\plugin.video.vplaybg\\default.py', 90, 28, '\tmatch = re.compile(\'src=\'(.+?)\' type="video/mp4" data-res="(.+?)" />\').findall(data)\n'))
В python много внимателно трябва да спазваш отстъпите, защото те контролират хода на програмата - това е скриптов език, не се компилира и командния интерпретатор се влияе от положението и броя на "спейсовете" и "табовете". Първо определи в сегашния ти текстов редактор какво ще ползваш (спейсове или табове) и след това провери там, където ти дава грешка в log файла (написан е конкретния ред) в какво се изразява неправилния или неочакван отстъп/indent.
Код:
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS
Error Type: <type 'exceptions.UnboundLocalError'>
Error Contents: local variable 'data' referenced before assignment
Traceback (most recent call last):
File "C:\Users\SonyVaio\AppData\Roaming\Kodi\addons\plugin.video.vplaybg\default.py", line 190, in <module>
PLAY(name,url,iconimage)
File "C:\Users\SonyVaio\AppData\Roaming\Kodi\addons\plugin.video.vplaybg\default.py", line 90, in PLAY
match = re.compile('src=(.+?) type="video/mp4" data-res="(.+?)" />').findall(data)
UnboundLocalError: local variable 'data' referenced before assignment
тази грешка ми изважда и не мога да я фиксна
На 90-ти ред, опитваш да използваш data, а в data все още няма данни. Виж дали записваш скрейпнатата страница именно в data или в друга променлива. Ако името е правилно, значи не успяваш да скрейпнеш страницата.
Код:
def PLAY(name,url,iconimage):
       link = 'http://192.168.0.116/watch_video.php?v=' + url #Конструираме адреса за достъп до видеото
       nl = 0
       match = re.compile('src=(.+?) type="video/mp4" data-res="(.+?)" />').findall(data)
       req = urllib2.Request(url)
       req.add_header('User-Agent', UA)
       response = urllib2.urlopen(req)
       #print 'request page url:' + url
       data=response.read()
       response.close()
       nl = nl + 1
       li = xbmcgui.ListItem(iconImage=iconimage, thumbnailImage=iconimage, path=nl)
       li.setInfo('video', { 'title': name })
       try:
                       xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(int(sys.argv[1]), True, li))
       except:
                       xbmc.executebuiltin("Notification('Грешка','Видеото липсва на сървъра!')")
направих и друг пример за екстракване на линкове и работи много добре, как може да го вградя в def play
Код:
from requests import get
r = requests.get("http://192.168.0.116/watch_video.php?v=HKD9OYN5KO35")
soup = BeautifulSoup(r.content, "html.parser")
for data in soup.findAll('div', class_='dropdown col-lg-12 pull-right no-padding text-right'):
   for a in data.findAll('a'):
       print(a.get('href'))
#print(a.text)

[Изображение: alllinks.png]
Здравейте, благодаря Ви за изчерпателната информация. Ще се опитам да си направя адон на сайта ми. Ако не успея, ще потърся помощ във форума.
Направих тестов сайт, на който може да пробвате направата на addon за Kodi: https://andromeda.eu.org . Постарах се кода на сайта да е напълно опростен за по-лесна ориентация. Иначе, добавих стриймове от различни формати и локации за да бъде наистина полезен ресурс за отиграване на различни концепции: с регулярни изрази или чрез JSON API, с външни субтитри или вградени, с или без манифест, с директни линкове до стриймовете или външно хостнати... Предвидени са поне по 2 страници, за да е възможна направата на преход между тях. На много места в заглавията и описанията на елементите съм поставил съвети и препоръки, които също ще ви помогнат. Като ми остане време, може би дори ще актуализирам ръководството, което е доста поостаряло.
Здравейте, търсих, гледах и в крайна сметка ще се осмеля да попитам. Наумил съм си да си направя нещо за собствено удобство и употреба. Разбира се, че видео добавка. Ползвах примерната https://github.com/romanvm/plugin.video.example , супер успях. Обаче ми се иска да не е по този начин, а линковете за филмите да се взимат от външни txt файлове. Да се работят те, а не всеки път main.py файла. Най-точно този вариант youtub. Само че това е старо и примерните файлове не се намират, пък и може да не са за коди 19+. Та проблема ми е, че дори и да си направя външните файлове, които се виждат на видеото, нямам представа какво пише в default.py.
Другото полезно и подобно което  намерих е това youtube, там файловете си ги има , но не работят за коди19+
Та ако някой може да помогне с някаква подобна примерна добавка ще ми е полезно и за други сигурно.
Ако нещо съм нарушил или досадил може поста ми да бъде изтрит. Благодаря на всеки който си е направил труда дори само да го прочете
(26-10-2022, 19:42)daido написа: [ -> ]...Наумил съм си да си направя нещо ... не работят за коди19+...
Та ако някой може да помогне с някаква подобна примерна добавка ще ми е полезно и за други сигурно...
 Здравей! Влез ТУК и изтегли добавката bgonair или btv.plus. Разгледай как са направени (с парсване на сайтовете с регулярни изрази, при липса на API, което може да ползваме). Ако искаш пример на добавка, използваща някакво API, виж тази за nova.play или vikir (парсваме отговорите на заявките към API в JSON формат). Определено има разлика спрямо plugin.video.example , която лансират в официалния форум. Лично аз предпочитам, за да не са ми разхвърлени нещата (и да не превключвам през много прозорци), да си държа целия код в main.py файла - въпрос на предпочитание. Колкото до "линковете за филмите", пази си ги на външно място, над което имаш контрол (някакъв публичен сървър; може и в локалната мрежа, ако както казваш е за лична употреба) и нека добавката ти да ги чете от там. Така, когато ги актуализираш на сървъра, няма да се налага да ъпдейтваш също и добавката при потребителите! Успех!
Страници: 1 2 3 4 5 6