]>
Commit | Line | Data |
---|---|---|
2f9e0212 AG |
1 | # coding: utf-8 |
2 | from __future__ import unicode_literals | |
3 | ||
4 | from .common import InfoExtractor | |
5 | from ..utils import ( | |
6 | try_get, | |
7 | unified_strdate, | |
8 | ) | |
9 | ||
10 | ||
11 | class PlanetMarathiIE(InfoExtractor): | |
12 | _VALID_URL = r'(?:https?://)(?:www\.)?planetmarathi\.com/titles/(?P<id>[^/#&?$]+)' | |
13 | _TESTS = [{ | |
14 | 'url': 'https://www.planetmarathi.com/titles/ek-unad-divas', | |
15 | 'playlist_mincount': 2, | |
16 | 'info_dict': { | |
17 | 'id': 'ek-unad-divas', | |
18 | }, | |
19 | 'playlist': [{ | |
20 | 'info_dict': { | |
21 | 'id': 'ASSETS-MOVIE-ASSET-01_ek-unad-divas', | |
22 | 'ext': 'mp4', | |
23 | 'title': 'ek unad divas', | |
24 | 'alt_title': 'चित्रपट', | |
25 | 'description': 'md5:41c7ed6b041c2fea9820a3f3125bd881', | |
26 | 'season_number': None, | |
27 | 'episode_number': 1, | |
28 | 'duration': 5539, | |
29 | 'upload_date': '20210829', | |
30 | }, | |
31 | }] # Trailer skipped | |
32 | }, { | |
33 | 'url': 'https://www.planetmarathi.com/titles/baap-beep-baap-season-1', | |
34 | 'playlist_mincount': 10, | |
35 | 'info_dict': { | |
36 | 'id': 'baap-beep-baap-season-1', | |
37 | }, | |
38 | 'playlist': [{ | |
39 | 'info_dict': { | |
40 | 'id': 'ASSETS-CHARACTER-PROFILE-SEASON-01-ASSET-01_baap-beep-baap-season-1', | |
41 | 'ext': 'mp4', | |
42 | 'title': 'Manohar Kanhere', | |
43 | 'alt_title': 'मनोहर कान्हेरे', | |
44 | 'description': 'md5:285ed45d5c0ab5522cac9a043354ebc6', | |
45 | 'season_number': 1, | |
46 | 'episode_number': 1, | |
47 | 'duration': 29, | |
48 | 'upload_date': '20210829', | |
49 | }, | |
50 | }] # Trailers, Episodes, other Character profiles skipped | |
51 | }] | |
52 | ||
53 | def _real_extract(self, url): | |
54 | id = self._match_id(url) | |
55 | entries = [] | |
56 | json_data = self._download_json(f'https://www.planetmarathi.com/api/v1/titles/{id}/assets', id)['assets'] | |
57 | for asset in json_data: | |
58 | asset_title = asset['mediaAssetName']['en'] | |
59 | if asset_title == 'Movie': | |
60 | asset_title = id.replace('-', ' ') | |
61 | asset_id = f'{asset["sk"]}_{id}'.replace('#', '-') | |
62 | formats, subtitles = self._extract_m3u8_formats_and_subtitles(asset['mediaAssetURL'], asset_id) | |
63 | self._sort_formats(formats) | |
64 | entries.append({ | |
65 | 'id': asset_id, | |
66 | 'title': asset_title, | |
67 | 'alt_title': try_get(asset, lambda x: x['mediaAssetName']['mr']), | |
68 | 'description': try_get(asset, lambda x: x['mediaAssetDescription']['en']), | |
69 | 'season_number': asset.get('mediaAssetSeason'), | |
70 | 'episode_number': asset.get('mediaAssetIndexForAssetType'), | |
71 | 'duration': asset.get('mediaAssetDurationInSeconds'), | |
72 | 'upload_date': unified_strdate(asset.get('created')), | |
73 | 'formats': formats, | |
74 | 'subtitles': subtitles, | |
75 | }) | |
76 | return self.playlist_result(entries, playlist_id=id) |