def _export_folder(self, driveid, item_driveid=None, item_id=None): if self._home_window.getProperty(self._addonid + 'exporting'): self._dialog.ok( self._addon_name, self._common_addon.getLocalizedString(32059) + ' ' + self._common_addon.getLocalizedString(32038)) else: string_id = 32002 if self._content_type == 'audio' else 32001 string_config = 'music_library_folder' if self._content_type == 'audio' else 'video_library_folder' export_folder = self._addon.getSetting(string_config) if not export_folder or not xbmcvfs.exists(export_folder): export_folder = self._dialog.browse( 0, self._common_addon.getLocalizedString(string_id), 'files', '', False, False, '') if xbmcvfs.exists(export_folder): self._export_progress_dialog_bg.create( self._addon_name + ' ' + self._common_addon.getLocalizedString(32024), self._common_addon.getLocalizedString(32025)) self._export_progress_dialog_bg.update(0) self._addon.setSetting(string_config, export_folder) item = self.get_item(driveid, item_driveid, item_id) if self.cancel_operation(): return if self._child_count_supported: self._exporting_target = int(item['folder']['child_count']) self._exporting_target += 1 folder_name = Utils.ascii(item['name']) folder_path = export_folder + folder_name + '/' if self._addon.getSetting( 'clean_folder') != 'true' or not xbmcvfs.exists( folder_path) or xbmcvfs.rmdir(folder_path, True): self._exporting = True self._home_window.setProperty(self._addonid + 'exporting', 'true') self.__export_folder(driveid, item, export_folder) else: self._dialog.ok( self._addon_name, self._common_addon.getLocalizedString(32066) % folder_path) self._export_progress_dialog_bg.close() else: self._dialog.ok( self._addon_name, export_folder + ' ' + self._common_addon.getLocalizedString(32026))
def __export_folder(self, driveid, folder, export_folder): folder_name = Utils.ascii(folder['name']) folder_path = os.path.join(os.path.join(export_folder, folder_name), '') if not xbmcvfs.exists(folder_path): try: xbmcvfs.mkdirs(folder_path) except: if self._system_monitor.waitForAbort(3): return xbmcvfs.mkdirs(folder_path) items = self.get_folder_items( driveid, Utils.default(Utils.get_safe_value(folder, 'drive_id'), driveid), folder['id']) if self.cancel_operation(): return for item in items: if 'folder' in item: if self._child_count_supported: self._exporting_target += int( item['folder']['child_count']) else: self._exporting_target += 1 string_config = 'music_library_folder' if self._content_type == 'audio' else 'video_library_folder' base_export_folder = self._addon.getSetting(string_config) for item in items: is_folder = 'folder' in item item_name = Utils.ascii(item['name']) item_name_extension = item['name_extension'] file_path = os.path.join(folder_path, item_name) if is_folder: self.__export_folder(driveid, item, folder_path) elif (('video' in item or item_name_extension in self._video_file_extensions) and self._content_type == 'video') or ( 'audio' in item and self._content_type == 'audio'): item_id = Utils.ascii(item['id']) item_drive_id = Utils.default( Utils.get_safe_value(item, 'drive_id'), driveid) params = { 'action': 'play', 'content_type': self._content_type, 'item_driveid': item_drive_id, 'item_id': item_id, 'driveid': driveid } url = self._addon_url + '?' + urllib.urlencode(params) file_path += '.strm' f = xbmcvfs.File(file_path, 'w') f.write(url) f.close() self._exporting_count += 1 p = int(self._exporting_count / float(self._exporting_target) * 100) if self._exporting_percent < p: self._exporting_percent = p self._export_progress_dialog_bg.update( self._exporting_percent, self._addon_name + ' ' + self._common_addon.getLocalizedString(32024), file_path[len(base_export_folder):])