def delete_all(_item): for file in filetools.listdir(_item.path): if file.endswith(".strm") or file.endswith(".nfo") or file.endswith(".json")or file.endswith(".torrent"): filetools.remove(filetools.join(_item.path, file)) if _item.contentType == 'movie': heading = config.get_localized_string(70084) else: heading = config.get_localized_string(70085) if config.is_xbmc() and config.get_setting("videolibrary_kodi"): from platformcode import xbmc_videolibrary if _item.local_episodes_path: platformtools.dialog_ok(heading, config.get_localized_string(80047) % _item.infoLabels['title']) path_list = [_item.extra] xbmc_videolibrary.clean(path_list) raiz, carpeta_serie, ficheros = next(filetools.walk(_item.path)) if ficheros == []: filetools.rmdir(_item.path) elif platformtools.dialog_yesno(heading, config.get_localized_string(70081) % filetools.basename(_item.path)): filetools.rmdirtree(_item.path) logger.info("All links removed") xbmc.sleep(1000) platformtools.itemlist_refresh()
def onSettingsChanged(self): logger.debug('settings changed') settings_post = config.get_all_settings_addon() from platformcode import xbmc_videolibrary if self.settings_pre.get('downloadpath', None) != settings_post.get( 'downloadpath', None): xbmc_videolibrary.update_sources( settings_post.get('downloadpath', None), self.settings_pre.get('downloadpath', None)) # si se ha cambiado la ruta de la videoteca llamamos a comprobar directorios para que lo cree y pregunte # automaticamente si configurar la videoteca if self.settings_pre.get("videolibrarypath", None) != settings_post.get("videolibrarypath", None) or \ self.settings_pre.get("folder_movies", None) != settings_post.get("folder_movies", None) or \ self.settings_pre.get("folder_tvshows", None) != settings_post.get("folder_tvshows", None): videolibrary.move_videolibrary( self.settings_pre.get("videolibrarypath", None), settings_post.get("videolibrarypath", None), self.settings_pre.get("folder_movies", None), settings_post.get("folder_movies", None), self.settings_pre.get("folder_tvshows", None), settings_post.get("folder_tvshows", None)) # si se ha puesto que se quiere autoconfigurar y se había creado el directorio de la videoteca if not self.settings_pre.get("videolibrary_kodi", None) and settings_post.get( "videolibrary_kodi", None): xbmc_videolibrary.ask_set_content(silent=True) elif self.settings_pre.get( "videolibrary_kodi", None) and not settings_post.get("videolibrary_kodi", None): xbmc_videolibrary.clean() if self.settings_pre.get('addon_update_timer') != settings_post.get( 'addon_update_timer'): schedule.clear('updater') self.scheduleUpdater() if self.update_setting != config.get_setting( "update", "videolibrary") or self.update_hour != config.get_setting( "everyday_delay", "videolibrary") * 4: schedule.clear('videolibrary') self.scheduleVideolibrary() if self.settings_pre.get('elementum_on_seed') != settings_post.get( 'elementum_on_seed') and settings_post.get( 'elementum_on_seed'): if not platformtools.dialog_yesno( config.get_localized_string(70805), config.get_localized_string(70806)): config.set_setting('elementum_on_seed', False) self.settings_pre = settings_post
def import_videolibrary(item): logger.info() zip_file = platformtools.dialog_browse(1, config.get_localized_string(80005)) if zip_file == "": return if not platformtools.dialog_yesno(config.get_localized_string(20000), config.get_localized_string(80006)): return p_dialog = platformtools.dialog_progress_bg( config.get_localized_string(20000), config.get_localized_string(80007)) p_dialog.update(0) if filetools.exists(temp_path): filetools.rmdirtree(temp_path) filetools.mkdir(temp_path) unzipper = ziptools.ziptools() unzipper.extract(zip_file, temp_path) p_dialog.update(25) filetools.rmdirtree(videolibrarytools.VIDEOLIBRARY_PATH) p_dialog.update(50) if config.is_xbmc() and config.get_setting("videolibrary_kodi"): xbmc.sleep(5000) xbmc_videolibrary.clean() config.verify_directories_created() if filetools.exists(movies_path): copy_tree(movies_path, videolibrarytools.MOVIES_PATH) p_dialog.update(70) if filetools.exists(tvshows_path): copy_tree(tvshows_path, videolibrarytools.TVSHOWS_PATH) p_dialog.update(90) filetools.rmdirtree(temp_path) p_dialog.update(100) xbmc.sleep(2000) p_dialog.close() platformtools.dialog_ok(config.get_localized_string(20000), config.get_localized_string(80008)) if platformtools.dialog_yesno(config.get_localized_string(20000), config.get_localized_string(80009)): import service service.check_for_update(overwrite=True) if config.is_xbmc() and config.get_setting("videolibrary_kodi"): xbmc_videolibrary.update()
def import_videolibrary(item): logger.info() zip_file = unicode( platformtools.dialog_browse(1, config.get_localized_string(80005), mask=".zip")) if zip_file == "": return if not platformtools.dialog_yesno(config.get_localized_string(20000), config.get_localized_string(80006)): return p_dialog = platformtools.dialog_progress_bg( config.get_localized_string(20000), config.get_localized_string(80007)) # p_dialog.update(0) if filetools.exists(temp_path): shutil.rmtree(temp_path) filetools.mkdir(videolibrary_temp_path) unzip(videolibrary_temp_path, zip_file) p_dialog.update(20) if config.is_xbmc() and config.get_setting("videolibrary_kodi"): xbmc_videolibrary.clean() p_dialog.update(30) shutil.rmtree(videolibrary_movies_path) shutil.rmtree(videolibrary_tvshows_path) p_dialog.update(50) config.verify_directories_created() if filetools.exists(movies_path): copy_tree(movies_path, videolibrary_movies_path) p_dialog.update(70) if filetools.exists(tvshows_path): copy_tree(tvshows_path, videolibrary_tvshows_path) p_dialog.update(90) shutil.rmtree(temp_path) p_dialog.update(100) xbmc.sleep(1000) p_dialog.close() platformtools.dialog_notification(config.get_localized_string(20000), config.get_localized_string(80008), time=5000, sound=False) videolibrary.update_videolibrary() if config.is_xbmc() and config.get_setting("videolibrary_kodi"): xbmc_videolibrary.update()
def delete_all(_item): filetools.rmdirtree(_item.path) if config.is_xbmc(): import xbmc # esperamos 3 segundos para dar tiempo a borrar los ficheros xbmc.sleep(3000) # TODO mirar por qué no funciona al limpiar en la videoteca de Kodi al añadirle un path # limpiamos la videoteca de Kodi from platformcode import xbmc_videolibrary xbmc_videolibrary.clean() logger.info("Eliminados todos los enlaces") platformtools.itemlist_refresh()
def import_videolibrary(item): logger.info() zip_file = platformtools.dialog_browse(1, config.get_localized_string(80005)) if zip_file == "": return if not platformtools.dialog_yesno(config.get_localized_string(20000), config.get_localized_string(80006)): return p_dialog = platformtools.dialog_progress_bg(config.get_localized_string(20000), config.get_localized_string(80007)) p_dialog.update(0) if filetools.exists(temp_path): filetools.rmdirtree(temp_path) filetools.mkdir(temp_path) unzipper = ziptools.ziptools() unzipper.extract(zip_file, temp_path) p_dialog.update(20) if config.is_xbmc() and config.get_setting("videolibrary_kodi"): xbmc_videolibrary.clean() p_dialog.update(30) filetools.rmdirtree(videolibrarytools.MOVIES_PATH) filetools.rmdirtree(videolibrarytools.TVSHOWS_PATH) p_dialog.update(50) config.verify_directories_created() if filetools.exists(movies_path): copy_tree(movies_path, videolibrarytools.MOVIES_PATH) p_dialog.update(70) if filetools.exists(tvshows_path): copy_tree(tvshows_path, videolibrarytools.TVSHOWS_PATH) p_dialog.update(90) filetools.rmdirtree(temp_path) p_dialog.update(100) xbmc.sleep(1000) p_dialog.close() platformtools.dialog_notification(config.get_localized_string(20000), config.get_localized_string(80008), time=5000, sound=False) videolibrary.update_videolibrary() if config.is_xbmc() and config.get_setting("videolibrary_kodi"): xbmc_videolibrary.update()
def delete_all(_item): for file in filetools.listdir(_item.path): if file.endswith(".strm") or file.endswith(".nfo") or file.endswith(".json")or file.endswith(".torrent"): filetools.remove(filetools.join(_item.path, file)) raiz, carpeta_serie, ficheros = filetools.walk(_item.path).next() if ficheros == []: filetools.rmdir(_item.path) if config.is_xbmc(): import xbmc # esperamos 3 segundos para dar tiempo a borrar los ficheros xbmc.sleep(3000) # TODO mirar por qué no funciona al limpiar en la videoteca de Kodi al añadirle un path # limpiamos la videoteca de Kodi from platformcode import xbmc_videolibrary xbmc_videolibrary.clean() logger.info("Eliminados todos los enlaces") platformtools.itemlist_refresh()
def delete_videolibrary(item): logger.info() if not platformtools.dialog_yesno(config.get_localized_string(20000), config.get_localized_string(80037)): return p_dialog = platformtools.dialog_progress_bg(config.get_localized_string(20000), config.get_localized_string(80038)) p_dialog.update(0) if config.is_xbmc() and config.get_setting("videolibrary_kodi"): from platformcode import xbmc_videolibrary xbmc_videolibrary.clean() p_dialog.update(10) filetools.rmdirtree(videolibrarytools.MOVIES_PATH) p_dialog.update(50) filetools.rmdirtree(videolibrarytools.TVSHOWS_PATH) p_dialog.update(90) config.verify_directories_created() p_dialog.update(100) xbmc.sleep(1000) p_dialog.close() platformtools.dialog_notification(config.get_localized_string(20000), config.get_localized_string(80039), time=5000, sound=False)
def delete(item): def delete_all(_item): for file in filetools.listdir(_item.path): if file.endswith(".strm") or file.endswith(".nfo") or file.endswith(".json")or file.endswith(".torrent"): filetools.remove(filetools.join(_item.path, file)) if _item.contentType == 'movie': heading = config.get_localized_string(70084) else: heading = config.get_localized_string(70085) if config.is_xbmc() and config.get_setting("videolibrary_kodi"): from platformcode import xbmc_videolibrary if _item.local_episodes_path: platformtools.dialog_ok(heading, config.get_localized_string(80047) % _item.infoLabels['title']) path_list = [_item.extra] xbmc_videolibrary.clean(path_list) raiz, carpeta_serie, ficheros = next(filetools.walk(_item.path)) if ficheros == []: filetools.rmdir(_item.path) elif platformtools.dialog_yesno(heading, config.get_localized_string(70081) % filetools.basename(_item.path)): filetools.rmdirtree(_item.path) logger.info("All links removed") xbmc.sleep(1000) platformtools.itemlist_refresh() # logger.debug(item.tostring('\n')) if item.contentType == 'movie': heading = config.get_localized_string(70084) else: heading = config.get_localized_string(70085) if item.multichannel: # Get channel list if item.dead == '': opciones = [] channels = [] for k in list(item.library_urls.keys()): if k != "downloads": opciones.append(config.get_localized_string(70086) % k.capitalize()) channels.append(k) opciones.insert(0, heading) index = platformtools.dialog_select(config.get_localized_string(30163), opciones) if index == 0: # Selected Delete movie / series delete_all(item) return elif index > 0: # Selected Delete channel X canal = opciones[index].replace(config.get_localized_string(70079), "").lower() channels.remove(canal) else: return else: canal = item.dead num_enlaces = 0 path_list = [] for fd in filetools.listdir(item.path): if fd.endswith(canal + '].json') or scrapertools.find_single_match(fd, r'%s]_\d+.torrent' % canal): if filetools.remove(filetools.join(item.path, fd)): num_enlaces += 1 # Remove strm and nfo if no other channel episode = fd.replace(' [' + canal + '].json', '') found_ch = False for ch in channels: if filetools.exists(filetools.join(item.path, episode + ' [' + ch + '].json')): found_ch = True break if found_ch == False: filetools.remove(filetools.join(item.path, episode + '.nfo')) strm_path = filetools.join(item.path, episode + '.strm') # if it is a local episode, do not delete the strm if 'plugin://plugin.video.kod/?' in filetools.read(strm_path): filetools.remove(strm_path) path_list.append(filetools.join(item.extra, episode + '.strm')) if config.is_xbmc() and config.get_setting("videolibrary_kodi") and path_list: from platformcode import xbmc_videolibrary xbmc_videolibrary.clean(path_list) if num_enlaces > 0: # Update .nfo head_nfo, item_nfo = videolibrarytools.read_nfo(item.nfo) del item_nfo.library_urls[canal] if item_nfo.emergency_urls and item_nfo.emergency_urls.get(canal, False): del item_nfo.emergency_urls[canal] filetools.write(item.nfo, head_nfo + item_nfo.tojson()) msg_txt = config.get_localized_string(70087) % (num_enlaces, canal) logger.info(msg_txt) platformtools.dialog_notification(heading, msg_txt) platformtools.itemlist_refresh() else: if platformtools.dialog_yesno(heading, config.get_localized_string(70088) % item.infoLabels['title']): delete_all(item)
def onSettingsChanged(self): logger.debug('settings changed') settings_post = config.get_all_settings_addon() if settings_post: # backup settings filetools.copy( os.path.join(config.get_data_path(), "settings.xml"), os.path.join(config.get_data_path(), "settings.bak"), True) logger.debug({ k: self.settings_pre[k] for k in self.settings_pre if k in settings_post and self.settings_pre[k] != settings_post[k] }) from platformcode import xbmc_videolibrary if self.settings_pre.get('downloadpath', None) != settings_post.get( 'downloadpath', None): xbmc_videolibrary.update_sources( settings_post.get('downloadpath', None), self.settings_pre.get('downloadpath', None)) # If the path of the video library has been changed, we call to check directories so that it creates it and automatically asks if to configure the video library if self.settings_pre.get("videolibrarypath", None) and self.settings_pre.get("videolibrarypath", None) != settings_post.get("videolibrarypath", None) or \ self.settings_pre.get("folder_movies", None) and self.settings_pre.get("folder_movies", None) != settings_post.get("folder_movies", None) or \ self.settings_pre.get("folder_tvshows", None) and self.settings_pre.get("folder_tvshows", None) != settings_post.get("folder_tvshows", None): videolibrary.move_videolibrary( self.settings_pre.get("videolibrarypath", ''), settings_post.get("videolibrarypath", ''), self.settings_pre.get("folder_movies", ''), settings_post.get("folder_movies", ''), self.settings_pre.get("folder_tvshows", ''), settings_post.get("folder_tvshows", '')) # if you want to autoconfigure and the video library directory had been created if not self.settings_pre.get("videolibrary_kodi", None) and settings_post.get( "videolibrary_kodi", None): xbmc_videolibrary.ask_set_content(silent=True) elif self.settings_pre.get( "videolibrary_kodi", None) and not settings_post.get("videolibrary_kodi", None): xbmc_videolibrary.clean() if self.settings_pre.get('addon_update_timer') != settings_post.get( 'addon_update_timer'): schedule.clear('updater') self.scheduleUpdater() if self.update_setting != config.get_setting( "update", "videolibrary") or self.update_hour != config.get_setting( "everyday_delay", "videolibrary") * 4: schedule.clear('videolibrary') self.scheduleVideolibrary() if self.settings_pre.get('elementum_on_seed') != settings_post.get( 'elementum_on_seed') and settings_post.get( 'elementum_on_seed'): if not platformtools.dialog_yesno( config.get_localized_string(70805), config.get_localized_string(70806)): config.set_setting('elementum_on_seed', False) self.settings_pre = settings_post
def move_to_libray(item): if item.contentType == 'movie': FOLDER = FOLDER_MOVIES path_title = "%s [%s]" % (item.contentTitle.strip(), item.infoLabels['IMDBNumber']) move_path = filetools.join(config.get_videolibrary_path(), FOLDER, path_title) else: FOLDER = FOLDER_TVSHOWS path_title = "%s [%s]" % (item.contentSerieName, item.infoLabels['IMDBNumber']) move_path = filetools.join(config.get_videolibrary_path(), FOLDER) download_path = filetools.join(config.get_setting("downloadpath"), item.downloadFilename) library_path = filetools.join(move_path, *filetools.split(item.downloadFilename)) final_path = download_path if config.get_setting("library_add", "downloads") == True and config.get_setting( "library_move", "downloads") == True: if not filetools.isdir(filetools.dirname(library_path)): filetools.mkdir(filetools.dirname(library_path)) if filetools.isfile(library_path) and filetools.isfile(download_path): filetools.remove(library_path) if filetools.isfile(download_path): if filetools.move(download_path, library_path): final_path = library_path if len(filetools.listdir(filetools.dirname(download_path))) == 0: filetools.rmdir(filetools.dirname(download_path)) logger.info('ITEM = ' + str(item)) name = item.contentTitle if item.contentType == 'movie' else str( item.infoLabels['season']) + 'x' + str( item.infoLabels['episode']).zfill(2) list_item = os.listdir( filetools.join(config.get_videolibrary_path(), FOLDER, path_title)) clean = False for File in list_item: filename = File.lower() name = name.lower() if filename.startswith(name) and (filename.endswith('.strm') or filename.endswith('.json') or filename.endswith('.nfo')): clean = True logger.info('Delete File: ' + str( os.path.join(config.get_videolibrary_path(), FOLDER, path_title, File))) os.remove( os.path.join(config.get_videolibrary_path(), FOLDER, path_title, File)) from platformcode import xbmc_videolibrary xbmc_videolibrary.update(FOLDER) if clean == True: import xbmc while xbmc.getCondVisibility('Library.IsScanningVideo()'): xbmc.sleep(500) xbmc_videolibrary.clean() if config.get_setting("library_add", "downloads") == True and config.get_setting( "library_move", "downloads") == False: if filetools.isfile(final_path): if item.contentType == "movie" and item.infoLabels["tmdb_id"]: library_item = Item(title=config.get_localized_string(70228) % item.downloadFilename, channel="downloads", action="findvideos", infoLabels=item.infoLabels, url=final_path) videolibrarytools.save_movie(library_item) elif item.contentType == "episode" and item.infoLabels["tmdb_id"]: library_item = Item(title=config.get_localized_string(70228) % item.downloadFilename, channel="downloads", action="findvideos", infoLabels=item.infoLabels, url=final_path) tvshow = Item( channel="downloads", contentType="tvshow", infoLabels={"tmdb_id": item.infoLabels["tmdb_id"]}) videolibrarytools.save_tvshow(tvshow, [library_item])