def __init__(self, config=None, use_lastfm=False, no_metadata=False, low_ram=False, reindex=False): self.config = config self.use_lastfm = use_lastfm self.no_metadata = no_metadata self.low_ram = low_ram self.reindex = reindex self.empty_db = reindex and not low_ram self.session = db.session self.media_dirs = config.get('MEDIA_DIRS', []) self.allowed_extensions = app.config.get('ALLOWED_FILE_EXTENSIONS', self.VALID_FILE_EXTENSIONS) self._ext = None self._meta = None self.track_count = 0 self.skipped_tracks = 0 self.count_by_extension = {} for extension in self.allowed_extensions: self.count_by_extension[extension] = 0 self.artists = {} self.albums = {} if self.use_lastfm: import pylast self.pylast = pylast api_key = config['LASTFM_API_KEY'] self.lastfm = self.pylast.LastFMNetwork(api_key=api_key) if not len(self.media_dirs): log.error("Remember to set the MEDIA_DIRS option, otherwise I " "don't know where to look for.") if reindex: log.info('Dropping database...') confirmed = raw_input('This will destroy all the information. ' 'Proceed? [y/N] ') in ('y', 'Y') if not confirmed: log.error('Aborting.') sys.exit(1) db.drop_all() log.info('Recreating database...') db.create_all() # This is useful to know if the DB is empty, and avoid some checks if not self.reindex and not self.low_ram: try: m.Artist.query.limit(1).all() except OperationalError: self.empty_db = True
def destroy_db(): confirm = 'All data will be lost. Do you want to continue? [y/N]' if raw_input(confirm) in ['y', 'Y']: db.drop_all() log.info('DB destroyed.') else: log.info('Aborting.')
def __init__(self, config=None, use_lastfm=False, hash_files=False, no_metadata=False, reindex=False, write_every=0): self.config = config self.use_lastfm = use_lastfm self.hash_files = hash_files self.no_metadata = no_metadata self.reindex = reindex self.write_every = write_every self.empty_db = reindex # If we are going to have only 1 track in cache at any time we might as # well just ignore it completely. use_cache = (write_every != 1) self.cache = CacheManager(ram_cache=use_cache, use_db=not use_cache) self.session = db.session self.media_dirs = config.get('MEDIA_DIRS', []) self.allowed_extensions = app.config.get('ALLOWED_FILE_EXTENSIONS', self.VALID_FILE_EXTENSIONS) self._ext = None self._meta = None self.track_count = 0 self.skipped_tracks = 0 self.count_by_extension = {} for extension in self.allowed_extensions: self.count_by_extension[extension] = 0 if self.use_lastfm: self.lastfm = LastFM(api_key=config['LASTFM_API_KEY'], use_cache=(write_every > 1)) if not len(self.media_dirs): log.error("Remember to set the MEDIA_DIRS option, otherwise I " "don't know where to look for.") if reindex: log.info('Dropping database...') confirmed = raw_input('This will destroy all the information. ' 'Proceed? [y/N] ') in ('y', 'Y') if not confirmed: log.error('Aborting.') sys.exit(1) db.drop_all() log.info('Recreating database...') db.create_all() # This is useful to know if the DB is empty, and avoid some checks if not self.reindex: try: m.Track.query.limit(1).all() except OperationalError: self.empty_db = True
def __init__(self, config=None, use_lastfm=False, no_metadata=False, reindex=False): self.config = config self.use_lastfm = use_lastfm self.no_metadata = no_metadata self.reindex = reindex self.empty_db = reindex self.session = db.session self.media_dirs = config.get('MEDIA_DIRS', []) self.allowed_extensions = app.config.get('ALLOWED_FILE_EXTENSIONS', self.VALID_FILE_EXTENSIONS) self._ext = None self._meta = None self.track_count = 0 self.skipped_tracks = 0 self.count_by_extension = {} for extension in self.allowed_extensions: self.count_by_extension[extension] = 0 self.artists = {} self.albums = {} if self.use_lastfm: import pylast self.pylast = pylast api_key = config['LASTFM_API_KEY'] self.lastfm = self.pylast.LastFMNetwork(api_key=api_key) if not len(self.media_dirs): log.error("Remember to set the MEDIA_DIRS option, otherwise I " "don't know where to look for.") if reindex: log.info('Dropping database...') confirmed = raw_input('This will destroy all the information. ' 'Proceed? [y/N] ') in ('y', 'Y') if not confirmed: log.error('Aborting.') sys.exit(1) db.drop_all() log.info('Recreating database...') db.create_all() # This is useful to know if the DB is empty, and avoid some checks if not self.reindex: try: m.Artist.query.limit(1).all() except OperationalError: self.empty_db = True
def tearDown(self): db.drop_all()