[arte] improve video quality choice
This commit is contained in:
parent
7bc7cd508d
commit
067842ef0c
2 changed files with 19 additions and 26 deletions
|
|
@ -54,10 +54,10 @@ class ArteBackend(BaseBackend, CapVideo, CapCollection):
|
||||||
TRANSLATION = {'fr': 'F',
|
TRANSLATION = {'fr': 'F',
|
||||||
'en': 'F',
|
'en': 'F',
|
||||||
'de': 'D',
|
'de': 'D',
|
||||||
'hd': 'HQ',
|
'hd': ['HQ', -1],
|
||||||
'md': 'MQ',
|
'md': ['MQ', 2],
|
||||||
'sd': 'SQ',
|
'sd': ['SQ', 0],
|
||||||
'eq': 'EQ'
|
'ed': ['EQ', 1]
|
||||||
}
|
}
|
||||||
|
|
||||||
BROWSER = ArteBrowser
|
BROWSER = ArteBrowser
|
||||||
|
|
|
||||||
|
|
@ -55,42 +55,35 @@ class ArteBrowser(BaseBrowser):
|
||||||
|
|
||||||
@id2url(ArteVideo.id2url)
|
@id2url(ArteVideo.id2url)
|
||||||
def get_video(self, url, video=None):
|
def get_video(self, url, video=None):
|
||||||
|
response = self.openurl('%s/ALL.json' % url)
|
||||||
result = self.get_video_by_quality(url, self.quality)
|
result = simplejson.loads(response.read(), self.ENCODING)
|
||||||
|
|
||||||
if video is None:
|
if video is None:
|
||||||
video = self.create_video(result['video'])
|
video = self.create_video(result['video'])
|
||||||
try:
|
try:
|
||||||
video.url = self.get_first_link_m3u8(result['video']['VSR'][0]['VUR'])
|
video.url = self.get_m3u8_link(result['video']['VSR'][0]['VUR'])
|
||||||
video.ext = u'm3u8'
|
video.ext = u'm3u8'
|
||||||
except:
|
except:
|
||||||
video.url, video.ext = self.get_default_url(url)
|
video.url, video.ext = NotAvailable, NotAvailable
|
||||||
|
|
||||||
return video
|
return video
|
||||||
|
|
||||||
def get_first_link_m3u8(self, url):
|
def get_m3u8_link(self, url):
|
||||||
r = self.openurl(url)
|
r = self.openurl(url)
|
||||||
baseurl = url.rpartition('/')[0]
|
baseurl = url.rpartition('/')[0]
|
||||||
|
|
||||||
|
links_by_quality = []
|
||||||
for line in r.readlines():
|
for line in r.readlines():
|
||||||
if not line.startswith('#'):
|
if not line.startswith('#'):
|
||||||
return u'%s/%s' % (baseurl, line.replace('\n', ''))
|
links_by_quality.append(u'%s/%s' % (baseurl, line.replace('\n', '')))
|
||||||
|
|
||||||
|
if len(links_by_quality):
|
||||||
|
try:
|
||||||
|
return links_by_quality[self.quality[1]]
|
||||||
|
except:
|
||||||
|
return links_by_quality[0]
|
||||||
return NotAvailable
|
return NotAvailable
|
||||||
|
|
||||||
def get_default_url(self, url):
|
|
||||||
result = self.get_video_by_quality(url, 'ALL')
|
|
||||||
try:
|
|
||||||
return self.get_first_link_m3u8(result['video']['VSR'][0]['VUR']), u'm3u8'
|
|
||||||
except:
|
|
||||||
return NotAvailable, NotAvailable
|
|
||||||
|
|
||||||
def get_video_by_quality(self, url, quality):
|
|
||||||
_url = url \
|
|
||||||
+ '/' + quality \
|
|
||||||
+ '.json'
|
|
||||||
|
|
||||||
response = self.openurl(_url)
|
|
||||||
return simplejson.loads(response.read(), self.ENCODING)
|
|
||||||
|
|
||||||
@id2url(ArteLiveVideo.id2url)
|
@id2url(ArteLiveVideo.id2url)
|
||||||
def get_live_video(self, url, video=None):
|
def get_live_video(self, url, video=None):
|
||||||
self.location(url)
|
self.location(url)
|
||||||
|
|
@ -105,7 +98,7 @@ class ArteBrowser(BaseBrowser):
|
||||||
quality = None
|
quality = None
|
||||||
if 'VSR' in result['videoJsonPlayer']:
|
if 'VSR' in result['videoJsonPlayer']:
|
||||||
for item in result['videoJsonPlayer']['VSR']:
|
for item in result['videoJsonPlayer']['VSR']:
|
||||||
if self.quality in item:
|
if self.quality[0] in item:
|
||||||
quality = item
|
quality = item
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue