def installData(self): if not isDir(self.multiArtistDir): print("Install: Making Prefix Dir [{0}]".format( self.multiArtistDir)) mkDir(self.multiArtistDir) if not isFile(self.getFilename(fast=True, local=False)): print("Install: Creating Prefix Data From Local Data") self.writeToMainPickleFromLocalYAML()
def installData(self): if not isDir(self.musicDataDir): print("Install: Making Prefix Dir [{0}]".format(self.musicDataDir)) mkDir(self.musicDataDir) if not isFile(self.getFilename(local=False)): print("Install: Creating Prefix Data From Local Data") fileIO().save(idata=fileIO().get(self.getFilename(local=True)), ifile=self.getFilename(local=False))
def getCanadaCategoryData(self, debug=False): outdir = self.getDataDir() if debug: print("Data Directory: {0}".format(outdir)) if not isDir(outdir): mkDir(outdir) categories = ["Best_Motion_Picture"] for category in categories: self.downloadCanadaCategoryData(category, outdir, debug)
def getBAFTACategoryData(self, debug=False): outdir = self.getDataDir() if debug: print("Data Directory: {0}".format(outdir)) if not isDir(outdir): mkDir(outdir) categories = ["Best_Film", "Best_British_Film", "Best_Direction"] for category in categories: self.downloadBAFTACategoryData(category, outdir, debug)
def getFilms101YearlyData(self, startYear = 1900, endYear = 2018, debug=False): outdir = self.getDataDir() if debug: print("Data Directory: {0}".format(outdir)) #outdir = setDir(getBoxOfficeDir(), "data") if not isDir(outdir): mkDir(outdir) years = range(int(startYear), int(endYear)+1) for year in years: self.downloadFilms101YearlyData(year, outdir, debug)
def getWikiFilmYearlyData(self, startYear=1921, endYear=2017, debug=False): outdir = self.getDataDir() if debug: print("Data Directory: {0}".format(outdir)) if not isDir(outdir): mkDir(outdir) if startYear < 1921: raise ValueError("Must start at or after 1921") years = range(int(startYear), int(endYear) + 1) for year in years: self.downloadWikiFilmYearlyData(year, outdir, debug)
def getRazziesCategoryData(self, debug=False): outdir = self.getDataDir() if debug: print("Data Directory: {0}".format(outdir)) if not isDir(outdir): mkDir(outdir) categories = [ "Worst_Picture", "Worst_Actor", "Worst_Actress", "Worst_Director" ] for category in categories: self.downloadRazziesCategoryData(category, outdir, debug)
def getRottenTomatoesYearlyData(self, startYear=1980, endYear=2017, debug=False): outdir = self.getDataDir() if debug: print("Data Directory: {0}".format(outdir)) if not isDir(outdir): mkDir(outdir) years = range(int(startYear), int(endYear) + 1) for year in years: self.downloadRottenTomatoesYearlyData(year, outdir, debug)
def downloadRottenTomatoesTop100Data(self, genre, outdir, debug=False): baseurl = "https://www.rottentomatoes.com" outdir = setDir(self.getDataDir()) if not isDir(outdir): mkDir(outdir) url = "/top/bestofrt/top_100_" + genre + "_movies/" url = baseurl + url savename = setFile(outdir, genre + ".p") if isFile(savename): return if debug: print("Downloading/Saving {0}".format(savename)) getWebData(base=url, savename=savename, useSafari=False, dtime=10) sleep(2)
def moveMyMatchedMusicAlbums(self, show=False): rename = True albumsToMove = getFile(ifile=self.moveFilename) print("Found {0} music <-> discogs albums maps".format( len(albumsToMove))) for db, dbValues in albumsToMove.items(): if dbValues is None: continue for artistName, artistAlbums in dbValues.items(): print("==>", artistName) for myAlbumName, albumVals in artistAlbums.items(): dirval = albumVals["Dir"] albumVal = albumVals["Album"] ratio = albumVals["Ratio"] dbAlbumName = albumVal["Name"] dbAlbumCode = albumVal["Code"] mediaType = albumVal["MediaType"] matchedDir = setDir(dirval, "Match") mkDir(matchedDir) srcName = myAlbumName srcDir = setDir(dirval, srcName) if not isDir(srcDir): print("{0} does not exist".format(srcDir)) continue mediaDir = setDir(matchedDir, self.discConv(mediaType)) mkDir(mediaDir) if rename is True: dstName = self.getMatchedDirName( self.discConv(dbAlbumName), dbAlbumCode, db) else: dstName = self.getMatchedDirName( myAlbumName, dbAlbumCode, db) if show is True: print('\t{0}'.format(mediaDir)) print("\t\t[{0}]".format(srcName)) print("\t\t[{0}]".format(dstName)) continue dstDir = setDir(mediaDir, dstName) if isDir(dstDir): print("{0} already exists".format(dstDir)) continue print("\tMoving {0} ---> {1}".format(srcDir, dstDir)) moveDir(srcDir, dstDir, debug=True)
def getSAGCategoryData(self, debug=False): outdir = self.getDataDir() if debug: print("Data Directory: {0}".format(outdir)) if not isDir(outdir): mkDir(outdir) categories = ["Outstanding_Performance_by_a_Cast_in_a_Motion_Picture", "Outstanding_Performance_by_a_Male_Actor_in_a_Leading_Role", "Outstanding_Performance_by_a_Female_Actor_in_a_Leading_Role", "Outstanding_Performance_by_a_Male_Actor_in_a_Supporting_Role", "Outstanding_Performance_by_a_Female_Actor_in_a_Supporting_Role"] for category in categories: self.downloadSAGCategoryData(category, outdir, debug)
def createDirnameDirectories(self, savedir, dirnames): localdirnames = dict( zip(dirnames, [setDir(savedir, x) for x in dirnames])) for name, dirname in localdirnames.items(): if not isDir(dirname): print("Creating {0}".format(dirname)) try: mkDir(dirname, debug=True) except: print("Cannot create {0}".format(dirname)) else: if self.debug: print("{0} exists".format(dirname)) return localdirnames
def getAACTACategoryData(self, debug=False): outdir = self.getDataDir() if debug: print("Data Directory: {0}".format(outdir)) if not isDir(outdir): mkDir(outdir) categories = [ "Best_Film", "Best_Direction", "Best_Actor_in_a_Leading_Role", "Best_Actress_in_a_Leading_Role", "Best_Actor_in_a_Supporting_Role", "Best_Actress_in_a_Supporting_Role" ] for category in categories: self.downloadAACTACategoryData(category, outdir, debug)
def main(args): cwd = getcwd() albumSegments = {} discSegments = {} for ifile in findPattern("./", pattern="."): mid = mp3ID(ifile) try: mid = mp3ID(ifile) except: print("Error reading file {0}".format(ifile)) continue album = mid.getAlbum() print("Album: {0}".format(album)) if album is not None: album = album[0] if albumSegments.get(album) is None: albumSegments[album] = [] albumSegments[album].append(ifile) disc = mid.getDiscNumber() if disc is not None: disc = disc[0] if discSegments.get(disc) is None: discSegments[disc] = [] discSegments[disc].append(ifile) if args.album is True: print("Album Segments: {0}".format(albumSegments.keys())) for album, albumFiles in albumSegments.items(): albumDir = setDir(cwd, album) mkDir(albumDir) for ifile in albumFiles: src = ifile dst = setFile(albumDir, getBasename(ifile)) print("Moving [{0}] to [{1}]".format(src, dst)) moveFile(src, dst, debug=True) if args.disc is True: print("Disc Segments: {0}".format(discSegments.keys())) for disc, discFiles in discSegments.items(): discDir = setDir(cwd, "Disc {0}".format(disc)) mkDir(discDir) for ifile in discFiles: src = ifile dst = setFile(discDir, getBasename(ifile)) #print("Moving [{0}] to [{1}]".format(src, dst)) moveFile(src, dst, debug=True)
def getUltimateMovieRankingsYearlyData(self, startYear=2017, endYear=2017, debug=False): outdir = self.getDataDir() if debug: print("Data Directory: {0}".format(outdir)) #outdir = setDir(getBoxOfficeDir(), "data") if not isDir(outdir): mkDir(outdir) years = range(int(startYear), int(endYear) + 1) for year in years: if year >= 1988 and year <= 2010: continue self.downloadUltimateMovieRankingsYearlyData(year, outdir, debug)
def getBoxOfficeMojoWeekendData(self, startYear=1982, endYear=1982, debug=False): outdir = self.getDataDir() if debug: print("Data Directory: {0}".format(outdir)) #outdir = setDir(getBoxOfficeDir(), "data") if not isDir(outdir): mkDir(outdir) years = range(int(startYear), int(endYear) + 1) weeks = range(1, 53) for year in years: for week in weeks: self.downloadBoxOfficeMojoWeekendData(year, week, outdir, debug)
def getRottenTomatoesGenreData(self, debug=False): outdir = self.getDataDir() if debug: print("Data Directory: {0}".format(outdir)) if not isDir(outdir): mkDir(outdir) genres = [ "action__adventure", "animation", "art_house__international", "classics", "comedy", "documentary", "drama", "horror", "kids__family", "musical__performing_arts", "mystery__suspense", "romance", "science_fiction__fantasy", "special_interest", "sports__fitness", "television", "western" ] for genre in genres: self.downloadRottenTomatoesTop100Data(genre, outdir, debug)
def actionOnAlbum(albumDir, artistDir, retval): if any([retval["Skip"], retval["Extra"]]): return ## Set Needed Directories todoDir = setDir(artistDir, "Todo", forceExist=False) multiDir = setDir(artistDir, "Multi", forceExist=False) titleDir = setDir(artistDir, "Title", forceExist=False) randomDir = setDir(artistDir, "Random", forceExist=False) mixDir = setDir(artistDir, "Mix", forceExist=False) testTitle = retval["Title"] testTitle = False testTrackNo = retval["Track"] testMulti = retval["Multi"] testMix = retval["Mix"] #print(testTitle,testTrackNo,testMulti) if testTitle is True: if not isDir(titleDir): mkDir(titleDir) srcdir = albumDir dstdir = setDir(titleDir, getDirBasics(albumDir)[-1]) print("!!! Moving {0} ==> {1}".format(srcdir, dstdir)) sleep(1) moveDir(srcdir, dstdir) elif testMix is True: if not isDir(mixDir): mkDir(mixDir) srcdir = albumDir dstdir = setDir(mixDir, getDirBasics(albumDir)[-1]) print("!!! Moving {0} ==> {1}".format(srcdir, dstdir)) sleep(1) moveDir(srcdir, dstdir) elif testTrackNo is True: if not isDir(todoDir): mkDir(todoDir) srcdir = albumDir dstdir = setDir(todoDir, getDirBasics(albumDir)[-1]) print("!!! Moving {0} ==> {1}".format(srcdir, dstdir)) sleep(1) moveDir(srcdir, dstdir) elif testMulti is True: if not isDir(multiDir): mkDir(multiDir) srcdir = albumDir dstdir = setDir(multiDir, getDirBasics(albumDir)[-1]) print("!!! Moving {0} ==> {1}".format(srcdir, dstdir)) sleep(1) moveDir(srcdir, dstdir)
def main(args): args = addDefault(args) if args.debug is True: print('Show = {!r}'.format(args.show)) print('Search = {!r}'.format(args.search)) print('Artist = {!r}'.format(args.artist)) print('Album = {!r}'.format(args.album)) print('AlbumArtist = {!r}'.format(args.albumartist)) print('Title = {!r}'.format(args.title)) print('DiscNo = {!r}'.format(args.discno)) print('TrackNo = {!r}'.format(args.trackno)) print('File = {!r}'.format(args.file)) print('Dir = {!r}'.format(args.dir)) searchResults = {} files = getFiles(args.file, args.dir) for i,(dirval,filevals) in enumerate(files.items()): searchResults[dirval] = [] j = 0 first = False for jf, ifile in enumerate(filevals): results = MusicID(ifile, debug=args.debug) if results.skip is True: continue if first is False: first = True if first is True: print("\nDirectory: {0}".format(dirval)) header() first = None r = results.getInfo() j += 1 if args.search is True: if args.album is not None: if args.album in r["Album"][0]: searchResults[dirval].append(ifile) continue else: raise ValueError("Can only search for album names right now") if args.show is True: p([j, r["DiscNo"], r["TrackNo"], r["AlbumArtist"], r["Artist"], r["Album"], r["Title"], r["Size"]]) continue ## Artst if args.artist is not None: oldName = r["Artist"] results.setTag("Artist", args.artist) ## Album if args.album is not None: oldName = r["Album"] results.setTag("Album", args.album) ## AlbumArtist if args.albumartist is not None: oldName = r["AlbumArtist"] results.setTag("AlbumArtist", args.albumartist) ## Title if args.title is not None: oldName = r["Title"] results.setTag("Title", args.title) ## DiscNo if args.discno is not None: oldName = r["DiscNo"] results.setTag("DiscNo", args.discno) ## TrackNo if args.trackno is not None: oldName = r["TrackNo"] results.setTag("TrackNo", args.trackno) r = results.getInfo() p([j, r["DiscNo"], r["TrackNo"], r["AlbumArtist"], r["Artist"], r["Album"], r["Title"], r["Size"]]) if args.search is True: for dirval,files in searchResults.items(): tmpDir = mkDir(setDir(dirval, "tmp")) for ifile in files: moveFile(ifile, tmpDir)
def main(args): print(args) args = addDefault(args) if args.artist: print('Artist = {!r}'.format(args.artist)) outdir = mkDir(setDir(args.dir, "Artist")) if args.album: print('Album = {!r}'.format(args.album)) outdir = mkDir(setDir(args.dir, "Album")) if args.albumartist: print('AlbumArtist = {!r}'.format(args.albumartist)) outdir = mkDir(setDir(args.dir, "AlbumArtist")) if args.disc: print('Disc = {!r}'.format(args.disc)) outdir = mkDir(setDir(args.dir, "Disc")) if args.track: print('Track = {!r}'.format(args.track)) outdir = mkDir(setDir(args.dir, "Track")) if args.dir: print('Dir = {!r}'.format(args.dir)) tomove = [] files = findWalk(args.dir) for idir, ifiles in files.items(): for jf, ifile in enumerate(ifiles): results = MusicID(ifile, debug=args.debug) if results.skip is True: continue tags = results.getInfo() if args.artist: if args.artist == tags["Artist"][0]: tomove.append(ifile) continue if args.albumartist: if args.albumartist == tags["AlbumArtist"][0]: tomove.append(ifile) continue if args.album: if args.album == tags["Album"][0]: tomove.append(ifile) continue if args.disc: print(args.disc, tags["DiscNo"][0]) if args.disc == tags["DiscNo"][0]: tomove.append(ifile) continue if args.track: if args.track == tags["TrackNo"][0]: tomove.append(ifile) continue if len(tomove) > 0: for ifile in tomove: src = ifile fname = getBasename(ifile) dst = setFile(outdir, fname) moveFile(src, dst) print("Moved {0} ===> {1}".format(src, dst)) else: removeDir(outdir) print("Didn't find any matching files...")
def getCorrectionsDir(self): dirname = setDir(self.getMovieDBDir(), "corrections") if not isDir(dirname): mkDir(dirname) return dirname
def getMovieDir(self): dirname = self.basedir if not isDir(dirname): mkDir(dirname) return dirname
def getDataDir(self): dirname = setDir(self.getMovieDBDir(), self.datadir) if not isDir(dirname): mkDir(dirname) return dirname
def getResultsDir(self): dirname = setDir(self.getMovieDBDir(), self.resultsdir) if not isDir(dirname): mkDir(dirname) return dirname