seperate code in seperate function

--> easier to read and unterstand
This commit is contained in:
AndroKev 2015-10-18 21:52:46 +02:00
parent 60180f7e6f
commit 46862bd0f9

View File

@ -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