def recreate_db(self): self.recreate_media_table() self.totag = [] self.sb.config.config["dbupdatetime"] = loggy.currenttime() if not self.tagger: self.tagger = tagger.tagger() for folder in self.sb.config.config["libraryfolders"]: loggy.log("ELE " + folder) for path, dirs, files in os.walk(folder): for filename in [os.path.abspath(os.path.join(path, filename)) for filename in files]: mime = mimetypes.guess_type(filename)[0] # TODO: get rid of mimetype if not mime: loggy.log("Update database - no mime type for " + filename) elif mime.startswith("audio"): loggy.log("Database recreate_db Adding Audio :" + filename) self.totag.append(filename) elif mime.startswith("video"): loggy.log("Database recreate_db Adding Video :" + filename) self.totag.append(filename) else: None # loggy.log("Database recreate_db Unknown mime type:" +mime+", ignoring:" +filename) self.totaltotag = len(self.totag) loggy.log("Database:" + str(self.totaltotag) + " files to scan") self.gettag()
def update_db(self): # self.recreate_media_table() self.sb.config.config["dbupdatetime"] = loggy.currenttime() self.totag = [] if not self.tagger: self.tagger = tagger.tagger() for folder in self.sb.config.config["libraryfolders"]: loggy.log("ELE " + folder) for path, dirs, files in os.walk(folder): for filename in [os.path.abspath(os.path.join(path, filename)) for filename in files]: row = self.get_uri_db_info("file://" + filename) if row: mtime = int(os.path.getmtime(filename)) # (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(filename) # print ' old {0}, new {1} mtimes'.format(row['mtime'], mtime) if mtime >= row["mtime"]: continue mime = mimetypes.guess_type(filename)[0] # TODO: get rid of mimetype if not mime: loggy.log("Update database - no mime type for " + filename) elif mime.startswith("audio"): loggy.log("Database recreate_db Adding Audio :" + filename) self.totag.append(filename) elif mime.startswith("video"): loggy.log("Database recreate_db Adding Video :" + filename) self.totag.append(filename) else: None # loggy.log("Database recreate_db Unknown mime type:" +mime+", ignoring:" +filename) self.totaltotag = len(self.totag) loggy.log("Database:" + str(self.totaltotag) + " files to scan") self.gettag()
def __init__(self, soundblizzard): #load defaults first then config file then command line args self.config = { 'configfile' : os.path.expanduser('~/.config/soundblizzard/soundblizzard.conf'), 'libraryfolders' : [os.path.expanduser('~/Music')], #TODO: support multiple folders 'playlistfolder' : '~/.config/playlists', 'databasefile' : os.path.expanduser('~/.config/soundblizzard/soundblizzard.db'), 'mpdhost' : 'localhost', 'mpdport' : 6600, 'dbupdatetime' : loggy.currenttime() } if (not(os.path.isdir(os.path.dirname(self.config['configfile'])))): os.makedirs(os.path.dirname(self.config['configfile'])) or loggy.warn ('could not create config dir') # if (not (os.path.isfile('~/.config/soundblizzard/soundblizzard.conf'))) fd = None try: fd = open(self.config['configfile'], 'r')#tries to open config file except: loggy.warn('Could not open config file '+ self.config['configfile']) try: self.config.update(json.load(fd)) #adds config file to dictionary and overrides with config file except: loggy.warn('Could not read config file '+ self.config['configfile']) #Handle command line arguments #Splits command line args into dict, if key starts with -- then takes this as an argument and prints these # if key is help prints defaults #TODO: improve command line argument recognition a = sys.argv[1:] if len(a) % 2: a.append('') b = {a[i]: a[i+1] for i in range(0, len(a), 2)} c ={} for key in b: if key.startswith('--help'): loggy.warn ('Soundblizzard media player\nTo amend config settings please use --key \'value\' on the command line. \n Current values:') print json.dumps(self.config, sort_keys=True, indent=2) loggy.die('help delivered') elif key.startswith('--'): c[key[2:]] = b[key] self.config.update(c) loggy.log('Configuration:' +str(self.config))