[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 .planetaplay import PlanetaPlayIE
|
||||||
from .pladform import PladformIE
|
from .pladform import PladformIE
|
||||||
from .played import PlayedIE
|
from .played import PlayedIE
|
||||||
|
from .playerpl import PlayerPLIE
|
||||||
from .playfm import PlayFMIE
|
from .playfm import PlayFMIE
|
||||||
from .playvid import PlayvidIE
|
from .playvid import PlayvidIE
|
||||||
from .playwire import PlaywireIE
|
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