mirror of
				https://github.com/ytdl-org/youtube-dl
				synced 2025-11-04 03:33:46 +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
					
				@ -2169,18 +2169,24 @@ class InfoExtractor(object):
 | 
			
		||||
                    })
 | 
			
		||||
        return formats
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def _find_jwplayer_data(webpage):
 | 
			
		||||
    def _find_jwplayer_data(self, webpage, video_id=None, transform_source=js_to_json):
 | 
			
		||||
        mobj = re.search(
 | 
			
		||||
            r'jwplayer\((?P<quote>[\'"])[^\'" ]+(?P=quote)\)\.setup\s*\((?P<options>[^)]+)\)',
 | 
			
		||||
            webpage)
 | 
			
		||||
        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):
 | 
			
		||||
        jwplayer_data = self._parse_json(
 | 
			
		||||
            self._find_jwplayer_data(webpage), video_id,
 | 
			
		||||
            transform_source=js_to_json)
 | 
			
		||||
        jwplayer_data = self._find_jwplayer_data(
 | 
			
		||||
            webpage, video_id, transform_source=js_to_json)
 | 
			
		||||
        return self._parse_jwplayer_data(
 | 
			
		||||
            jwplayer_data, video_id, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -991,6 +991,20 @@ class GenericIE(InfoExtractor):
 | 
			
		||||
                '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
 | 
			
		||||
        {
 | 
			
		||||
            'url': 'http://www.rtlnieuws.nl/nieuws/buitenland/aanslagen-kopenhagen',
 | 
			
		||||
@ -2550,18 +2564,14 @@ class GenericIE(InfoExtractor):
 | 
			
		||||
                self._sort_formats(entry['formats'])
 | 
			
		||||
            return self.playlist_result(entries)
 | 
			
		||||
 | 
			
		||||
        jwplayer_data_str = self._find_jwplayer_data(webpage)
 | 
			
		||||
        if jwplayer_data_str:
 | 
			
		||||
            try:
 | 
			
		||||
                jwplayer_data = self._parse_json(
 | 
			
		||||
                    jwplayer_data_str, video_id, transform_source=js_to_json)
 | 
			
		||||
        jwplayer_data = self._find_jwplayer_data(
 | 
			
		||||
            webpage, video_id, transform_source=js_to_json)
 | 
			
		||||
        if jwplayer_data:
 | 
			
		||||
            info = self._parse_jwplayer_data(
 | 
			
		||||
                jwplayer_data, video_id, require_title=False)
 | 
			
		||||
            if not info.get('title'):
 | 
			
		||||
                info['title'] = video_title
 | 
			
		||||
            return info
 | 
			
		||||
            except ExtractorError:
 | 
			
		||||
                pass
 | 
			
		||||
 | 
			
		||||
        def check_video(vurl):
 | 
			
		||||
            if YoutubeIE.suitable(vurl):
 | 
			
		||||
 | 
			
		||||
@ -31,9 +31,8 @@ class TVNoeIE(InfoExtractor):
 | 
			
		||||
            r'<iframe[^>]+src="([^"]+)"', webpage, 'iframe URL')
 | 
			
		||||
 | 
			
		||||
        ifs_page = self._download_webpage(iframe_url, video_id)
 | 
			
		||||
        jwplayer_data = self._parse_json(
 | 
			
		||||
            self._find_jwplayer_data(ifs_page),
 | 
			
		||||
            video_id, transform_source=js_to_json)
 | 
			
		||||
        jwplayer_data = self._find_jwplayer_data(
 | 
			
		||||
            ifs_page, video_id, transform_source=js_to_json)
 | 
			
		||||
        info_dict = self._parse_jwplayer_data(
 | 
			
		||||
            jwplayer_data, video_id, require_title=False, base_url=iframe_url)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user