mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	[nbc] add support for nbc multi network URLs(closes #23049)
This commit is contained in:
		@@ -87,11 +87,25 @@ class NBCIE(AdobePassIE):
 | 
				
			|||||||
    def _real_extract(self, url):
 | 
					    def _real_extract(self, url):
 | 
				
			||||||
        permalink, video_id = re.match(self._VALID_URL, url).groups()
 | 
					        permalink, video_id = re.match(self._VALID_URL, url).groups()
 | 
				
			||||||
        permalink = 'http' + compat_urllib_parse_unquote(permalink)
 | 
					        permalink = 'http' + compat_urllib_parse_unquote(permalink)
 | 
				
			||||||
        response = self._download_json(
 | 
					        video_data = self._download_json(
 | 
				
			||||||
            'https://friendship.nbc.co/v2/graphql', video_id, query={
 | 
					            'https://friendship.nbc.co/v2/graphql', video_id, query={
 | 
				
			||||||
                'query': '''{
 | 
					                'query': '''query bonanzaPage(
 | 
				
			||||||
  page(name: "%s", platform: web, type: VIDEO, userId: "0") {
 | 
					  $app: NBCUBrands! = nbc
 | 
				
			||||||
    data {
 | 
					  $name: String!
 | 
				
			||||||
 | 
					  $oneApp: Boolean
 | 
				
			||||||
 | 
					  $platform: SupportedPlatforms! = web
 | 
				
			||||||
 | 
					  $type: EntityPageType! = VIDEO
 | 
				
			||||||
 | 
					  $userId: String!
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
 | 
					  bonanzaPage(
 | 
				
			||||||
 | 
					    app: $app
 | 
				
			||||||
 | 
					    name: $name
 | 
				
			||||||
 | 
					    oneApp: $oneApp
 | 
				
			||||||
 | 
					    platform: $platform
 | 
				
			||||||
 | 
					    type: $type
 | 
				
			||||||
 | 
					    userId: $userId
 | 
				
			||||||
 | 
					  ) {
 | 
				
			||||||
 | 
					    metadata {
 | 
				
			||||||
      ... on VideoPageData {
 | 
					      ... on VideoPageData {
 | 
				
			||||||
        description
 | 
					        description
 | 
				
			||||||
        episodeNumber
 | 
					        episodeNumber
 | 
				
			||||||
@@ -100,15 +114,20 @@ class NBCIE(AdobePassIE):
 | 
				
			|||||||
        mpxAccountId
 | 
					        mpxAccountId
 | 
				
			||||||
        mpxGuid
 | 
					        mpxGuid
 | 
				
			||||||
        rating
 | 
					        rating
 | 
				
			||||||
 | 
					        resourceId
 | 
				
			||||||
        seasonNumber
 | 
					        seasonNumber
 | 
				
			||||||
        secondaryTitle
 | 
					        secondaryTitle
 | 
				
			||||||
        seriesShortTitle
 | 
					        seriesShortTitle
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}''' % permalink,
 | 
					}''',
 | 
				
			||||||
            })
 | 
					                'variables': json.dumps({
 | 
				
			||||||
        video_data = response['data']['page']['data']
 | 
					                    'name': permalink,
 | 
				
			||||||
 | 
					                    'oneApp': True,
 | 
				
			||||||
 | 
					                    'userId': '0',
 | 
				
			||||||
 | 
					                }),
 | 
				
			||||||
 | 
					            })['data']['bonanzaPage']['metadata']
 | 
				
			||||||
        query = {
 | 
					        query = {
 | 
				
			||||||
            'mbr': 'true',
 | 
					            'mbr': 'true',
 | 
				
			||||||
            'manifest': 'm3u',
 | 
					            'manifest': 'm3u',
 | 
				
			||||||
@@ -117,8 +136,8 @@ class NBCIE(AdobePassIE):
 | 
				
			|||||||
        title = video_data['secondaryTitle']
 | 
					        title = video_data['secondaryTitle']
 | 
				
			||||||
        if video_data.get('locked'):
 | 
					        if video_data.get('locked'):
 | 
				
			||||||
            resource = self._get_mvpd_resource(
 | 
					            resource = self._get_mvpd_resource(
 | 
				
			||||||
                'nbcentertainment', title, video_id,
 | 
					                video_data.get('resourceId') or 'nbcentertainment',
 | 
				
			||||||
                video_data.get('rating'))
 | 
					                title, video_id, video_data.get('rating'))
 | 
				
			||||||
            query['auth'] = self._extract_mvpd_auth(
 | 
					            query['auth'] = self._extract_mvpd_auth(
 | 
				
			||||||
                url, video_id, 'nbcentertainment', resource)
 | 
					                url, video_id, 'nbcentertainment', resource)
 | 
				
			||||||
        theplatform_url = smuggle_url(update_url_query(
 | 
					        theplatform_url = smuggle_url(update_url_query(
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user