def HandleSeason(operation=None, container=False, **params): oc = ObjectContainer(title1=unicode(params['name'])) media_info = MediaInfo(**params) service.queue.handle_bookmark_operation(operation, media_info) response = service.get_season(params['id']) for item in response: episode_name = service.simplify_name(item['name']) episode_number = episode_name[len("Episode"):].strip() new_params = { 'type': 'episode', 'id': item['path'], 'serieName': params['serieName'], 'name': episode_name, 'thumb': params['thumb'], 'season': params['season'], 'episodeNumber': episode_number } oc.add(DirectoryObject( key=Callback(HandleEpisode, **new_params), title=episode_name )) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleSeason, media_info) return oc
def HandleSeason(operation=None, container=False, **params): oc = ObjectContainer(title1=unicode(params['name'])) media_info = MediaInfo(**params) service.queue.handle_bookmark_operation(operation, media_info) response = service.get_season(params['id']) for item in response: episode_name = service.simplify_name(item['name']) episode_number = episode_name[len("Episode"):].strip() new_params = { 'type': 'episode', 'id': item['path'], 'serieName': params['serieName'], 'name': episode_name, 'thumb': params['thumb'], 'season': params['season'], 'episodeNumber': episode_number } oc.add( DirectoryObject(key=Callback(HandleEpisode, **new_params), title=episode_name)) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleSeason, media_info) return oc
def HandleEpisode(operation=None, container=False, **params): oc = ObjectContainer(title2=unicode(L(params['name'])), user_agent='Plex') media_info = MediaInfo(**params) if 'season' in media_info: season = media_info['season'] else: season = None if 'episode' in media_info: episode = media_info['episode'] else: episode = None if season and int(season) > 0 and episode: urls = json.loads(urllib.unquote_plus(media_info['id'])) else: urls = service.get_urls(path=media_info['id']) if len(urls) == 0: return plex_util.no_contents() else: service.queue.handle_bookmark_operation(operation, media_info) metadata_object = FlowBuilder.build_metadata_object( media_type=media_info['type'], title=media_info['name']) metadata_object.key = Callback(HandleEpisode, container=True, **media_info) metadata_object.rating_key = unicode(media_info['name']) metadata_object.thumb = media_info['thumb'] metadata_object.title = media_info['name'] for url in urls: metadata = service.get_metadata(url) if 'height' in metadata: metadata["video_resolution"] = metadata['height'] media_object = FlowBuilder.build_media_object( Callback(common_routes.PlayAudio, url=url), metadata) metadata_object.items.append(media_object) oc.add(metadata_object) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleEpisode, media_info) return oc
def HandleMovie(operation=None, container=False, **params): oc = ObjectContainer(title1=unicode(params['name'])) media_info = MediaInfo(**params) service.queue.handle_bookmark_operation(operation, media_info) response = service.get_movie(params['id']) if response['thumb']: thumb = response['thumb'] else: thumb = params['thumb'] name = response['name'] urls = response['urls'] urls_length = len(urls) for index, url in enumerate(urls): if urls_length > 1: url_name = str(index+1) + "-" + name else: url_name = name oc.add(VideoClipObject( url=url, thumb=plex_util.get_thumb(thumb), title=unicode(L(url_name)) )) #oc.add(MetadataObjectForURL2(media_info=media_info, url_items=url_items, handler=HandleMovie, player=PlayVideo)) # if 'trailer_url' in response: # oc.add(VideoClipObject( # url=response['trailer_url'], # thumb=plex_util.get_thumb(thumb), # title=unicode(L("Watch Trailer")) # )) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleMovie, media_info) return oc
def HandleMovie(operation=None, container=False, **params): oc = ObjectContainer(title1=unicode(params['name'])) media_info = MediaInfo(**params) service.queue.handle_bookmark_operation(operation, media_info) response = service.get_movie(params['id']) if response['thumb']: thumb = response['thumb'] else: thumb = params['thumb'] name = response['name'] urls = response['urls'] urls_length = len(urls) for index, url in enumerate(urls): if urls_length > 1: url_name = str(index + 1) + "-" + name else: url_name = name oc.add( VideoClipObject(url=url, thumb=plex_util.get_thumb(thumb), title=unicode(L(url_name)))) #oc.add(MetadataObjectForURL2(media_info=media_info, url_items=url_items, handler=HandleMovie, player=PlayVideo)) # if 'trailer_url' in response: # oc.add(VideoClipObject( # url=response['trailer_url'], # thumb=plex_util.get_thumb(thumb), # title=unicode(L("Watch Trailer")) # )) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleMovie, media_info) return oc
def HandleSeason(operation=None, container=False, **params): oc = ObjectContainer(title2=unicode(params['name'])) media_info = MediaInfo(**params) service.queue.handle_bookmark_operation(operation, media_info) if not params['episodes']: playlist_url = service.get_serie_playlist_url(params['id']) serie_info = service.get_serie_info(playlist_url) list = serie_info[int(params['season']) - 1]['playlist'] else: list = json.loads(params['episodes']) for index, episode in enumerate(list): episode_name = episode['comment'].replace('<br>', ' ') thumb = params['thumb'] url = episode['file'] new_params = { 'type': 'episode', 'id': json.dumps(url), 'name': episode_name, 'serieName': params['serieName'], 'thumb': thumb, 'season': params['season'], 'episode': episode, 'episodeNumber': index + 1 } key = Callback(HandleEpisode, container=container, **new_params) oc.add( DirectoryObject(key=key, title=unicode(episode_name), thumb=plex_util.get_thumb(thumb))) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleSeason, media_info) return oc
def HandleTracks(operation=None, container=False, **params): media_info = MediaInfo(**params) service.queue.handle_bookmark_operation(operation, media_info) oc = ObjectContainer(title2=unicode(L(params['name']))) response = service.get_audio_tracks(params['id']) for index, item in enumerate(response): #name = "Part " + str(index+1) name = str(item['title']) path = str(item['mp3']) format = 'mp3' bitrate = 0 #duration = item['duration'] # duration = 30 * 60 * 1000 thumb = str(params['thumb']) artist = params['name'] new_params = { 'type': 'track', 'id': path, 'name': name, 'thumb': thumb, 'artist': artist, 'format': format, 'bitrate': bitrate } oc.add(HandleTrack(**new_params)) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleTracks, media_info) return oc
def HandleSoundtrack(operation=None, container=False, **params): oc = ObjectContainer(title2=unicode(params['name'])) media_info = MediaInfo(**params) service.queue.handle_bookmark_operation(operation, media_info) albums = service.get_albums(params['id']) albums_count = len(albums) for index, album in enumerate(albums): prefix = str(index + 1) + ". " if albums_count > 1 else "" album_name = prefix + album['name'] thumb = album['thumb'] artist = album['composer'] tracks = album['tracks'] new_params = { 'type': 'tracks', 'name': album_name, 'artist': artist, 'tracks': json.dumps(tracks) } oc.add(DirectoryObject( key=Callback(HandleTracks, **new_params), title=plex_util.sanitize(album_name), thumb=plex_util.get_thumb(thumb) )) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleSoundtrack, media_info) return oc
def HandleTracks(operation=None, container=False, **params): media_info = MediaInfo(**params) service.queue.handle_bookmark_operation(operation, media_info) oc = ObjectContainer(title2=unicode(L(params['name']))) response = service.get_audio_tracks(params['playlist_url']) for item in response: name = item['title'] duration = service.convert_track_duration(item['duration']) sources = item['sources'] thumb = service.URL + item['image'] path = "https://archive.org" + sources[0]['file'] format = 'mp3' bitrate = 0 new_params = { 'type': 'track', 'id': path, 'name': name, 'thumb': thumb, 'artist': params['artist'], 'format': format, 'bitrate': bitrate, 'duration': duration } oc.add(HandleTrack(**new_params)) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleTracks, media_info) return oc
def HandleMovie(operation=None, container=False, **params): # urls = service.load_cache(path) # # if not urls: # urls = service.retrieve_urls(path, season=season, episode=episode) # # service.save_cache(urls) if 'season' in params: season = params['season'] else: season = None if 'episode' in params: episode = params['episode'] else: episode = None urls = service.retrieve_urls(params['id'], season=season, episode=episode) if not urls: return plex_util.no_contents() else: oc = ObjectContainer(title2=unicode(params['name'])) media_info = MediaInfo(**params) service.queue.handle_bookmark_operation(operation, media_info) document = service.fetch_document(params['id']) data = service.get_media_data(document) if episode: media_info['type'] = 'episode' media_info['index'] = int(episode) media_info['season'] = int(season) media_info['content_rating'] = data['rating'] # show=show, else: media_info['type'] = 'movie' media_info['year'] = data['year'] media_info['genres'] = data['genres'] media_info['countries'] = data['countries'] media_info['genres'] = data['genres'] # video.tagline = 'tagline' # video.original_title = 'original_title' url_items = [] for url in urls: url_items.append( { "url": url['url'], "config": { # "container": audio_container, # "audio_codec": audio_codec, "video_resolution": url['height'], "width": url['width'], "height": url['height'], "bitrate": url['bandwidth'], # "duration": duration } }) media_info['rating_key'] = service.get_episode_url(params['id'], season, 0) media_info['rating'] = data['rating'] media_info['tags'] = data['tags'] media_info['summary'] = data['summary'] media_info['thumb'] = data['thumb'] # media_info['art'] = data['thumb'] # media_info['season'] = season # media_info['episode'] = episode oc.add(MetadataObjectForURL(media_info, url_items=url_items, player=PlayVideo)) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleMovie, media_info) return oc
def HandleMovie(operation=None, container=False, **params): oc = ObjectContainer(title2=unicode(L(params['name']))) media_info = MediaInfo(**params) media_data = service.get_media_data(media_info['id']) if 'season' in media_info: season = media_info['season'] else: season = None if 'episode' in media_info: episode = media_info['episode'] else: episode = None if season and int(season) > 0 and episode: urls = service.get_urls(url=media_info['id']) else: urls = service.get_urls(path=media_info['id']) if len(urls) == 0: return plex_util.no_contents() else: service.queue.handle_bookmark_operation(operation, media_info) metadata_object = FlowBuilder.build_metadata_object(media_type=media_info['type'], title=media_info['name']) metadata_object.key = Callback(HandleMovie, container=True, **media_info) metadata_object.rating_key = unicode(media_info['name']) if 'thumb' in media_info: metadata_object.thumb = media_info['thumb'] if 'name' in media_info: metadata_object.title = media_info['name'] if 'tags' in media_info: metadata_object.tags = media_data['tags'] if 'duration' in media_info: metadata_object.duration = media_data['duration'] if 'description' in media_info: metadata_object.summary = media_data['description'] if 'directors' in media_info: metadata_object.directors = media_data['directors'] for url in urls: metadata = service.get_metadata(url) metadata["video_resolution"] = metadata['height'] media_object = FlowBuilder.build_media_object(Callback(common_routes.PlayVideo, url=url), metadata) metadata_object.items.append(media_object) oc.add(metadata_object) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleMovie, media_info) return oc
def HandleMovie(operation=None, container=False, **params): # urls = service.load_cache(path) # # if not urls: # urls = service.retrieve_urls(path, season=season, episode=episode) # # service.save_cache(urls) if 'season' in params: season = params['season'] else: season = None if 'episode' in params: episode = params['episode'] else: episode = None urls = service.retrieve_urls(params['id'], season=season, episode=episode) if not urls: return plex_util.no_contents() else: oc = ObjectContainer(title2=unicode(params['name'])) media_info = MediaInfo(**params) service.queue.handle_bookmark_operation(operation, media_info) document = service.fetch_document(params['id']) data = service.get_media_data(document) if episode: media_info['type'] = 'episode' media_info['index'] = int(episode) media_info['season'] = int(season) media_info['content_rating'] = data['rating'] # show=show, else: media_info['type'] = 'movie' media_info['year'] = data['year'] media_info['genres'] = data['genres'] media_info['countries'] = data['countries'] media_info['genres'] = data['genres'] # video.tagline = 'tagline' # video.original_title = 'original_title' url_items = [] for url in urls: url_items.append({ "url": url['url'], "config": { # "container": audio_container, # "audio_codec": audio_codec, "video_resolution": url['height'], "width": url['width'], "height": url['height'], "bitrate": url['bandwidth'], # "duration": duration } }) media_info['rating_key'] = service.get_episode_url( params['id'], season, 0) media_info['rating'] = data['rating'] media_info['tags'] = data['tags'] media_info['summary'] = data['summary'] media_info['thumb'] = data['thumb'] # media_info['art'] = data['thumb'] # media_info['season'] = season # media_info['episode'] = episode oc.add( MetadataObjectForURL(media_info, url_items=url_items, player=PlayVideo)) if str(container) == 'False': history.push_to_history(Data, media_info) service.queue.append_bookmark_controls(oc, HandleMovie, media_info) return oc