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