[player.pl] new extractor
This commit is contained in:
parent
25a4c5a9ed
commit
b7be44b19f
@ -438,6 +438,7 @@ from .pinkbike import PinkbikeIE
|
||||
from .planetaplay import PlanetaPlayIE
|
||||
from .pladform import PladformIE
|
||||
from .played import PlayedIE
|
||||
from .playerpl import PlayerPLIE
|
||||
from .playfm import PlayFMIE
|
||||
from .playvid import PlayvidIE
|
||||
from .playwire import PlaywireIE
|
||||
|
63
youtube_dl/extractor/playerpl.py
Normal file
63
youtube_dl/extractor/playerpl.py
Normal file
@ -0,0 +1,63 @@
|
||||
# coding: utf-8
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from .common import InfoExtractor
|
||||
from ..utils import (
|
||||
ExtractorError,
|
||||
qualities,
|
||||
parse_duration,
|
||||
parse_iso8601,
|
||||
unescapeHTML,
|
||||
)
|
||||
|
||||
|
||||
class PlayerPLIE(InfoExtractor):
|
||||
IE_NAME = 'player.pl'
|
||||
_VALID_URL = r'http://player\.pl/[a-z\-]+/[A-Za-z,0-9\-]+/[A-Za-z,0-9\-]+,(?P<id>\d+)\.html'
|
||||
|
||||
_TESTS = [{
|
||||
'url': 'http://player.pl/programy-online/agencja-odcinki,1137/odcinek-1,zaginiony-brylant,S00E01,16830.html',
|
||||
'info_dict': {
|
||||
'id': '16830',
|
||||
'ext': 'mp4',
|
||||
'duration': 2665,
|
||||
'title': 'Zaginiony brylant',
|
||||
'description': 'Nasz agent, "Piękny Lolo", znalazł się w potrzasku. W trakcie wykonywania zadania musiał ukryć się w szafie. Nikt nie może go przyłapać na przeszukiwaniu willi bogatej rozwódki. Jego zadaniem jest odnaleźć zaginiony brylant należący do jej byłóego męża. Niestety zjawia się gosposia, która utrudnia ucieczką z mieszkania. To dopiero początek, bo w drugiej willi czeka go dramatyczna przeprawa \r\nz prawdziwym drapieżnikiem.\r\n',
|
||||
}
|
||||
}]
|
||||
|
||||
def _real_extract(self, url):
|
||||
video_id = self._match_id(url)
|
||||
json_url = ('http://player.pl/api/'
|
||||
'?platform=ConnectedTV&terminal=Samsung&format=json&v=2.0&authKey=ba786b315508f0920eca1c34d65534cd'
|
||||
'&type=episode&id=%s&sort=newest&m=getItem&deviceScreenHeight=1080&deviceScreenWidth=1920') % (video_id)
|
||||
|
||||
get_quality = qualities(['Bardzo niska', 'Niska', 'Średnia', 'Standard', 'Wysoka', 'Bardzo wysoka', 'HD'])
|
||||
|
||||
result = self._download_json(json_url, video_id)
|
||||
if result['status'] != 'success':
|
||||
raise ExtractorError('Player.pl returned an error: %r' % (result))
|
||||
if not result['item']:
|
||||
raise ExtractorError('Player.pl returned success, but item is empty', expected=True)
|
||||
|
||||
thumbnails = None # [{ 'url': thumb['url'] } for thumb in result['item'].get('thumbnail', ())] # XXX: relative URLs, but relative to what?
|
||||
|
||||
formats = []
|
||||
for stream in result['item']['videos']['main']['video_content']:
|
||||
stream_url = self._download_webpage(stream['url'], video_id, 'Downloading "%s" stream URL' % (stream['profile_name']))
|
||||
formats.append({
|
||||
'url': stream_url,
|
||||
'quality': get_quality(stream['profile_name']),
|
||||
'resolution': stream['profile_name'],
|
||||
})
|
||||
self._sort_formats(formats)
|
||||
|
||||
return {
|
||||
'id': video_id,
|
||||
'title': result['item']['title'] or ('%s: S%sE%s' % (result['item']['serie_title'], result['item']['season'] or '1', result['item']['episode'])),
|
||||
'description': unescapeHTML(result['item'].get('lead')),
|
||||
'duration': parse_duration(result['item']['run_time']),
|
||||
'timestamp': parse_iso8601(result['item']['start_date'] + ':00', delimiter=' '), # XXX: timezone='Europe/Warsaw'
|
||||
'formats': formats,
|
||||
'thumbnail': thumbnails,
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user