mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	[jwplatform] Separate codes for for parsing jwplayer data
This commit is contained in:
		@@ -7,33 +7,9 @@ from .common import InfoExtractor
 | 
				
			|||||||
from ..utils import int_or_none
 | 
					from ..utils import int_or_none
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class JWPlatformIE(InfoExtractor):
 | 
					class JWPlatformBaseIE(InfoExtractor):
 | 
				
			||||||
    _VALID_URL = r'(?:https?://content\.jwplatform\.com/(?:feeds|players|jw6)/|jwplatform:)(?P<id>[a-zA-Z0-9]{8})'
 | 
					    def _parse_jwplayer_data(self, jwplayer_data, video_id):
 | 
				
			||||||
    _TEST = {
 | 
					        video_data = jwplayer_data['playlist'][0]
 | 
				
			||||||
        'url': 'http://content.jwplatform.com/players/nPripu9l-ALJ3XQCI.js',
 | 
					 | 
				
			||||||
        'md5': 'fa8899fa601eb7c83a64e9d568bdf325',
 | 
					 | 
				
			||||||
        'info_dict': {
 | 
					 | 
				
			||||||
            'id': 'nPripu9l',
 | 
					 | 
				
			||||||
            'ext': 'mov',
 | 
					 | 
				
			||||||
            'title': 'Big Buck Bunny Trailer',
 | 
					 | 
				
			||||||
            'description': 'Big Buck Bunny is a short animated film by the Blender Institute. It is made using free and open source software.',
 | 
					 | 
				
			||||||
            'upload_date': '20081127',
 | 
					 | 
				
			||||||
            'timestamp': 1227796140,
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @staticmethod
 | 
					 | 
				
			||||||
    def _extract_url(webpage):
 | 
					 | 
				
			||||||
        mobj = re.search(
 | 
					 | 
				
			||||||
            r'<script[^>]+?src=["\'](?P<url>(?:https?:)?//content.jwplatform.com/players/[a-zA-Z0-9]{8})',
 | 
					 | 
				
			||||||
            webpage)
 | 
					 | 
				
			||||||
        if mobj:
 | 
					 | 
				
			||||||
            return mobj.group('url')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def _real_extract(self, url):
 | 
					 | 
				
			||||||
        video_id = self._match_id(url)
 | 
					 | 
				
			||||||
        json_data = self._download_json('http://content.jwplatform.com/feeds/%s.json' % video_id, video_id)
 | 
					 | 
				
			||||||
        video_data = json_data['playlist'][0]
 | 
					 | 
				
			||||||
        subtitles = {}
 | 
					        subtitles = {}
 | 
				
			||||||
        for track in video_data['tracks']:
 | 
					        for track in video_data['tracks']:
 | 
				
			||||||
            if track['kind'] == 'captions':
 | 
					            if track['kind'] == 'captions':
 | 
				
			||||||
@@ -68,3 +44,32 @@ class JWPlatformIE(InfoExtractor):
 | 
				
			|||||||
            'subtitles': subtitles,
 | 
					            'subtitles': subtitles,
 | 
				
			||||||
            'formats': formats,
 | 
					            'formats': formats,
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class JWPlatformIE(JWPlatformBaseIE):
 | 
				
			||||||
 | 
					    _VALID_URL = r'(?:https?://content\.jwplatform\.com/(?:feeds|players|jw6)/|jwplatform:)(?P<id>[a-zA-Z0-9]{8})'
 | 
				
			||||||
 | 
					    _TEST = {
 | 
				
			||||||
 | 
					        'url': 'http://content.jwplatform.com/players/nPripu9l-ALJ3XQCI.js',
 | 
				
			||||||
 | 
					        'md5': 'fa8899fa601eb7c83a64e9d568bdf325',
 | 
				
			||||||
 | 
					        'info_dict': {
 | 
				
			||||||
 | 
					            'id': 'nPripu9l',
 | 
				
			||||||
 | 
					            'ext': 'mov',
 | 
				
			||||||
 | 
					            'title': 'Big Buck Bunny Trailer',
 | 
				
			||||||
 | 
					            'description': 'Big Buck Bunny is a short animated film by the Blender Institute. It is made using free and open source software.',
 | 
				
			||||||
 | 
					            'upload_date': '20081127',
 | 
				
			||||||
 | 
					            'timestamp': 1227796140,
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @staticmethod
 | 
				
			||||||
 | 
					    def _extract_url(webpage):
 | 
				
			||||||
 | 
					        mobj = re.search(
 | 
				
			||||||
 | 
					            r'<script[^>]+?src=["\'](?P<url>(?:https?:)?//content.jwplatform.com/players/[a-zA-Z0-9]{8})',
 | 
				
			||||||
 | 
					            webpage)
 | 
				
			||||||
 | 
					        if mobj:
 | 
				
			||||||
 | 
					            return mobj.group('url')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _real_extract(self, url):
 | 
				
			||||||
 | 
					        video_id = self._match_id(url)
 | 
				
			||||||
 | 
					        json_data = self._download_json('http://content.jwplatform.com/feeds/%s.json' % video_id, video_id)
 | 
				
			||||||
 | 
					        return self._parse_jwplayer_data(json_data, video_id)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user