Esempio n. 1
0
    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)
Esempio n. 2
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)
Esempio n. 3
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')
Esempio n. 4
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")
Esempio n. 5
0
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')
Esempio n. 6
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], 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)
Esempio n. 7
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)
Esempio n. 8
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)
Esempio n. 9
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])
Esempio n. 10
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])

        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])
Esempio n. 11
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], 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)
Esempio n. 12
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)
Esempio n. 13
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)
Esempio n. 14
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])
Esempio n. 15
0
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')
Esempio n. 16
0
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')
Esempio n. 17
0
    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)
Esempio n. 18
0
    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)
Esempio n. 19
0
    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)
Esempio n. 20
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)
Esempio n. 21
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)
Esempio n. 22
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)
Esempio n. 23
0
    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)
Esempio n. 24
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)
Esempio n. 25
0
    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)
Esempio n. 26
0
    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)
Esempio n. 27
0
 def test_empty_tag_cache_has_header(self):
     result = translator.tracks_to_tag_cache_format([], self.media_dir)
     result = self.consume_headers(result)
Esempio n. 28
0
 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)
Esempio n. 29
0
 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)
Esempio n. 30
0
 def test_empty_tag_cache_has_header(self):
     result = translator.tracks_to_tag_cache_format([])
     result = self.consume_headers(result)