|
@@ -87,11 +87,25 @@ class NBCIE(AdobePassIE):
|
|
|
def _real_extract(self, url):
|
|
|
permalink, video_id = re.match(self._VALID_URL, url).groups()
|
|
|
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={
|
|
|
- 'query': '''{
|
|
|
- page(name: "%s", platform: web, type: VIDEO, userId: "0") {
|
|
|
- data {
|
|
|
+ 'query': '''query bonanzaPage(
|
|
|
+ $app: NBCUBrands! = nbc
|
|
|
+ $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 {
|
|
|
description
|
|
|
episodeNumber
|
|
@@ -100,15 +114,20 @@ class NBCIE(AdobePassIE):
|
|
|
mpxAccountId
|
|
|
mpxGuid
|
|
|
rating
|
|
|
+ resourceId
|
|
|
seasonNumber
|
|
|
secondaryTitle
|
|
|
seriesShortTitle
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-}''' % permalink,
|
|
|
- })
|
|
|
- video_data = response['data']['page']['data']
|
|
|
+}''',
|
|
|
+ 'variables': json.dumps({
|
|
|
+ 'name': permalink,
|
|
|
+ 'oneApp': True,
|
|
|
+ 'userId': '0',
|
|
|
+ }),
|
|
|
+ })['data']['bonanzaPage']['metadata']
|
|
|
query = {
|
|
|
'mbr': 'true',
|
|
|
'manifest': 'm3u',
|
|
@@ -117,8 +136,8 @@ class NBCIE(AdobePassIE):
|
|
|
title = video_data['secondaryTitle']
|
|
|
if video_data.get('locked'):
|
|
|
resource = self._get_mvpd_resource(
|
|
|
- 'nbcentertainment', title, video_id,
|
|
|
- video_data.get('rating'))
|
|
|
+ video_data.get('resourceId') or 'nbcentertainment',
|
|
|
+ title, video_id, video_data.get('rating'))
|
|
|
query['auth'] = self._extract_mvpd_auth(
|
|
|
url, video_id, 'nbcentertainment', resource)
|
|
|
theplatform_url = smuggle_url(update_url_query(
|