def splitArtistDelim(self, artist, delval): names = {} if delval not in artist: return None for val in artist.split(delval): val = val.strip() if self.discdata is not None and len(self.discArtists) > 0: retval = self.discdata.get(val) if retval is not None: names[val] = retval else: retval = findNearest(val, self.discArtists, 1, self.cutoff) if len(retval) == 0: names[val] = None else: names[val] = retval else: names[val] = [-1] if len(names) == 0: return None if any(names.values()) is False: return None return names
def combineResults(self, allArtists, knownArtists, debug=False): results = {} if debug: print("Combining Results") print("All Artists: {0}".format(allArtists)) print("Known Artists: {0}".format(knownArtists)) if self.discdata is not None and len(self.discArtists) > 0: for name in knownArtists: retval = self.discdata.get(name) if self.exact is False: if retval is None: retval = findNearest(name, self.discArtists, 1, self.cutoff) if len(retval) == 1: retval = self.discdata.get(retval[0]) else: retval = None results[name] = retval else: for artist in allArtists.keys(): if self.masks.get(artist) is not None: artist = self.masks[artist] results[artist] = ['?'] #results = {k: ['?'] for k,v in allArtists.items()} return results
def searchMyMovies(self, movie, year, cutoff=0.8, num=3): moviesMine = self.getMyMovies() key = "{0} [{1}]".format(movie, year) result = findNearest(key, moviesMine.keys(), num, 0.95) if len(result) > 0: print("{0} ---> {1}".format(movie, result)) location = moviesMine[result[0]] print("moveFile(src=\"{0}\", dst=\"{1}\", debug=True)\n".format(location, location)) return else: key = "{0} [{1}]".format(movie, year) result = findNearest(key, moviesMine.keys(), num, cutoff) if len(result) > 0: print("{0} ---> {1}".format(movie, result)) location = moviesMine[result[0]] print("moveFile(src=\"{0}\", dst=\"{1}\", debug=True)\n".format(location, location)) return print("No match found") return
def searchBoxOfficeMojo(self, movie, debug=False): savename = setFile(self.getResultsDir(), "{0}.json".format(self.name)) data = getFile(savename) print("Nearest matches for {0}".format(movie)) for year, yearlyMovies in data.items(): result = findNearest(movie, [x[0] for x in yearlyMovies], num=1, cutoff=0.9) if len(result) > 0: values = [(name, value) for name, value in yearlyMovies if name in result] print("{0: <6}{1}".format(year, values))
def findPlayerTeam(self, playText, playersDict, useNearest=None, debug=False): if playText is None: return None for name,pos in playersDict.items(): if name in playText: if debug: print("\t\tEXACT MATCH: {0} <-- {1}".format(pos, name)) return [name,pos] if useNearest is not None: pos = findNearest(item=playText, ilist=playersDict.keys(), cutoff=useNearest, num=1) if len(pos) == 0: return None else: name = pos[0] pos = playersDict[name] if debug: print("\t\tNEAR MATCH: {0} <-- {1}".format(name, playText)) return [name,pos] return None
def getArtistNames(self, artist, debug=False): if debug: print("Getting Artist Names For {0}".format(artist)) return self.newMethod(artist, debug) if self.nDelims(artist) == 0: names = {artist: []} return names if self.discdata is not None and len(self.discArtists) > 0: retval = self.discdata.get(artist) if retval is not None: return {artist: retval} else: retval = findNearest(artist, self.discArtists, 1, self.cutoff) if len(retval) == 1: return {artist: self.discdata.get(retval[0])} names = {artist: None} names = self.splitArtist(names) names = self.unravelDict(names) names = self.unravelDict(names) return names
def mergeMovies(self, toFile=False, movie=None, source=None, year=None): combinedMovies = self.getCombinedMoviesByYear() myMovies = self.getMyMoviesByYear() renames = {} filename = setFile(self.getResultsDir(), "mymovies.dat") yearcut = year sourcecut = source moviecut = movie pYear = None yearRenames = {} locations = {} toGet = {} years = sorted(combinedMovies.keys()) for year in years: locations[year] = {} movies = combinedMovies[year] #print("Analyzing {0} movies from {1}".format(len(movies), year)) for name,source in movies.items(): key = "{0} [{1}]".format(name, year) locations[year][name] = [None, source] for yearval in [year+y for y in [0,1,-1,2,-2]]: try: location = myMovies[yearval][name] break except: location = None exact = False if location is not None: location = u'\u2713' exact = True else: nearbyMovies = [] for yearval in [year+y for y in [0,1,-1]]: yearlyMovies = myMovies.get(yearval) if isinstance(yearlyMovies, dict): result = findNearest(name, yearlyMovies.keys(), 1, 0.98) if len(result) > 0: location = u'\u2248' myMovie = myMovies[yearval][result[0]] fileInfo = getFileBasics(myMovie) newMovieKey = "{0} [{1}]".format(name, year) yearRenames[myMovie] = join(fileInfo[0], "".join([newMovieKey, fileInfo[2]])) if location is None: for yearval in [year+y for y in [0,1,-1]]: yearlyMovies = myMovies.get(yearval) if isinstance(yearlyMovies, dict): result = findNearest(name, yearlyMovies.keys(), 1, 0.90) if len(result) > 0: location = u'\u2047' myMovie = myMovies[yearval][result[0]] fileInfo = getFileBasics(myMovie) newMovieKey = "{0} [{1}]".format(name, year) yearRenames[myMovie] = join(fileInfo[0], "".join([newMovieKey, fileInfo[2]])) if location is None: location = "" if exact is False: if toGet.get(year) is None: toGet[year] = {} toGet[year][name] = source locations[year][name][0] = location self.setCombinedMovieStatus(locations) self.setMissingMovies(toGet) self.setMovieRenames(yearRenames)