|
@ -7,12 +7,15 @@ import random |
|
|
|
|
|
|
|
|
from .common import InfoExtractor |
|
|
from .common import InfoExtractor |
|
|
from ..compat import ( |
|
|
from ..compat import ( |
|
|
|
|
|
compat_parse_qs, |
|
|
compat_str, |
|
|
compat_str, |
|
|
compat_urllib_parse, |
|
|
compat_urllib_parse, |
|
|
|
|
|
compat_urllib_parse_urlparse, |
|
|
compat_urllib_request, |
|
|
compat_urllib_request, |
|
|
) |
|
|
) |
|
|
from ..utils import ( |
|
|
from ..utils import ( |
|
|
ExtractorError, |
|
|
ExtractorError, |
|
|
|
|
|
parse_duration, |
|
|
parse_iso8601, |
|
|
parse_iso8601, |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
@ -185,7 +188,7 @@ class TwitchVodIE(TwitchItemBaseIE): |
|
|
_ITEM_SHORTCUT = 'v' |
|
|
_ITEM_SHORTCUT = 'v' |
|
|
|
|
|
|
|
|
_TEST = { |
|
|
_TEST = { |
|
|
'url': 'http://www.twitch.tv/riotgames/v/6528877', |
|
|
|
|
|
|
|
|
'url': 'http://www.twitch.tv/riotgames/v/6528877?t=5m10s', |
|
|
'info_dict': { |
|
|
'info_dict': { |
|
|
'id': 'v6528877', |
|
|
'id': 'v6528877', |
|
|
'ext': 'mp4', |
|
|
'ext': 'mp4', |
|
@ -197,6 +200,7 @@ class TwitchVodIE(TwitchItemBaseIE): |
|
|
'uploader': 'Riot Games', |
|
|
'uploader': 'Riot Games', |
|
|
'uploader_id': 'riotgames', |
|
|
'uploader_id': 'riotgames', |
|
|
'view_count': int, |
|
|
'view_count': int, |
|
|
|
|
|
'start_time': 310, |
|
|
}, |
|
|
}, |
|
|
'params': { |
|
|
'params': { |
|
|
# m3u8 download |
|
|
# m3u8 download |
|
@ -216,6 +220,12 @@ class TwitchVodIE(TwitchItemBaseIE): |
|
|
item_id, 'mp4') |
|
|
item_id, 'mp4') |
|
|
self._prefer_source(formats) |
|
|
self._prefer_source(formats) |
|
|
info['formats'] = formats |
|
|
info['formats'] = formats |
|
|
|
|
|
|
|
|
|
|
|
parsed_url = compat_urllib_parse_urlparse(url) |
|
|
|
|
|
query = compat_parse_qs(parsed_url.query) |
|
|
|
|
|
if 't' in query: |
|
|
|
|
|
info['start_time'] = parse_duration(query['t'][0]) |
|
|
|
|
|
|
|
|
return info |
|
|
return info |
|
|
|
|
|
|
|
|
|
|
|
|
|
|