예제 #1
0
def update_library():
    import mediapoisk.container as container
    from plugin import plugin
    from mediapoisk.common import lang, batch, abort_requested
    from xbmcswift2 import xbmcgui
    from contextlib import closing

    log = logging.getLogger(__name__)
    library_manager = container.library_manager()
    scraper = container.scraper()
    media_ids = library_manager.stored_media_ids()
    if media_ids:
        log.info("Starting MediaPoisk.info library update...")
        progress = xbmcgui.DialogProgressBG()
        with closing(progress):
            progress.create(lang(30000), lang(40322))
            processed = 0
            for section, media_ids in media_ids.iteritems():
                for ids in batch(media_ids):
                    all_details = scraper.get_details_bulk(section, ids)
                    all_folders = scraper.get_folders_bulk(section, ids)
                    for media_id, details in all_details.items():
                        if media_id in all_folders:
                            for folder in all_folders[media_id]:
                                if library_manager.has_folder(folder.id):
                                    library_manager.update_folder(details, folder)
                    processed += len(ids)
                    progress.update(processed*100/len(media_ids))
                    if abort_requested():
                        break
        log.info("MediaPoisk.ru library update finished.")
    if plugin.get_setting('update-xbmc-library', bool):
        log.info("Starting XBMC library update...")
        plugin.update_library('video', library_manager.path)
예제 #2
0
def library_context_menu(section, media_id, folder_id):
    library_manager = container.library_manager()
    if library_manager.has_folder(folder_id):
        return [(lang(40321), actions.background(plugin.url_for('remove_from_library',
                                                                folder_id=folder_id)))]
    else:
        return [(lang(40320), actions.background(plugin.url_for('add_to_library',
                                                                section=section.filter_val,
                                                                media_id=media_id,
                                                                folder_id=folder_id)))]
예제 #3
0
def add_to_library(section, media_id, folder_id):
    scraper = container.scraper()
    section = Section.find(section)
    details = scraper.get_details_cached(section, media_id)
    folder = scraper.get_folder_cached(section, media_id, folder_id)
    library_manager = container.library_manager()
    library_manager.update_folder(details, folder)
    plugin.refresh()
    if plugin.get_setting('update-xbmc-library', bool):
        plugin.update_library('video', library_manager.path)
예제 #4
0
def index():
    items = [
        {"label": lang(34002), "path": plugin.url_for("global_bookmarks")},
        {"label": lang(34011), "path": plugin.url_for("global_history")},
    ]
    library_manager = container.library_manager()
    if library_manager.has_folders():
        items.append({"label": lang(34012), "path": plugin.url_for("library_items")})
    items.extend(
        {"label": tf.decorate(s.localized, bold=True, color="white"), "path": plugin.url_for("explore", section=s.name)}
        for s in Section
    )
    return with_fanart(items)
예제 #5
0
def library_items():
    scraper = container.scraper()
    library_manager = container.library_manager()
    for section, media_ids in library_manager.stored_media_ids().items():
        for ids in batch(media_ids):
            if abort_requested():
                break
            all_folders = scraper.get_folders_bulk(section, ids)
            all_details = scraper.get_details_bulk(section, ids)
            items = [
                itemify_library_folder(all_details[media_id], f)
                for media_id, folders in all_folders.iteritems()
                for f in folders
                if library_manager.has_folder(f.id)
            ]
            plugin.add_items(items)
    plugin.finish(sort_methods=["title"], cache_to_disc=False)
예제 #6
0
def remove_from_library(folder_id):
    container.library_manager().remove_folder(folder_id)
    plugin.refresh()
    if plugin.get_setting('clean-xbmc-library', bool):
        plugin.clean_library('video', False)