From c59f488b1100f4b637a1b8ab1a61a0bde060c37f Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Mon, 20 May 2013 01:19:41 +0200 Subject: [PATCH] scanner: Pass in files to scan --- mopidy/scanner.py | 13 +++++++++---- tests/scanner_test.py | 6 ++++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/mopidy/scanner.py b/mopidy/scanner.py index 01d5397a..65cdc13e 100644 --- a/mopidy/scanner.py +++ b/mopidy/scanner.py @@ -58,6 +58,10 @@ def main(): tracks = [] + def find(base_directory): + for p in path.find_files(base_directory): + yield path.path_to_uri(p) + def store(data): track = translator(data) tracks.append(track) @@ -69,7 +73,8 @@ def main(): logging.info('Scanning %s', config['local']['media_dir']) - scanner = Scanner(config['local']['media_dir'], store, debug) + uris = find(config['local']['media_dir']) + scanner = Scanner(uris, store, debug) try: scanner.start() except KeyboardInterrupt: @@ -150,9 +155,9 @@ def translator(data): class Scanner(object): - def __init__(self, base_dir, data_callback, error_callback=None): + def __init__(self, uris, data_callback, error_callback=None): self.data = {} - self.files = path.find_files(base_dir) + self.uris = iter(uris) self.data_callback = data_callback self.error_callback = error_callback self.loop = gobject.MainLoop() @@ -237,7 +242,7 @@ class Scanner(object): def next_uri(self): self.data = {} try: - uri = path.path_to_uri(self.files.next()) + uri = next(self.uris) except StopIteration: self.stop() return False diff --git a/tests/scanner_test.py b/tests/scanner_test.py index ef68346e..c9671523 100644 --- a/tests/scanner_test.py +++ b/tests/scanner_test.py @@ -4,6 +4,7 @@ import unittest from mopidy.scanner import Scanner, translator from mopidy.models import Track, Artist, Album +from mopidy.utils import path as path_lib from tests import path_to_data_dir @@ -143,8 +144,9 @@ class ScannerTest(unittest.TestCase): self.data = {} def scan(self, path): - scanner = Scanner( - path_to_data_dir(path), self.data_callback, self.error_callback) + paths = path_lib.find_files(path_to_data_dir(path)) + uris = (path_lib.path_to_uri(p) for p in paths) + scanner = Scanner(uris, self.data_callback, self.error_callback) scanner.start() def check(self, name, key, value):