def test_empty_tag_cache_has_song_list(self): result = translator.tracks_to_tag_cache_format([]) result = self.consume_headers(result) song_list, result = self.consume_song_list(result) self.assertEqual(len(song_list), 0) self.assertEqual(len(result), 0)
def test_empty_tag_cache_has_song_list(self): result = translator.tracks_to_tag_cache_format([], self.media_dir) result = self.consume_headers(result) song_list, result = self.consume_song_list(result) self.assertEqual(len(song_list), 0) self.assertEqual(len(result), 0)
def main(): options = parse_options() log.setup_root_logger() log.setup_console_logging(options.verbosity_level) tracks = [] def store(data): track = translator(data) tracks.append(track) logging.debug('Added %s', track.uri) def debug(uri, error, debug): logging.warning('Failed %s: %s', uri, error) logging.debug('Debug info for %s: %s', uri, debug) logging.info('Scanning %s', settings.LOCAL_MUSIC_PATH) scanner = Scanner(settings.LOCAL_MUSIC_PATH, store, debug) try: scanner.start() except KeyboardInterrupt: scanner.stop() logging.info('Done scanning; writing tag cache...') for row in mpd_translator.tracks_to_tag_cache_format(tracks): if len(row) == 1: print('%s' % row).encode('utf-8') else: print('%s: %s' % row).encode('utf-8') logging.info('Done writing tag cache')
def main(): options = parse_options() log.setup_root_logger() log.setup_console_logging(options.verbosity_level) tracks = [] def store(data): track = translator(data) tracks.append(track) logging.debug("Added %s", track.uri) def debug(uri, error, debug): logging.warning("Failed %s: %s", uri, error) logging.debug("Debug info for %s: %s", uri, debug) logging.info("Scanning %s", settings.LOCAL_MUSIC_PATH) scanner = Scanner(settings.LOCAL_MUSIC_PATH, store, debug) try: scanner.start() except KeyboardInterrupt: scanner.stop() logging.info("Done scanning; writing tag cache...") for row in mpd_translator.tracks_to_tag_cache_format(tracks): if len(row) == 1: print("%s" % row).encode("utf-8") else: print("%s: %s" % row).encode("utf-8") logging.info("Done writing tag cache")
def main(): log.setup_root_logger() log.setup_console_logging(2) tracks = [] def store(data): track = translator(data) tracks.append(track) logging.debug('Added %s', track.uri) def debug(uri, error, debug): logging.error('Failed %s: %s - %s', uri, error, debug) logging.info('Scanning %s', settings.LOCAL_MUSIC_PATH) scanner = Scanner(settings.LOCAL_MUSIC_PATH, store, debug) try: scanner.start() except KeyboardInterrupt: scanner.stop() logging.info('Done') for row in mpd_translator.tracks_to_tag_cache_format(tracks): if len(row) == 1: print ('%s' % row).encode('utf-8') else: print ('%s: %s' % row).encode('utf-8')
def test_tag_cache_has_song_list(self): track = Track(uri='file:///dir/subdir/song.mp3') result = translator.tracks_to_tag_cache_format([track], self.media_dir) result = self.consume_headers(result) song_list, result = self.consume_song_list(result) self.assert_(song_list) self.assertEqual(len(result), 0)
def test_tag_cache_has_song_list(self): track = Track(uri='file:///dir/subdir/song.mp3') result = translator.tracks_to_tag_cache_format([track]) result = self.consume_headers(result) song_list, result = self.consume_song_list(result) self.assert_(song_list) self.assertEqual(len(result), 0)
def test_tag_cache_has_formated_track(self): track = Track(uri='file:///dir/subdir/song.mp3') formated = self.translate(track) result = translator.tracks_to_tag_cache_format([track]) result = self.consume_headers(result) song_list, result = self.consume_song_list(result) self.assertEqual(song_list, formated) self.assertEqual(len(result), 0)
def test_tag_cache_diretory_header_is_right(self): track = Track(uri="file:///dir/subdir/folder/sub/song.mp3") result = translator.tracks_to_tag_cache_format([track], self.media_dir) result = self.consume_headers(result) dir_data, result = self.consume_directory(result) self.assertEqual(("directory", "folder/sub"), dir_data[0]) self.assertEqual(("mtime", mtime(".")), dir_data[1]) self.assertEqual(("begin", "sub"), dir_data[2])
def test_tag_cache_diretory_header_is_right(self): track = Track(uri='file:///dir/subdir/folder/sub/song.mp3') result = translator.tracks_to_tag_cache_format([track]) result = self.consume_headers(result) folder, result = self.consume_directory(result) self.assertEqual(('directory', 'folder/sub'), folder[0]) self.assertEqual(('mtime', mtime('.')), folder[1]) self.assertEqual(('begin', 'sub'), folder[2])
def test_tag_cache_has_formated_track_with_key_and_mtime(self): track = Track(uri='file:///dir/subdir/song.mp3') formated = self.translate(track) result = translator.tracks_to_tag_cache_format([track], self.media_dir) result = self.consume_headers(result) song_list, result = self.consume_song_list(result) self.assertEqual(formated, song_list) self.assertEqual(len(result), 0)
def test_tag_cache_has_formated_track(self): track = Track(uri='file:///dir/subdir/song.mp3') formated = self.translate(track) result = translator.tracks_to_tag_cache_format([track], self.media_dir) result = self.consume_headers(result) song_list, result = self.consume_song_list(result) self.assertEqual(formated, song_list) self.assertEqual(len(result), 0)
def test_tag_cache_has_formated_track_with_key_and_mtime(self): track = Track(uri='file:///dir/subdir/song.mp3') formated = self.translate(track) result = translator.tracks_to_tag_cache_format([track]) result = self.consume_headers(result) song_list, result = self.consume_song_list(result) self.assertEqual(song_list, formated) self.assertEqual(len(result), 0)
def test_tag_cache_diretory_header_is_right(self): track = Track(uri='file:///dir/subdir/folder/sub/song.mp3') result = translator.tracks_to_tag_cache_format([track], self.media_dir) result = self.consume_headers(result) dir_data, result = self.consume_directory(result) self.assertEqual(('directory', 'folder/sub'), dir_data[0]) self.assertEqual(('mtime', mtime('.')), dir_data[1]) self.assertEqual(('begin', 'sub'), dir_data[2])
def main(): options = parse_options() # TODO: support config files and overrides (shared from main?) config_files = [ b'/etc/mopidy/mopidy.conf', b'$XDG_CONFIG_DIR/mopidy/mopidy.conf' ] config_overrides = [] # TODO: decide if we want to avoid this boilerplate some how. # Initial config without extensions to bootstrap logging. logging_config, _ = config_lib.load(config_files, [], config_overrides) log.setup_root_logger() log.setup_console_logging(logging_config, options.verbosity_level) extensions = ext.load_extensions() config, errors = config_lib.load(config_files, extensions, config_overrides) log.setup_log_levels(config) if not config['local']['media_dir']: logging.warning('Config value local/media_dir is not set.') return # TODO: missing error checking and other default setup code. tracks = [] def store(data): track = translator(data) tracks.append(track) logging.debug('Added %s', track.uri) def debug(uri, error, debug): logging.warning('Failed %s: %s', uri, error) logging.debug('Debug info for %s: %s', uri, debug) logging.info('Scanning %s', config['local']['media_dir']) scanner = Scanner(config['local']['media_dir'], store, debug) try: scanner.start() except KeyboardInterrupt: scanner.stop() logging.info('Done scanning; writing tag cache...') for row in mpd_translator.tracks_to_tag_cache_format( tracks, config['local']['media_dir']): if len(row) == 1: print('%s' % row).encode('utf-8') else: print('%s: %s' % row).encode('utf-8') logging.info('Done writing tag cache')
def main(): options = parse_options() # TODO: support config files and overrides (shared from main?) config_files = [b'/etc/mopidy/mopidy.conf', b'$XDG_CONFIG_DIR/mopidy/mopidy.conf'] config_overrides = [] # TODO: decide if we want to avoid this boilerplate some how. # Initial config without extensions to bootstrap logging. logging_config, _ = config_lib.load(config_files, [], config_overrides) log.setup_root_logger() log.setup_console_logging(logging_config, options.verbosity_level) extensions = ext.load_extensions() config, errors = config_lib.load( config_files, extensions, config_overrides) log.setup_log_levels(config) if not config['local']['media_dir']: logging.warning('Config value local/media_dir is not set.') return # TODO: missing error checking and other default setup code. tracks = [] def store(data): track = translator(data) tracks.append(track) logging.debug('Added %s', track.uri) def debug(uri, error, debug): logging.warning('Failed %s: %s', uri, error) logging.debug('Debug info for %s: %s', uri, debug) logging.info('Scanning %s', config['local']['media_dir']) scanner = Scanner(config['local']['media_dir'], store, debug) try: scanner.start() except KeyboardInterrupt: scanner.stop() logging.info('Done scanning; writing tag cache...') for row in mpd_translator.tracks_to_tag_cache_format( tracks, config['local']['media_dir']): if len(row) == 1: print ('%s' % row).encode('utf-8') else: print ('%s: %s' % row).encode('utf-8') logging.info('Done writing tag cache')
def test_tag_cache_supports_directories(self): track = Track(uri='file:///dir/subdir/folder/song.mp3') formated = self.translate(track) result = translator.tracks_to_tag_cache_format([track], self.media_dir) result = self.consume_headers(result) dir_data, result = self.consume_directory(result) song_list, result = self.consume_song_list(result) self.assertEqual(len(song_list), 0) self.assertEqual(len(result), 0) song_list, result = self.consume_song_list(dir_data) self.assertEqual(len(result), 0) self.assertEqual(formated, song_list)
def test_tag_cache_suports_directories(self): track = Track(uri='file:///dir/subdir/folder/song.mp3') formated = self.translate(track) result = translator.tracks_to_tag_cache_format([track]) result = self.consume_headers(result) folder, result = self.consume_directory(result) song_list, result = self.consume_song_list(result) self.assertEqual(len(song_list), 0) self.assertEqual(len(result), 0) song_list, result = self.consume_song_list(folder) self.assertEqual(len(result), 0) self.assertEqual(song_list, formated)
def test_tag_cache_supports_directories(self): track = Track(uri="file:///dir/subdir/folder/song.mp3") formated = self.translate(track) result = translator.tracks_to_tag_cache_format([track], self.media_dir) result = self.consume_headers(result) dir_data, result = self.consume_directory(result) song_list, result = self.consume_song_list(result) self.assertEqual(len(song_list), 0) self.assertEqual(len(result), 0) song_list, result = self.consume_song_list(dir_data) self.assertEqual(len(result), 0) self.assertEqual(formated, song_list)
def test_tag_cache_supports_multiple_tracks(self): tracks = [Track(uri="file:///dir/subdir/song1.mp3"), Track(uri="file:///dir/subdir/song2.mp3")] formated = [] formated.extend(self.translate(tracks[0])) formated.extend(self.translate(tracks[1])) result = translator.tracks_to_tag_cache_format(tracks, self.media_dir) result = self.consume_headers(result) song_list, result = self.consume_song_list(result) self.assertEqual(formated, song_list) self.assertEqual(len(result), 0)
def test_tag_cache_supports_multiple_tracks(self): tracks = [ Track(uri='file:///dir/subdir/song1.mp3'), Track(uri='file:///dir/subdir/song2.mp3'), ] formated = [] formated.extend(self.translate(tracks[0])) formated.extend(self.translate(tracks[1])) result = translator.tracks_to_tag_cache_format(tracks, self.media_dir) result = self.consume_headers(result) song_list, result = self.consume_song_list(result) self.assertEqual(formated, song_list) self.assertEqual(len(result), 0)
def commit(self): directory, basename = os.path.split(self._tag_cache_file) # TODO: cleanup directory/basename.* files. tmp = tempfile.NamedTemporaryFile( prefix=basename + '.', dir=directory, delete=False) try: for row in mpd_translator.tracks_to_tag_cache_format( self._tracks.values(), self._media_dir): if len(row) == 1: tmp.write(('%s\n' % row).encode('utf-8')) else: tmp.write(('%s: %s\n' % row).encode('utf-8')) os.rename(tmp.name, self._tag_cache_file) finally: if os.path.exists(tmp.name): os.remove(tmp.name)
def test_tag_cache_supports_multiple_tracks_in_dirs(self): tracks = [Track(uri="file:///dir/subdir/song1.mp3"), Track(uri="file:///dir/subdir/folder/song2.mp3")] formated = [] formated.append(self.translate(tracks[0])) formated.append(self.translate(tracks[1])) result = translator.tracks_to_tag_cache_format(tracks, self.media_dir) result = self.consume_headers(result) dir_data, result = self.consume_directory(result) song_list, song_result = self.consume_song_list(dir_data) self.assertEqual(formated[1], song_list) self.assertEqual(len(song_result), 0) song_list, result = self.consume_song_list(result) self.assertEqual(len(result), 0) self.assertEqual(formated[0], song_list)
def commit(self): directory, basename = os.path.split(self._tag_cache_file) # TODO: cleanup directory/basename.* files. tmp = tempfile.NamedTemporaryFile(prefix=basename + '.', dir=directory, delete=False) try: for row in mpd_translator.tracks_to_tag_cache_format( self._tracks.values(), self._media_dir): if len(row) == 1: tmp.write(('%s\n' % row).encode('utf-8')) else: tmp.write(('%s: %s\n' % row).encode('utf-8')) os.rename(tmp.name, self._tag_cache_file) finally: if os.path.exists(tmp.name): os.remove(tmp.name)
def test_tag_cache_suports_sub_directories(self): track = Track(uri='file:///dir/subdir/folder/sub/song.mp3') formated = self.translate(track) result = translator.tracks_to_tag_cache_format([track]) result = self.consume_headers(result) folder, result = self.consume_directory(result) song_list, result = self.consume_song_list(result) self.assertEqual(len(song_list), 0) self.assertEqual(len(result), 0) folder, result = self.consume_directory(folder) song_list, result = self.consume_song_list(result) self.assertEqual(len(result), 0) self.assertEqual(len(song_list), 0) song_list, result = self.consume_song_list(folder) self.assertEqual(len(result), 0) self.assertEqual(song_list, formated)
def test_tag_cache_supports_multiple_tracks_in_dirs(self): tracks = [ Track(uri='file:///dir/subdir/song1.mp3'), Track(uri='file:///dir/subdir/folder/song2.mp3'), ] formated = [] formated.append(self.translate(tracks[0])) formated.append(self.translate(tracks[1])) result = translator.tracks_to_tag_cache_format(tracks, self.media_dir) result = self.consume_headers(result) dir_data, result = self.consume_directory(result) song_list, song_result = self.consume_song_list(dir_data) self.assertEqual(formated[1], song_list) self.assertEqual(len(song_result), 0) song_list, result = self.consume_song_list(result) self.assertEqual(len(result), 0) self.assertEqual(formated[0], song_list)
def test_empty_tag_cache_has_header(self): result = translator.tracks_to_tag_cache_format([], self.media_dir) result = self.consume_headers(result)
def test_tag_cache_has_header(self): track = Track(uri='file:///dir/subdir/song.mp3') result = translator.tracks_to_tag_cache_format([track], self.media_dir) result = self.consume_headers(result)
def test_tag_cache_has_header(self): track = Track(uri='file:///dir/subdir/song.mp3') result = translator.tracks_to_tag_cache_format([track]) result = self.consume_headers(result)
def test_empty_tag_cache_has_header(self): result = translator.tracks_to_tag_cache_format([]) result = self.consume_headers(result)