Публикации: 2,034
Теми: 130
Член от: Oct 2015
Репутация:
199
def PLAY ( )
регулярен израз за плейър 1
връща videourl
регулярен израз за плейър 2
връща videourl
...
регулярен израз за извличане на обложка, описание # опционално
връща cover, description
конструиране на List.Item елемент. Подаваш му за path да използва videourl. Няма как всички гореописани регулярни изрази да сработят едновременно, но дори и да се случи, последният в описаният ред (който промени стойността на променливата videourl) ще определи крайният абсолютен адрес за зареждане на видеото.
Публикации: 609
Теми: 32
Член от: May 2017
Репутация:
35
13-10-2017, 23:19
(Последна редакция: Преди 13-10-2017, 23:24 от ByJohnie.)
актуализирах си предният пост
оправих си грешката явно 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'))
Публикации: 2,034
Теми: 130
Член от: Oct 2015
Репутация:
199
В python много внимателно трябва да спазваш отстъпите, защото те контролират хода на програмата - това е скриптов език, не се компилира и командния интерпретатор се влияе от положението и броя на "спейсовете" и "табовете". Първо определи в сегашния ти текстов редактор какво ще ползваш (спейсове или табове) и след това провери там, където ти дава грешка в log файла (написан е конкретния ред) в какво се изразява неправилния или неочакван отстъп/indent.
Публикации: 609
Теми: 32
Член от: May 2017
Репутация:
35
Код: - 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
тази грешка ми изважда и не мога да я фиксна
Публикации: 2,034
Теми: 130
Член от: Oct 2015
Репутация:
199
На 90-ти ред, опитваш да използваш data, а в data все още няма данни. Виж дали записваш скрейпнатата страница именно в data или в друга променлива. Ако името е правилно, значи не успяваш да скрейпнеш страницата.
Публикации: 609
Теми: 32
Член от: May 2017
Репутация:
35
14-10-2017, 00:13
(Последна редакция: Преди 14-10-2017, 00:22 от ByJohnie.)
Код: 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)
Публикации: 1
Теми: 0
Член от: Jan 2020
Репутация:
0
Здравейте, благодаря Ви за изчерпателната информация. Ще се опитам да си направя адон на сайта ми. Ако не успея, ще потърся помощ във форума.
Публикации: 2,034
Теми: 130
Член от: Oct 2015
Репутация:
199
Направих тестов сайт, на който може да пробвате направата на addon за Kodi: https://andromeda.eu.org . Постарах се кода на сайта да е напълно опростен за по-лесна ориентация. Иначе, добавих стриймове от различни формати и локации за да бъде наистина полезен ресурс за отиграване на различни концепции: с регулярни изрази или чрез JSON API, с външни субтитри или вградени, с или без манифест, с директни линкове до стриймовете или външно хостнати... Предвидени са поне по 2 страници, за да е възможна направата на преход между тях. На много места в заглавията и описанията на елементите съм поставил съвети и препоръки, които също ще ви помогнат. Като ми остане време, може би дори ще актуализирам ръководството, което е доста поостаряло.
Публикации: 6
Теми: 0
Член от: Oct 2022
Репутация:
0
Здравейте, търсих, гледах и в крайна сметка ще се осмеля да попитам. Наумил съм си да си направя нещо за собствено удобство и употреба. Разбира се, че видео добавка. Ползвах примерната https://github.com/romanvm/plugin.video.example , супер успях. Обаче ми се иска да не е по този начин, а линковете за филмите да се взимат от външни txt файлове. Да се работят те, а не всеки път main.py файла. Най-точно този вариант youtub. Само че това е старо и примерните файлове не се намират, пък и може да не са за коди 19+. Та проблема ми е, че дори и да си направя външните файлове, които се виждат на видеото, нямам представа какво пише в default.py.
Другото полезно и подобно което намерих е това youtube, там файловете си ги има , но не работят за коди19+
Та ако някой може да помогне с някаква подобна примерна добавка ще ми е полезно и за други сигурно.
Ако нещо съм нарушил или досадил може поста ми да бъде изтрит. Благодаря на всеки който си е направил труда дори само да го прочете
Публикации: 2,034
Теми: 130
Член от: Oct 2015
Репутация:
199
(26-10-2022, 19:42)daido написа: ...Наумил съм си да си направя нещо ... не работят за коди19+...
Та ако някой може да помогне с някаква подобна примерна добавка ще ми е полезно и за други сигурно... Здравей! Влез ТУК и изтегли добавката bgonair или btv.plus. Разгледай как са направени (с парсване на сайтовете с регулярни изрази, при липса на API, което може да ползваме). Ако искаш пример на добавка, използваща някакво API, виж тази за nova.play или vikir (парсваме отговорите на заявките към API в JSON формат). Определено има разлика спрямо plugin.video.example , която лансират в официалния форум. Лично аз предпочитам, за да не са ми разхвърлени нещата (и да не превключвам през много прозорци), да си държа целия код в main.py файла - въпрос на предпочитание. Колкото до "линковете за филмите", пази си ги на външно място, над което имаш контрол (някакъв публичен сървър; може и в локалната мрежа, ако както казваш е за лична употреба) и нека добавката ти да ги чете от там. Така, когато ги актуализираш на сървъра, няма да се налага да ъпдейтваш също и добавката при потребителите! Успех!
|