1 from .common
import InfoExtractor
2 from ..utils
import ExtractorError
5 class Sport5IE(InfoExtractor
):
6 _VALID_URL
= r
'https?://(?:www|vod)?\.sport5\.co\.il/.*\b(?:Vi|docID)=(?P<id>\d+)'
9 'url': 'http://vod.sport5.co.il/?Vc=147&Vi=176331&Page=1',
11 'id': 's5-Y59xx1-GUh2',
13 'title': 'ולנסיה-קורדובה 0:3',
14 'description': 'אלקאסר, גאייה ופגולי סידרו לקבוצה של נונו ניצחון על קורדובה ואת המקום הראשון בליגה',
18 'skip': 'Blocked outside of Israel',
20 'url': 'http://www.sport5.co.il/articles.aspx?FolderID=3075&docID=176372&lang=HE',
22 'id': 's5-SiXxx1-hKh2',
24 'title': 'GOALS_CELTIC_270914.mp4',
29 'skip': 'Blocked outside of Israel',
33 def _real_extract(self
, url
):
34 mobj
= self
._match
_valid
_url
(url
)
35 media_id
= mobj
.group('id')
37 webpage
= self
._download
_webpage
(url
, media_id
)
39 video_id
= self
._html
_search
_regex
(r
'clipId=([\w-]+)', webpage
, 'video id')
41 metadata
= self
._download
_xml
(
42 f
'http://sport5-metadata-rr-d.nsacdn.com/vod/vod/{video_id}/HDS/metadata.xml',
45 error
= metadata
.find('./Error')
48 '{} returned error: {} - {}'.format(
50 error
.find('./Name').text
,
51 error
.find('./Description').text
),
54 title
= metadata
.find('./Title').text
55 description
= metadata
.find('./Description').text
56 duration
= int(metadata
.find('./Duration').text
)
58 posters_el
= metadata
.find('./PosterLinks')
60 'url': thumbnail
.text
,
61 'width': int(thumbnail
.get('width')),
62 'height': int(thumbnail
.get('height')),
63 } for thumbnail
in posters_el
.findall('./PosterIMG')] if posters_el
is not None else []
65 categories_el
= metadata
.find('./Categories')
67 cat
.get('name') for cat
in categories_el
.findall('./Category')
68 ] if categories_el
is not None else []
73 'vbr': int(fmt
.get('bitrate')),
74 'width': int(fmt
.get('width')),
75 'height': int(fmt
.get('height')),
76 } for fmt
in metadata
.findall('./PlaybackLinks/FileURL')]
81 'description': description
,
82 'thumbnails': thumbnails
,
84 'categories': categories
,