13-10-2017, 00:36
13-10-2017, 07:55
Нещо такова ще свърши работа:
Код:
# -*- coding: utf-8 -*-
#Библиотеки
import re
import sys
import os
import urllib
import urllib2
t = "<source src='http://192.168.0.116/files/videos/High.Res.02/1507360901c8cef-480.mp4' type=video/mp4 data-res=480 /><source src='http://192.168.0.116/files/videos/High.Res.02/1507360901c8cef-720.mp4' type=video/mp4 data-res=720 /><source src='http://192.168.0.116/files/videos/High.Res.02/1507360901c8cef-1024.mp4' type=video/mp4 data-res=1024 /><source src='http://192.168.0.116/files/videos/High.Res.02/1507360901c8cef-1080.mp4' type=video/mp4 data-res=1080 />"
match2 = re.compile("source src='(http.+?mp4)'").findall(t)
for link in match2[-1::]:
print link
[-1::] винаги ще ти връща последното съвпадение, като (ако подредбата винаги е спазена от ниско към високо качество) ще получаваш линка с максимално качество. Другия вариант е да не ползваш [-1::] а да извличаш всички линкове и със сравнения да определяш къде качеството е най-добро или да следваш предпочитанията на потребителите указани в настройките на addon-a (ако има такива).
13-10-2017, 11:30
това наистина върши работа за конкретното видео, нещо универсално от типа на това мога ли да добавя като натисна на съответното заглавие
и къде трябва да го добавя за пусни използвам
Код:
def show(self, url):
print "Get video %s" % url
response = common.fetchPage({"link": url})
content = response["content"]
scripts = common.parseDOM(response["content"], "script", attrs={"type": "text/javascript"})
title = common.parseDOM(response["content"], "a")[0]
urls = []
for script in scripts:
if 'mp4' in script:
urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', script)
link = urls[0]
print "link %s" % link
Код:
#Зареждане на видео
def PLAY(name,url,iconimage):
url = 'http://192.168.0.116/player/pak_player/embed_player.php?vid=' + url + '' #Конструираме адреса за достъп до видеото
li = xbmcgui.ListItem(iconImage=iconimage, thumbnailImage=iconimage, path=url)
li.setInfo('video', { 'title': name })
try:
xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path = url))
except:
xbmc.executebuiltin("Notification('Грешка','Видеото липсва на сървъра!')")
13-10-2017, 16:34
def PLAY() трябва да го преработиш. URL адреса, който конструираш в него е грешен. Трябва да бъде абсолютния (и реален при това) път до видео файла, а не някакъв скрипт, предназначен за WEB player. Например подаваш на PLAY () адрес: http://192.168.0.116/files/videos/High.R...ef-720.mp4 от предишната функция и директно го използваш, без да го променяш. Ако толкова искаш, може да добавиш някакъв твой User-Agent: ...1507360901c8cef-720.mp4|User-Agent=stagefright . Колкото до универсалния "capture" на видео-линкове, def show() не мога да ти кажа така на око дали ще проработи. Трябва да го пробваш и ще разбереш. След като сайта е с ограничен достъп, не мога да го пробвам в реални условия.
13-10-2017, 17:35
на линк -> http://192.168.0.116/player/pak_player/e...4RAXUNHOGU ми отваря само така
дали мога да го парсна по някакъв начин от def play
значи трябва да изкарам mp4 от страницата на play
Код:
http://http://192.168.0.116/player/pak_player/pakplayer.swf?config={"key":"","plugins":{
"controls":{"url":"http:\/\/http://192.168.0.116\/player\/pak_player\/pakplayer.controls.swf",
"background":"url(http:\/\/http://192.168.0.116\/player\/pak_player\/bg.png) repeat"}},
"canvas":{"backgroundColor":"#000000","backgroundGradient":"none"},
"clip":{"url":"http:\/\/http://192.168.0.116\/files\/videos\/High.Res.02\/1507360901c8cef-480.mp4",
"scaling":"fit","autoPlay":false,"linkUrl":"http:\/\/http://192.168.0.116\/watch_video.php?v=894RAXUNHOGU",
"linkWindow":"_blank"},"contextMenu":[{"":""}],"logo":{"url":"http:\/\/http://192.168.0.116\/images\/logo.png",
"fullscreenOnly":false,"top":null,"left":null,"opacity":0.4,"linkUrl":"http:\/\/http://192.168.0.116\/watch_video.php?v=894RAXUNHOGU"}}
дали мога да го парсна по някакъв начин от def play
значи трябва да изкарам mp4 от страницата на play
Код:
<video id="cb_video_js" class="video-js vjs-default-skin" width="100%" height="100%" poster="http://http://192.168.0.116/files/thumbs/High.Res.02/1507360901c8cef-1.jpg" >
<source src='http://http://192.168.0.116/files/videos/High.Res.02/1507360901c8cef-480.mp4' type="video/mp4" data-res="480" />
<source src='http://http://192.168.0.116/files/videos/High.Res.02/1507360901c8cef-720.mp4' type="video/mp4" data-res="720" />
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
</video>
13-10-2017, 20:01
Да, мошеш. Вземи всичко от config= до края. Форматът на данните е json и затова следвай стъпките:
Код:
import json
req = urllib2.Request(link) #link е адресът http://192.168.0.116/player/pak_player/embed_player.php?vid=894RAXUNHOGU
opener = urllib2.build_opener()
f = opener.open(req)
jsonrsp = json.loads(f.read().replace('http://192.168.0.116/player/pak_player/pakplayer.swf?config=',''))
print jsonrsp['clip']['url']
Резултата е: http://http://192.168.0.116/files/videos/High.R...ef-480.mp4 т.е. не забравяй да махнеш първото http:// в jsonrsp['clip']['url']. Провери при филм с няколко различни качества, как можеш да извлечеш всичките, за да можеш да използваш най-високото от наличните.
13-10-2017, 20:30
извлича ми единият файл което ме устройва
а този код къде да го сложа в def play или някъде другаде?
а този код къде да го сложа в def play или някъде другаде?
13-10-2017, 20:43
В def play( )
13-10-2017, 21:13
VideoPlayer: Opening: 894RAXUNHOGU"
20:11:13.288 T:6164 WARNING: CDVDMessageQueue(player):ut MSGQ_NOT_INITIALIZED
20:11:13.289 T:6164 ERROR: DXVA::CProcessorHD::IsFormatSupported: Unsupported format 104 for 1.
20:11:13.289 T:6164 ERROR: DXVA::CProcessorHD::IsFormatSupported: Unsupported format 105 for 1.
20:11:13.293 T:3652 NOTICE: Creating InputStream
20:11:13.288 T:6164 WARNING: CDVDMessageQueue(player):ut MSGQ_NOT_INITIALIZED
20:11:13.289 T:6164 ERROR: DXVA::CProcessorHD::IsFormatSupported: Unsupported format 104 for 1.
20:11:13.289 T:6164 ERROR: DXVA::CProcessorHD::IsFormatSupported: Unsupported format 105 for 1.
20:11:13.293 T:3652 NOTICE: Creating InputStream
Код:
def PLAY(name,url,iconimage):
link = 'http://192.168.0.116/player/cbplayer/embed_player.php?vid=' + url #Конструираме адреса за достъп до видеото
req = urllib2.Request(link) #link е адресът http://http://192.168.0.116/player/pak_player/embed_player.php?vid=894RAXUNHOGU
opener = urllib2.build_opener()
f = opener.open(req)
jsonrsp = json.loads(f.read().replace('http://http://192.168.0.116/player/pak_player/pakplayer.swf?config=',''))
#print jsonrsp['clip']['url']
li = xbmcgui.ListItem(iconImage=iconimage, thumbnailImage=iconimage, path=url)
li.setInfo('video', { 'title': name })
try:
xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path = url))
except:
xbmc.executebuiltin("Notification('Грешка','Видеото липсва на сървъра!')")
Код:
elif mode==3:
print ""+url
PLAY(name,url,iconimage)
13-10-2017, 21:20
За path задай jsonrsp['clip']['url'] т.е. li = xbmcgui.ListItem(iconImage=iconimage, thumbnailImage=iconimage, path=jsonrsp['clip']['url']), а xbmcplugin.setResolvedUrl нека използва вече дефинираният List.Item елемент: xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, li). Коментарът ми #link е адре... може да го махнеш от кода.