Browse Source

[hotstar:playlist] Add extractor

master-ytdl-org
Alpesh Valia 8 years ago
committed by Sergey M․
parent
commit
477c97f86b
No known key found for this signature in database GPG Key ID: 2C393E0F18A9236D
2 changed files with 61 additions and 2 deletions
  1. +4
    -1
      youtube_dl/extractor/extractors.py
  2. +57
    -1
      youtube_dl/extractor/hotstar.py

+ 4
- 1
youtube_dl/extractor/extractors.py View File

@ -432,7 +432,10 @@ from .hitbox import HitboxIE, HitboxLiveIE
from .hitrecord import HitRecordIE from .hitrecord import HitRecordIE
from .hornbunny import HornBunnyIE from .hornbunny import HornBunnyIE
from .hotnewhiphop import HotNewHipHopIE from .hotnewhiphop import HotNewHipHopIE
from .hotstar import HotStarIE
from .hotstar import (
HotStarIE,
HotStarPlaylistIE,
)
from .howcast import HowcastIE from .howcast import HowcastIE
from .howstuffworks import HowStuffWorksIE from .howstuffworks import HowStuffWorksIE
from .hrti import ( from .hrti import (


+ 57
- 1
youtube_dl/extractor/hotstar.py View File

@ -7,6 +7,7 @@ from ..utils import (
determine_ext, determine_ext,
int_or_none, int_or_none,
) )
import re
class HotStarIE(InfoExtractor): class HotStarIE(InfoExtractor):
@ -17,7 +18,7 @@ class HotStarIE(InfoExtractor):
'info_dict': { 'info_dict': {
'id': '1000076273', 'id': '1000076273',
'ext': 'mp4', 'ext': 'mp4',
'title': 'On Air With AIB - English',
'title': 'On Air With AIB',
'description': 'md5:c957d8868e9bc793ccb813691cc4c434', 'description': 'md5:c957d8868e9bc793ccb813691cc4c434',
'timestamp': 1447227000, 'timestamp': 1447227000,
'upload_date': '20151111', 'upload_date': '20151111',
@ -100,3 +101,58 @@ class HotStarIE(InfoExtractor):
'episode_number': int_or_none(video_data.get('episodeNumber')), 'episode_number': int_or_none(video_data.get('episodeNumber')),
'series': video_data.get('contentTitle'), 'series': video_data.get('contentTitle'),
} }
class HotStarPlaylistIE(InfoExtractor):
IE_NAME = 'hotstar:playlist'
_VALID_URL = r'https?://(?:www\.)?hotstar\.com/tv/(?P<playlist_title>.+)/(?P<series_id>\d+)/episodes/(?P<playlist_id>\d{1,})'
_TESTS = [{
'url': 'http://www.hotstar.com/tv/pow-bandi-yuddh-ke/10999/episodes/10856/9993',
'info_dict': {
'id': '10856',
'title': 'pow-bandi-yuddh-ke',
},
'playlist_mincount': 0,
}, {
'url': 'http://www.hotstar.com/tv/pow-bandi-yuddh-ke/10999/episodes/10856/9993',
'only_matching': True,
}]
def _extract_episode_info(self, series_id, playlist_title, video):
picture_url = video.get('urlPictures')
thumbnail = ''
if picture_url:
thumbnail = 'http://media0-starag.startv.in/r1/thumbs/PCTV/%s/%s/PCTV-%s-hs.jpg' % (picture_url[-2:], picture_url, picture_url)
episode_title = video.get('episodeTitle', '')
episode_title = episode_title.lower().replace(' ', '-')
url = "http://www.hotstar.com/tv/%s/%s/%s/%s" % (playlist_title, series_id, episode_title, video.get('contentId'))
info_dict = {
'id': video.get('contentId'),
'title': video.get('episodeTitle'),
'description': video.get('longDescription'),
'thumbnail': thumbnail,
'url': url,
'_type': 'url',
}
return info_dict
def _real_extract(self, url):
mobj = re.match(self._VALID_URL, url)
series_id = mobj.group('series_id')
playlist_id = mobj.group('playlist_id')
playlist_title = mobj.group('playlist_title')
collection = self._download_json(
"http://search.hotstar.com/AVS/besc?action=SearchContents&appVersion=5.0.39&channel=PCTV&moreFilters=series:%s;&query=*&searchOrder=last_broadcast_date+desc,year+asc,title+asc&type=EPISODE" % playlist_id,
playlist_id
)
videos = collection.get('resultObj', {}).get('response', {}).get('docs', [])
entries = [
self._extract_episode_info(series_id, playlist_title, video)
for video in videos if video.get('contentId')]
return self.playlist_result(entries, playlist_id, playlist_title)

Loading…
Cancel
Save