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)
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)))]
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)
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)
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)
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)