mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-11-25 03:32:05 +00:00
Merge pull request #12307 from rndusr/fix/str-item-assignment
Fix "'str' object does not support item assignment"
This commit is contained in:
commit
cc63259d18
3 changed files with 36 additions and 21 deletions
|
@ -2169,18 +2169,24 @@ class InfoExtractor(object):
|
||||||
})
|
})
|
||||||
return formats
|
return formats
|
||||||
|
|
||||||
@staticmethod
|
def _find_jwplayer_data(self, webpage, video_id=None, transform_source=js_to_json):
|
||||||
def _find_jwplayer_data(webpage):
|
|
||||||
mobj = re.search(
|
mobj = re.search(
|
||||||
r'jwplayer\((?P<quote>[\'"])[^\'" ]+(?P=quote)\)\.setup\s*\((?P<options>[^)]+)\)',
|
r'jwplayer\((?P<quote>[\'"])[^\'" ]+(?P=quote)\)\.setup\s*\((?P<options>[^)]+)\)',
|
||||||
webpage)
|
webpage)
|
||||||
if mobj:
|
if mobj:
|
||||||
return mobj.group('options')
|
try:
|
||||||
|
jwplayer_data = self._parse_json(mobj.group('options'),
|
||||||
|
video_id=video_id,
|
||||||
|
transform_source=transform_source)
|
||||||
|
except ExtractorError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
if isinstance(jwplayer_data, dict):
|
||||||
|
return jwplayer_data
|
||||||
|
|
||||||
def _extract_jwplayer_data(self, webpage, video_id, *args, **kwargs):
|
def _extract_jwplayer_data(self, webpage, video_id, *args, **kwargs):
|
||||||
jwplayer_data = self._parse_json(
|
jwplayer_data = self._find_jwplayer_data(
|
||||||
self._find_jwplayer_data(webpage), video_id,
|
webpage, video_id, transform_source=js_to_json)
|
||||||
transform_source=js_to_json)
|
|
||||||
return self._parse_jwplayer_data(
|
return self._parse_jwplayer_data(
|
||||||
jwplayer_data, video_id, *args, **kwargs)
|
jwplayer_data, video_id, *args, **kwargs)
|
||||||
|
|
||||||
|
|
|
@ -991,6 +991,20 @@ class GenericIE(InfoExtractor):
|
||||||
'thumbnail': r're:^https?://.*\.jpg$',
|
'thumbnail': r're:^https?://.*\.jpg$',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
# JWPlayer config passed as variable
|
||||||
|
'url': 'http://www.txxx.com/videos/3326530/ariele/',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '3326530_hq',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'ARIELE | Tube Cup',
|
||||||
|
'uploader': 'www.txxx.com',
|
||||||
|
'age_limit': 18,
|
||||||
|
},
|
||||||
|
'params': {
|
||||||
|
'skip_download': True,
|
||||||
|
}
|
||||||
|
},
|
||||||
# rtl.nl embed
|
# rtl.nl embed
|
||||||
{
|
{
|
||||||
'url': 'http://www.rtlnieuws.nl/nieuws/buitenland/aanslagen-kopenhagen',
|
'url': 'http://www.rtlnieuws.nl/nieuws/buitenland/aanslagen-kopenhagen',
|
||||||
|
@ -2550,18 +2564,14 @@ class GenericIE(InfoExtractor):
|
||||||
self._sort_formats(entry['formats'])
|
self._sort_formats(entry['formats'])
|
||||||
return self.playlist_result(entries)
|
return self.playlist_result(entries)
|
||||||
|
|
||||||
jwplayer_data_str = self._find_jwplayer_data(webpage)
|
jwplayer_data = self._find_jwplayer_data(
|
||||||
if jwplayer_data_str:
|
webpage, video_id, transform_source=js_to_json)
|
||||||
try:
|
if jwplayer_data:
|
||||||
jwplayer_data = self._parse_json(
|
|
||||||
jwplayer_data_str, video_id, transform_source=js_to_json)
|
|
||||||
info = self._parse_jwplayer_data(
|
info = self._parse_jwplayer_data(
|
||||||
jwplayer_data, video_id, require_title=False)
|
jwplayer_data, video_id, require_title=False)
|
||||||
if not info.get('title'):
|
if not info.get('title'):
|
||||||
info['title'] = video_title
|
info['title'] = video_title
|
||||||
return info
|
return info
|
||||||
except ExtractorError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def check_video(vurl):
|
def check_video(vurl):
|
||||||
if YoutubeIE.suitable(vurl):
|
if YoutubeIE.suitable(vurl):
|
||||||
|
|
|
@ -31,9 +31,8 @@ class TVNoeIE(InfoExtractor):
|
||||||
r'<iframe[^>]+src="([^"]+)"', webpage, 'iframe URL')
|
r'<iframe[^>]+src="([^"]+)"', webpage, 'iframe URL')
|
||||||
|
|
||||||
ifs_page = self._download_webpage(iframe_url, video_id)
|
ifs_page = self._download_webpage(iframe_url, video_id)
|
||||||
jwplayer_data = self._parse_json(
|
jwplayer_data = self._find_jwplayer_data(
|
||||||
self._find_jwplayer_data(ifs_page),
|
ifs_page, video_id, transform_source=js_to_json)
|
||||||
video_id, transform_source=js_to_json)
|
|
||||||
info_dict = self._parse_jwplayer_data(
|
info_dict = self._parse_jwplayer_data(
|
||||||
jwplayer_data, video_id, require_title=False, base_url=iframe_url)
|
jwplayer_data, video_id, require_title=False, base_url=iframe_url)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue