aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAniruddh Joshi <aniruddh@ebincoweb.com>2023-09-17 02:28:21 +0530
committerGitHub <noreply@github.com>2023-09-16 20:58:21 +0000
commit9d376c4daeaf1279a011582f3f0e6ae42af520dd (patch)
treed3c4dcab5f955c15876bf5a9a8bb059c54e41e0c
parent5336bf57a7061e0955a37f0542fc8ebf50d55b17 (diff)
[ie/AmazonMiniTV] Fix extractor (#8103)
Closes #7817 Authored by: Aniruddh-J
-rw-r--r--yt_dlp/extractor/amazonminitv.py63
1 files changed, 9 insertions, 54 deletions
diff --git a/yt_dlp/extractor/amazonminitv.py b/yt_dlp/extractor/amazonminitv.py
index b57d985d1..ad23b16bd 100644
--- a/yt_dlp/extractor/amazonminitv.py
+++ b/yt_dlp/extractor/amazonminitv.py
@@ -37,7 +37,7 @@ class AmazonMiniTVBaseIE(InfoExtractor):
return resp['data'][data['operationName']]
-class AmazonMiniTVIE(AmazonMiniTVBaseIE):
+class AmazonMiniTVIE(InfoExtractor):
_VALID_URL = r'(?:https?://(?:www\.)?amazon\.in/minitv/tp/|amazonminitv:(?:amzn1\.dv\.gti\.)?)(?P<id>[a-f0-9-]+)'
_TESTS = [{
'url': 'https://www.amazon.in/minitv/tp/75fe3a75-b8fe-4499-8100-5c9424344840?referrer=https%3A%2F%2Fwww.amazon.in%2Fminitv',
@@ -86,56 +86,14 @@ class AmazonMiniTVIE(AmazonMiniTVBaseIE):
'only_matching': True,
}]
- _GRAPHQL_QUERY_CONTENT = '''
-query content($sessionIdToken: String!, $deviceLocale: String, $contentId: ID!, $contentType: ContentType!, $clientId: String) {
- content(
- applicationContextInput: {deviceLocale: $deviceLocale, sessionIdToken: $sessionIdToken, clientId: $clientId}
- contentId: $contentId
- contentType: $contentType
- ) {
- contentId
- name
- ... on Episode {
- contentId
- vodType
- name
- images
- description {
- synopsis
- contentLengthInSeconds
- }
- publicReleaseDateUTC
- audioTracks
- seasonId
- seriesId
- seriesName
- seasonNumber
- episodeNumber
- timecode {
- endCreditsTime
- }
- }
- ... on MovieContent {
- contentId
- vodType
- name
- description {
- synopsis
- contentLengthInSeconds
- }
- images
- publicReleaseDateUTC
- audioTracks
- }
- }
-}'''
-
def _real_extract(self, url):
- asin = f'amzn1.dv.gti.{self._match_id(url)}'
- prs = self._call_api(asin, note='Downloading playback info')
+ video_uuid = self._match_id(url)
+ asin = f'amzn1.dv.gti.{video_uuid}'
+ webpage = self._download_webpage(f'https://www.amazon.in/minitv/tp/{video_uuid}', asin)
+ data = self._search_nextjs_data(webpage, asin)['props']['pageProps']['ssrProps']
formats, subtitles = [], {}
- for type_, asset in prs['playbackAssets'].items():
+ for type_, asset in traverse_obj(data, ('playbackData', 'playbackAssets', {dict.items}, ...)):
if not traverse_obj(asset, 'manifestUrl'):
continue
if type_ == 'hls':
@@ -152,12 +110,7 @@ query content($sessionIdToken: String!, $deviceLocale: String, $contentId: ID!,
else:
self.report_warning(f'Unknown asset type: {type_}')
- title_info = self._call_api(
- asin, note='Downloading title info', data={
- 'operationName': 'content',
- 'variables': {'contentId': asin},
- 'query': self._GRAPHQL_QUERY_CONTENT,
- })
+ title_info = traverse_obj(data, ('contentData', {dict})) or {}
credits_time = try_get(title_info, lambda x: x['timecode']['endCreditsTime'] / 1000)
is_episode = title_info.get('vodType') == 'EPISODE'
@@ -192,6 +145,7 @@ class AmazonMiniTVSeasonIE(AmazonMiniTVBaseIE):
IE_NAME = 'amazonminitv:season'
_VALID_URL = r'amazonminitv:season:(?:amzn1\.dv\.gti\.)?(?P<id>[a-f0-9-]+)'
IE_DESC = 'Amazon MiniTV Season, "minitv:season:" prefix'
+ _WORKING = False
_TESTS = [{
'url': 'amazonminitv:season:amzn1.dv.gti.0aa996eb-6a1b-4886-a342-387fbd2f1db0',
'playlist_mincount': 6,
@@ -251,6 +205,7 @@ class AmazonMiniTVSeriesIE(AmazonMiniTVBaseIE):
IE_NAME = 'amazonminitv:series'
_VALID_URL = r'amazonminitv:series:(?:amzn1\.dv\.gti\.)?(?P<id>[a-f0-9-]+)'
IE_DESC = 'Amazon MiniTV Series, "minitv:series:" prefix'
+ _WORKING = False
_TESTS = [{
'url': 'amazonminitv:series:amzn1.dv.gti.56521d46-b040-4fd5-872e-3e70476a04b0',
'playlist_mincount': 3,