Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
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
Example #9
0
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
Example #10
0
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
Example #11
0
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
Example #12
0
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