def get_exact_images(self, mediaitem):
        path, inputfilename = os.path.split(mediaitem.file)
        sep = get_pathsep(path)
        path += sep
        dirs, files = xbmcvfs.listdir(path)
        check_inputbase = os.path.splitext(
            inputfilename)[0] if inputfilename else ''
        result = {}
        if inputfilename:
            dirname = next(
                (name for name in dirs
                 if name in iter_possible_cleannames(check_inputbase)), None)
            if dirname:  # '[centraldir]/[set name]/[arttype].[ext]'
                dirname = path + dirname + sep
                _, dfiles = xbmcvfs.listdir(dirname)
                for filename in dfiles:
                    if not filename.endswith(ARTWORK_EXTS):
                        continue
                    arttype = os.path.splitext(filename)[0]
                    if not arttype.isalnum() or len(
                            arttype) > ARTTYPE_MAXLENGTH:
                        continue
                    if settings.identify_alternatives and arttype in self.alttypes.keys(
                    ):
                        arttype = self.alttypes[arttype]
                        if arttype in result.keys():
                            continue

                    result[arttype] = self.buildimage(dirname + filename,
                                                      filename)

        if not result:
            for filename in files:
                if not filename.endswith(ARTWORK_EXTS):
                    continue
                basefile = os.path.splitext(filename)[0]
                if check_inputbase:  # '[centraldir]/[set name]-[arttype].[ext]'
                    if '-' not in basefile:
                        continue
                    firstbit, arttype = basefile.rsplit('-', 1)
                    if not arttype.isalnum(
                    ) or firstbit not in iter_possible_cleannames(
                            check_inputbase):
                        continue
                else:  # parent of movie directory
                    if not basefile.isalnum() or len(
                            basefile) > ARTTYPE_MAXLENGTH:
                        continue
                    arttype = basefile

                if settings.identify_alternatives and arttype in self.alttypes.keys(
                ):
                    arttype = self.alttypes[arttype]
                    if arttype in result.keys():
                        continue

                result[arttype] = self.buildimage(path + filename, filename)
        return result
 def get_exact_images(self, mediaitem):
     paths = (mediaitem.file, find_central_infodir(mediaitem))
     if not paths[0] and not paths[1]:
         return {}
     if settings.albumartwithmediafiles:
         paths = (paths[1], paths[0])
     if mediaitem.file:
         check_inputbase = os.path.splitext(os.path.basename(
             mediaitem.file))[0].lower()
     result = {}
     for path in paths:
         if not path:
             continue
         centraldir = path != mediaitem.file
         path = os.path.dirname(path) + get_pathsep(path)
         _, files = xbmcvfs.listdir(path)
         for filename in files:
             check_filename = filename.lower()
             if not check_filename.endswith(ARTWORK_EXTS):
                 continue
             basefile = os.path.splitext(check_filename)[0]
             if '-' not in basefile:
                 continue
             firstbit, arttype = basefile.rsplit('-', 1)
             if not arttype.isalnum():
                 continue
             if not centraldir and firstbit != check_inputbase:
                 continue
             if centraldir and firstbit not in (
                     i.lower()
                     for i in iter_possible_cleannames(mediaitem.label)):
                 continue
             result[arttype] = self.buildimage(path + filename, filename,
                                               centraldir)
     return result
def _identify_parent_movieset(mediaitem):
    # Identify set folder among movie parent dirs
    add_movieset_movies(mediaitem)
    for cleanlabel in utils.iter_possible_cleannames(mediaitem.label):
        for movie in mediaitem.movies:
            pathsep = utils.get_pathsep(movie['file'])
            setmatch = pathsep + cleanlabel + pathsep
            if setmatch in movie['file']:
                result = movie['file'].split(setmatch)[0] + setmatch
                mediaitem.file = result
                return
def _find_existing(basedir, name, uniqueslug=None, mediayear=None, files=False):
    for item in get_cached_listdir(basedir)[1 if files else 0]:
        cleantitle, diryear = xbmc.getCleanMovieTitle(item) if mediayear else (item, '')
        if diryear and int(diryear) != mediayear:
            continue
        if files:
            item = item.rsplit('-', 1)[0]
        for title in utils.iter_possible_cleannames(name, uniqueslug):
            if title in (cleantitle, item):
                return item
    return None