planetmarathi.py 2.9 KB

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