def get_library_subfolders(folder_name):
    """Returns all the subfolders contained in a folder of library path"""
    section_path = common.join_folders_paths(get_library_path(), folder_name)
    return [
        common.join_folders_paths(section_path, G.py2_decode(folder))
        for folder in common.list_dir(section_path)[0]
    ]
def get_library_subfolders(folder_name, custom_lib_path=None):
    """Returns all the subfolders contained in a folder of library path"""
    section_path = common.join_folders_paths(
        custom_lib_path or get_library_path(), folder_name)
    return [
        common.join_folders_paths(section_path, folder)
        for folder in common.list_dir(section_path)[0]
    ]
    def remove_item(self, job_data, library_home=None):  # pylint: disable=unused-argument
        """Remove an item from the Kodi library, delete it from disk, remove add-on database references"""
        videoid = job_data['videoid']
        LOG.debug('Removing {} ({}) from add-on library', videoid,
                  job_data['title'])
        try:
            # Remove the STRM file exported
            exported_file_path = G.py2_decode(
                xbmc.translatePath(job_data['file_path']))
            common.delete_file_safe(exported_file_path)

            parent_folder = G.py2_decode(
                xbmc.translatePath(os.path.dirname(exported_file_path)))

            # Remove the NFO file of the related STRM file
            nfo_file = os.path.splitext(exported_file_path)[0] + '.nfo'
            common.delete_file_safe(nfo_file)

            dirs, files = common.list_dir(parent_folder)

            # Remove the tvshow NFO file (only when it is the last file in the folder)
            tvshow_nfo_file = common.join_folders_paths(
                parent_folder, 'tvshow.nfo')

            # (users have the option of removing even single seasons)
            if xbmcvfs.exists(tvshow_nfo_file) and not dirs and len(
                    files) == 1:
                xbmcvfs.delete(tvshow_nfo_file)
                # Delete parent folder
                xbmcvfs.rmdir(parent_folder)

            # Delete parent folder when empty
            if not dirs and not files:
                xbmcvfs.rmdir(parent_folder)

            # Remove videoid records from add-on database
            remove_videoid_from_db(videoid)
        except ItemNotFound:
            LOG.warn(
                'The videoid {} not exists in the add-on library database',
                videoid)
        except Exception as exc:  # pylint: disable=broad-except
            import traceback
            LOG.error(G.py2_decode(traceback.format_exc(), 'latin-1'))
            ui.show_addon_error_info(exc)
 def import_videoid_from_existing_strm(self, folder_path, folder_name):
     """
     Get a VideoId from an existing STRM file that was exported
     """
     for filename in common.list_dir(folder_path)[1]:
         filename = G.py2_decode(filename)
         if not filename.endswith('.strm'):
             continue
         file_path = common.join_folders_paths(folder_path, filename)
         # Only get a VideoId from the first file in each folder.
         # For tv shows all episodes will result in the same VideoId, the movies only contain one file.
         file_content = common.load_file(file_path)
         if not file_content:
             common.warn('Import error: folder "{}" skipped, STRM file empty or corrupted', folder_name)
             return None
         if 'action=play_video' in file_content:
             common.debug('Trying to import (v0.13.x): {}', file_path)
             return self._import_videoid_old(file_content, folder_name)
         common.debug('Trying to import: {}', file_path)
         return self._import_videoid(file_content, folder_name)