!!! ВАЖНО !!!

1) Във връзка с превенцията на зачестилите СПАМ теми във форума, паролите на всички потребители бяха автоматично инвалидизирани на 22 Май 2024 14:20 ч.. За да възстановите своята парола (и създадете нова), моля използвайте опцията за забравена парола тук.
2) Ако акаунта ви е "баннат", без да знаете защо, вероятно от ваше име са публикувани СПАМ съобщения.
Съжаляваме за причиненото неудобство. При проблеми с възстановяването на паролата или баннати акаунти, моля пишете на kodibg в гмаил.ком или във Фейсбук страницата на КодиБГ Форум тук

Оценете темата:
  • 1 гласа - средно 5
  • 1
  • 2
  • 3
  • 4
  • 5
[УРОК] Как да създадем video addon за Kodi Media Center
#41
def PLAY ( )

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

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

   ...

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

   конструиране на List.Item елемент. Подаваш му за path да използва videourl. Няма как всички гореописани регулярни изрази да сработят едновременно, но дори и да се случи, последният в описаният ред (който промени стойността на променливата videourl) ще определи крайният абсолютен адрес за зареждане на видеото.
[Изображение: notrobosmall.jpg]
Отговори
#42
актуализирах си предният пост
оправих си грешката явно 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'))
Отговори
#43
В python много внимателно трябва да спазваш отстъпите, защото те контролират хода на програмата - това е скриптов език, не се компилира и командния интерпретатор се влияе от положението и броя на "спейсовете" и "табовете". Първо определи в сегашния ти текстов редактор какво ще ползваш (спейсове или табове) и след това провери там, където ти дава грешка в log файла (написан е конкретния ред) в какво се изразява неправилния или неочакван отстъп/indent.
[Изображение: notrobosmall.jpg]
Отговори
#44
Код:
- 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
тази грешка ми изважда и не мога да я фиксна
Отговори
#45
На 90-ти ред, опитваш да използваш data, а в data все още няма данни. Виж дали записваш скрейпнатата страница именно в data или в друга променлива. Ако името е правилно, значи не успяваш да скрейпнеш страницата.
[Изображение: notrobosmall.jpg]
Отговори
#46
Код:
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]
Отговори
#47
Здравейте, благодаря Ви за изчерпателната информация. Ще се опитам да си направя адон на сайта ми. Ако не успея, ще потърся помощ във форума.
Отговори
#48
Направих тестов сайт, на който може да пробвате направата на addon за Kodi: https://andromeda.eu.org . Постарах се кода на сайта да е напълно опростен за по-лесна ориентация. Иначе, добавих стриймове от различни формати и локации за да бъде наистина полезен ресурс за отиграване на различни концепции: с регулярни изрази или чрез JSON API, с външни субтитри или вградени, с или без манифест, с директни линкове до стриймовете или външно хостнати... Предвидени са поне по 2 страници, за да е възможна направата на преход между тях. На много места в заглавията и описанията на елементите съм поставил съвети и препоръки, които също ще ви помогнат. Като ми остане време, може би дори ще актуализирам ръководството, което е доста поостаряло.
[Изображение: notrobosmall.jpg]
Отговори
#49
Здравейте, търсих, гледах и в крайна сметка ще се осмеля да попитам. Наумил съм си да си направя нещо за собствено удобство и употреба. Разбира се, че видео добавка. Ползвах примерната https://github.com/romanvm/plugin.video.example , супер успях. Обаче ми се иска да не е по този начин, а линковете за филмите да се взимат от външни txt файлове. Да се работят те, а не всеки път main.py файла. Най-точно този вариант youtub. Само че това е старо и примерните файлове не се намират, пък и може да не са за коди 19+. Та проблема ми е, че дори и да си направя външните файлове, които се виждат на видеото, нямам представа какво пише в default.py.
Другото полезно и подобно което  намерих е това youtube, там файловете си ги има , но не работят за коди19+
Та ако някой може да помогне с някаква подобна примерна добавка ще ми е полезно и за други сигурно.
Ако нещо съм нарушил или досадил може поста ми да бъде изтрит. Благодаря на всеки който си е направил труда дори само да го прочете
Отговори
#50
(26-10-2022, 19:42)daido написа: ...Наумил съм си да си направя нещо ... не работят за коди19+...
Та ако някой може да помогне с някаква подобна примерна добавка ще ми е полезно и за други сигурно...
 Здравей! Влез ТУК и изтегли добавката bgonair или btv.plus. Разгледай как са направени (с парсване на сайтовете с регулярни изрази, при липса на API, което може да ползваме). Ако искаш пример на добавка, използваща някакво API, виж тази за nova.play или vikir (парсваме отговорите на заявките към API в JSON формат). Определено има разлика спрямо plugin.video.example , която лансират в официалния форум. Лично аз предпочитам, за да не са ми разхвърлени нещата (и да не превключвам през много прозорци), да си държа целия код в main.py файла - въпрос на предпочитание. Колкото до "линковете за филмите", пази си ги на външно място, над което имаш контрол (някакъв публичен сървър; може и в локалната мрежа, ако както казваш е за лична употреба) и нека добавката ти да ги чете от там. Така, когато ги актуализираш на сървъра, няма да се налага да ъпдейтваш също и добавката при потребителите! Успех!
[Изображение: notrobosmall.jpg]
Отговори


Теми, които вероятно са свързани...
Тема: Автор Отговори: Прегледи: Последна публикация
Lightbulb Препоръки за създаването на video addon Majide 0 782 08-07-2024, 21:21
Последна публикация: Majide
  Addon за децата Majide 3 3,660 17-07-2021, 22:47
Последна публикация: martinstz
Bug Inputstream Adaptive Addon Majide 2 5,045 02-12-2018, 00:01
Последна публикация: Majide
  Kodi Text to Speech & Voice Assistant Majide 4 9,097 01-05-2017, 09:09
Последна публикация: Majide
Lightbulb Fork на Addon. Защо и Как? Majide 8 12,329 12-04-2017, 21:35
Последна публикация: Majide

Отваряне на: