def test_should_fetch_track_details(self): library = Library(self.library_name).create(self.folder_name) library_filter = library.view().by("ALBUM").filter() album_title = library_filter.ids[0] track = library_filter.using(album_title).ids[0] track_id = track["_id"] tags = library.track_details(track_id) self.assertTrue(tags)
def test_should_save_tags(self): library = Library(self.library_name).create(self.folder_name, None) library_filter = library.view().by("ALBUM").filter() album_title = library_filter.ids[0] track = library_filter.using(album_title).ids[0] track_id = track["_id"] tags = library.track_details(track_id) from time import time now = str(time() * 1000) tags["ALBUM"] = now library.store(track_id, tags) path = tags["PATH"] from tags.tagreader import TagReader saved_tags = TagReader().readfile(path) self.assertEquals(now, saved_tags["ALBUM"])
def test_should_store_document(self): library = Library(self.library_name).create(self.folder_name, None) library_filter = library.view().by("ALBUM").filter() album_title = library_filter.ids[0] track = library_filter.using(album_title).ids[0] track_id = track["_id"] tags = library.track_details(track_id) from time import time now = str(time() * 1000) tags["ALBUM"] = now library.store(track_id, tags) from pymongo import MongoClient client = MongoClient() db = client[self.library_name] self.assertEquals(now, db.tags.find_one({"_id": track_id})["ALBUM"])
class Ui: def __init__(self): super().__init__() self.library = Library('music').create(folder_name, Listener()) views = ['COMPOSER', 'GENRE', 'ALBUM', 'ARTIST'] library_view = self.library.view() for view in views: self.filters = library_view.by(view) self.filters = self.filters.filter() self.track_selection = False def prompt(self, items): from prompt_toolkit.key_binding.manager import KeyBindingManager from prompt_toolkit.keys import Keys key_binding_manager = KeyBindingManager() @key_binding_manager.registry.add_binding(Keys.F4) def _(event): self.filters.remove_current_filter() self.run() @key_binding_manager.registry.add_binding(Keys.F1) def _(event): if self.filters.current_view() != 'TITLE': first_item = self.filters.ids[0] event.cli.current_buffer.insert_text(first_item) return get_input('> ', completer=WordCompleter(items, ignore_case=True), key_bindings_registry=key_binding_manager.registry, display_completions_in_columns=True) def handle_track_selection(self): songs = [format_song(song) for (song) in self.filters.ids] for song in songs: print(song) title = self.prompt(songs) index = songs.index(title) song = self.filters.ids[index] track_details = self.library.track_details(song['_id']) from bson.json_util import dumps print(dumps(track_details)) self.track_selection = True def get_selection(self): if self.track_selection: for action in actions: print(action) self.prompt(actions) else: if self.filters.current_view() == 'TITLE': self.handle_track_selection() else: for item in self.filters.ids: print(item) selection = self.prompt(self.filters.ids) self.filters.using(selection) self.track_selection = False def run(self): while True: self.get_selection()