seperate code in seperate function
--> easier to read and unterstand
This commit is contained in:
parent
60180f7e6f
commit
46862bd0f9
@ -146,76 +146,81 @@ class NowTVIE(InfoExtractor):
|
||||
}]
|
||||
|
||||
def _real_extract(self, url):
|
||||
url = url.split('?')[0]
|
||||
display_id = self._match_id(url)
|
||||
display_id_split = display_id.split('/')
|
||||
if url.endswith('/player') or url.endswith('/preview'):
|
||||
if len(display_id) > 2:
|
||||
|
||||
if 'player' in url or 'preview' in url: # then the link is a direct videoclip-link!
|
||||
if len(display_id_split) > 2:
|
||||
display_id = '/'.join((display_id_split[0], display_id_split[-2]))
|
||||
|
||||
info = self._download_json(
|
||||
'https://api.nowtv.de/v3/movies/%s?fields=id,title,free,geoblocked,articleLong,articleShort,broadcastStartDate,seoUrl,duration,format,files' % display_id,
|
||||
display_id)
|
||||
|
||||
video_id, title, description, timestamp, duration, formats = self.episode_details(info)
|
||||
|
||||
f = info.get('format', {})
|
||||
thumbnail = f.get('defaultImage169Format') or f.get('defaultImage169Logo')
|
||||
|
||||
return {
|
||||
'id': video_id,
|
||||
'display_id': display_id,
|
||||
'title': title,
|
||||
'description': description,
|
||||
'thumbnail': thumbnail,
|
||||
'timestamp': timestamp,
|
||||
'duration': duration,
|
||||
'formats': formats,
|
||||
}
|
||||
return self._extract_videoclip(display_id)
|
||||
else:
|
||||
season = None
|
||||
if len(display_id_split) > 1:
|
||||
display_id = display_id_split[0]
|
||||
season = display_id_split[2]
|
||||
return self._extract_playlist(display_id, season)
|
||||
|
||||
info = self._download_json(
|
||||
'https://api.nowtv.de/v3/formats/seo?fields=id,title,defaultImage169Format,defaultImage169Logo,formatTabs.*,formatTabs.formatTabPages.container.movies.*,formatTabs.formatTabPages.container.movies.files&name=%s.php' % display_id,
|
||||
display_id)
|
||||
|
||||
playlist_id = info['id']
|
||||
playlist_title = info['title']
|
||||
thumbnail = info.get('defaultImage169Format') or info.get('defaultImage169Logo')
|
||||
|
||||
files = info['formatTabs']
|
||||
|
||||
videos = []
|
||||
playlists = []
|
||||
def _extract_videoclip(self, display_id):
|
||||
info = self._download_json(
|
||||
'https://api.nowtv.de/v3/movies/%s?fields=id,title,season,episode,free,geoblocked,articleLong,articleShort,broadcastStartDate,seoUrl,duration,format,files' % display_id,
|
||||
display_id)
|
||||
|
||||
for season_item in files['items']:
|
||||
video_id, title, title_long, description, timestamp, duration, formats = self.episode_details(info)
|
||||
|
||||
f = info.get('format', {})
|
||||
thumbnail = f.get('defaultImage169Format') or f.get('defaultImage169Logo')
|
||||
|
||||
return {
|
||||
'id': video_id,
|
||||
'display_id': display_id,
|
||||
'title': '%s - %s' % (info['format']['title'], title),
|
||||
'description': description,
|
||||
'thumbnail': thumbnail,
|
||||
'timestamp': timestamp,
|
||||
'duration': duration,
|
||||
'formats': formats,
|
||||
}
|
||||
|
||||
def _extract_playlist(self, display_id, season):
|
||||
info = self._download_json(
|
||||
'https://api.nowtv.de/v3/formats/seo?fields=id,title,defaultImage169Format,defaultImage169Logo,formatTabs.*,formatTabs.formatTabPages.container.movies.*,formatTabs.formatTabPages.container.movies.files&name=%s.php' % display_id,
|
||||
display_id)
|
||||
|
||||
playlist_id = info['id']
|
||||
playlist_title = info['title']
|
||||
thumbnail = info.get('defaultImage169Format') or info.get('defaultImage169Logo')
|
||||
|
||||
files = info['formatTabs']
|
||||
|
||||
videos = []
|
||||
playlists = []
|
||||
|
||||
for season_item in files['items']:
|
||||
if season:
|
||||
if season != season_item['seoheadline']:
|
||||
continue
|
||||
|
||||
for items in season_item['formatTabPages']['items']:
|
||||
try:
|
||||
if season != season_item['seoheadline']:
|
||||
continue
|
||||
except:
|
||||
pass
|
||||
|
||||
for items in season_item['formatTabPages']['items']:
|
||||
try:
|
||||
for episode in items['container']['movies']['items']:
|
||||
|
||||
video_id, title, description, timestamp, duration, formats = self.episode_details(episode)
|
||||
for episode in items['container']['movies']['items']:
|
||||
|
||||
videos.append({
|
||||
'id': video_id,
|
||||
'display_id': display_id,
|
||||
'title': "%s - %s" % (playlist_title, title),
|
||||
'description': description,
|
||||
'thumbnail': thumbnail,
|
||||
'timestamp': timestamp,
|
||||
'duration': duration,
|
||||
'formats': formats,
|
||||
})
|
||||
except:
|
||||
continue
|
||||
|
||||
return self.playlist_result(videos, playlist_id, playlist_title)
|
||||
video_id, title, title_long, description, timestamp, duration, formats = self.episode_details(episode)
|
||||
|
||||
videos.append({
|
||||
'id': video_id,
|
||||
'display_id': display_id,
|
||||
'title': title_long,
|
||||
'description': description,
|
||||
'thumbnail': thumbnail,
|
||||
'timestamp': timestamp,
|
||||
'duration': duration,
|
||||
'formats': formats,
|
||||
})
|
||||
except:
|
||||
continue
|
||||
|
||||
return self.playlist_result(videos.reverse(), playlist_id, playlist_title)
|
||||
|
||||
def episode_details(self, info):
|
||||
|
||||
@ -251,5 +256,6 @@ class NowTVIE(InfoExtractor):
|
||||
timestamp = parse_iso8601(info.get('broadcastStartDate'), ' ')
|
||||
duration = parse_duration(info.get('duration'))
|
||||
title = info['title']
|
||||
# title = "S%dE%d - %s" % (episode['season'], episode['episode'], episode['title'])
|
||||
return video_id, title, description, timestamp, duration, formats
|
||||
title_long = "S%sE%s - %s" % (info['season'], info['episode'], title)
|
||||
|
||||
return video_id, title, title_long, description, timestamp, duration, formats
|
||||
|
Loading…
x
Reference in New Issue
Block a user