projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[ellentv] Replace test
[youtube-dl]
/
youtube_dl
/
extractor
/
common.py
diff --git
a/youtube_dl/extractor/common.py
b/youtube_dl/extractor/common.py
index 31368820836f8d5d6f8ae571d508da40940221be..530c449c1b48e48d0f8fcf4e7223bff9d60138b1 100644
(file)
--- a/
youtube_dl/extractor/common.py
+++ b/
youtube_dl/extractor/common.py
@@
-767,6
+767,10
@@
class InfoExtractor(object):
formats)
def _is_valid_url(self, url, video_id, item='video'):
formats)
def _is_valid_url(self, url, video_id, item='video'):
+ url = self._proto_relative_url(url, scheme='http:')
+ # For now assume non HTTP(S) URLs always valid
+ if not (url.startswith('http://') or url.startswith('https://')):
+ return True
try:
self._request_webpage(url, video_id, 'Checking %s URL' % item)
return True
try:
self._request_webpage(url, video_id, 'Checking %s URL' % item)
return True
@@
-818,7
+822,7
@@
class InfoExtractor(object):
(media_el.attrib.get('href') or media_el.attrib.get('url')))
tbr = int_or_none(media_el.attrib.get('bitrate'))
formats.append({
(media_el.attrib.get('href') or media_el.attrib.get('url')))
tbr = int_or_none(media_el.attrib.get('bitrate'))
formats.append({
- 'format_id': '-'.join(filter(None, [f4m_id,
'f4m-%d' %
(i if tbr is None else tbr)])),
+ 'format_id': '-'.join(filter(None, [f4m_id,
compat_str
(i if tbr is None else tbr)])),
'url': manifest_url,
'ext': 'flv',
'tbr': tbr,
'url': manifest_url,
'ext': 'flv',
'tbr': tbr,
@@
-835,7
+839,7
@@
class InfoExtractor(object):
m3u8_id=None):
formats = [{
m3u8_id=None):
formats = [{
- 'format_id': '-'.join(filter(None, [m3u8_id, 'm
3u8-m
eta'])),
+ 'format_id': '-'.join(filter(None, [m3u8_id, 'meta'])),
'url': m3u8_url,
'ext': ext,
'protocol': 'm3u8',
'url': m3u8_url,
'ext': ext,
'protocol': 'm3u8',
@@
-879,8
+883,13
@@
class InfoExtractor(object):
formats.append({'url': format_url(line)})
continue
tbr = int_or_none(last_info.get('BANDWIDTH'), scale=1000)
formats.append({'url': format_url(line)})
continue
tbr = int_or_none(last_info.get('BANDWIDTH'), scale=1000)
+ format_id = []
+ if m3u8_id:
+ format_id.append(m3u8_id)
+ last_media_name = last_media.get('NAME') if last_media else None
+ format_id.append(last_media_name if last_media_name else '%d' % (tbr if tbr else len(formats)))
f = {
f = {
- 'format_id': '-'.join(f
ilter(None, [m3u8_id, 'm3u8-%d' % (tbr if tbr else len(formats))])
),
+ 'format_id': '-'.join(f
ormat_id
),
'url': format_url(line.strip()),
'tbr': tbr,
'ext': ext,
'url': format_url(line.strip()),
'tbr': tbr,
'ext': ext,
@@
-923,18
+932,18
@@
class InfoExtractor(object):
rtmp_count = 0
if smil.findall('./body/seq/video'):
video = smil.findall('./body/seq/video')[0]
rtmp_count = 0
if smil.findall('./body/seq/video'):
video = smil.findall('./body/seq/video')[0]
- fmts, rtmp_count = self._parse_smil_video(video, base, rtmp_count)
+ fmts, rtmp_count = self._parse_smil_video(video,
video_id,
base, rtmp_count)
formats.extend(fmts)
else:
for video in smil.findall('./body/switch/video'):
formats.extend(fmts)
else:
for video in smil.findall('./body/switch/video'):
- fmts, rtmp_count = self._parse_smil_video(video, base, rtmp_count)
+ fmts, rtmp_count = self._parse_smil_video(video,
video_id,
base, rtmp_count)
formats.extend(fmts)
self._sort_formats(formats)
return formats
formats.extend(fmts)
self._sort_formats(formats)
return formats
- def _parse_smil_video(self, video, base, rtmp_count):
+ def _parse_smil_video(self, video,
video_id,
base, rtmp_count):
src = video.get('src')
if not src:
return ([], rtmp_count)
src = video.get('src')
if not src:
return ([], rtmp_count)
@@
-1053,6
+1062,9
@@
class InfoExtractor(object):
def _get_automatic_captions(self, *args, **kwargs):
raise NotImplementedError("This method must be implemented by subclasses")
def _get_automatic_captions(self, *args, **kwargs):
raise NotImplementedError("This method must be implemented by subclasses")
+ def _subtitles_timecode(self, seconds):
+ return '%02d:%02d:%02d.%03d' % (seconds / 3600, (seconds % 3600) / 60, seconds % 60, (seconds % 1) * 1000)
+
class SearchInfoExtractor(InfoExtractor):
"""
class SearchInfoExtractor(InfoExtractor):
"""