def main(): debug = '--debug' in sys.argv setup_logger(debug=debug) logger = logging.getLogger(__name__) logger.info('{} mode.'.format('Debug' if debug else 'Release')) pubsub_gateway, pubsub_server = run_pubsub() # runs in another thread app = App() app.initialize() player = app.player live_lyric = LiveLyric() live_lyric_publisher = LiveLyricPublisher(pubsub_gateway) live_lyric.sentence_changed.connect(live_lyric_publisher.publish) player.position_changed.connect(live_lyric.on_position_changed) player.playlist.song_changed.connect(live_lyric.on_song_changed) event_loop = asyncio.get_event_loop() event_loop.create_task(run(app, live_lyric)) try: event_loop.run_forever() except KeyboardInterrupt: # NOTE: gracefully shutdown? pubsub_server.close() event_loop.close()
def __init__(self): live_lyric = LiveLyric() live_lyric_publisher = LiveLyricPublisher(self.pubsub_gateway) self.live_lyric = live_lyric self._live_lyric_publisher = live_lyric_publisher live_lyric.sentence_changed.connect(live_lyric_publisher.publish) self.player.position_changed.connect(live_lyric.on_position_changed) self.playlist.song_changed.connect(live_lyric.on_song_changed)
def __init__(self, player_kwargs=None): self.player = Player(app=self, **(player_kwargs or {})) self.playlist = self.player.playlist self.library = Library() self.live_lyric = LiveLyric() self.protocol = FuoProcotol(self) self.plugin_mgr = PluginsManager(self) self.version_mgr = VersionManager(self)
def __init__(self): locale.setlocale(locale.LC_NUMERIC, 'C') self.player = MpvPlayer() self.player.initialize() self.playlist = self.player.playlist self.library = Library() self.live_lyric = LiveLyric() self.plugin_mgr = PluginsManager(self) self.version_mgr = VersionManager(self)
def attach_attrs(app): """初始化 app 属性""" loop = asyncio.get_event_loop() app.library = Library(app.config.PROVIDERS_STANDBY) app.live_lyric = LiveLyric() player_kwargs = dict( audio_device=bytes(app.config.MPV_AUDIO_DEVICE, 'utf-8')) app.player = Player(app=app, **(player_kwargs or {})) app.playlist = app.player.playlist app.plugin_mgr = PluginsManager(app) app.request = Request() app.task_mgr = TaskManager(app, loop) app.fm = FM(app) if app.mode & (app.DaemonMode | app.GuiMode): app.version_mgr = VersionManager(app) if app.mode & app.DaemonMode: app.server = FuoServer(app) app.pubsub_gateway = PubsubGateway() app._ll_publisher = LiveLyricPublisher(app.pubsub_gateway) if app.mode & app.GuiMode: from feeluown.uimodels.provider import ProviderUiManager from feeluown.uimodels.playlist import PlaylistUiManager from feeluown.uimodels.my_music import MyMusicUiManager from feeluown.uimodels.collection import CollectionUiManager from feeluown.collection import CollectionManager from .browser import Browser from .hotkey import HotkeyManager from .image import ImgManager from .theme import ThemeManager from .tips import TipsManager from .ui import Ui from .tray import Tray # GUI 的一些辅助管理模块 app.coll_mgr = CollectionManager(app) app.theme_mgr = ThemeManager(app) app.tips_mgr = TipsManager(app) app.hotkey_mgr = HotkeyManager(app) app.img_mgr = ImgManager(app) # GUI 组件的数据管理模块 app.pvd_uimgr = ProviderUiManager(app) app.pl_uimgr = PlaylistUiManager(app) app.mymusic_uimgr = MyMusicUiManager(app) app.coll_uimgr = CollectionUiManager(app) app.browser = Browser(app) app.ui = Ui(app) if app.config.ENABLE_TRAY: app.tray = Tray(app) app.show_msg = app.ui.magicbox.show_msg
async def test_no_song_changed(): song = FakeSong() live_lyric = LiveLyric() live_lyric.on_song_changed(song) await asyncio.sleep(0.1) live_lyric.on_position_changed(60) assert live_lyric.current_sentence == '互いのすべてを 知りつくすまでが'
def test_all(self): song = FakeSong() live_lyric = LiveLyric() live_lyric.on_song_changed(song) live_lyric.on_position_changed(60) self.assertEqual(live_lyric.current_sentence, '互いのすべてを 知りつくすまでが')
def attach_attrs(app): """初始化 app 属性""" app.library = Library() app.live_lyric = LiveLyric() player_kwargs = dict( audio_device=bytes(app.config.MPV_AUDIO_DEVICE, 'utf-8') ) app.player = Player(app=app, **(player_kwargs or {})) app.playlist = app.player.playlist app.plugin_mgr = PluginsManager(app) app.request = Request() app._g = {} if app.mode & (app.DaemonMode | app.GuiMode): app.version_mgr = VersionManager(app) if app.mode & app.GuiMode: from feeluown.widgets.collections import CollectionsModel from feeluown.uimodels.provider import ProviderUiManager from feeluown.uimodels.playlist import PlaylistUiManager from feeluown.uimodels.my_music import MyMusicUiManager from feeluown.collection import CollectionManager from .browser import Browser from .hotkey import HotkeyManager from .image import ImgManager from .theme import ThemeManager from .tips import TipsManager from .ui import Ui # GUI 的一些辅助管理模块 app.coll_mgr = CollectionManager(app) app.theme_mgr = ThemeManager(app) app.tips_mgr = TipsManager(app) app.hotkey_mgr = HotkeyManager(app) app.img_mgr = ImgManager(app) # GUI 组件的数据管理模块 app.pvd_uimgr = ProviderUiManager(app) app.pl_uimgr = PlaylistUiManager(app) app.mymusic_uimgr = MyMusicUiManager(app) app.collections = CollectionsModel(parent=app) app.browser = Browser(app) app.ui = Ui(app) app.show_msg = app.ui.magicbox.show_msg
def attach_attrs(app, **player_kwargs): """初始化 app 属性""" app.library = Library() app.live_lyric = LiveLyric() app.protocol = FuoProcotol(app) app.plugin_mgr = PluginsManager(app) app.version_mgr = VersionManager(app) app.request = Request() app._g = {} app.player = Player(app=app, **(player_kwargs or {})) app.playlist = app.player.playlist if app.mode & app.GuiMode: from feeluown.widgets.collections import CollectionsModel from feeluown.uimodels.provider import ProviderUiManager from feeluown.uimodels.playlist import PlaylistUiManager from feeluown.uimodels.my_music import MyMusicUiManager from feeluown.protocol import CollectionManager from .browser import Browser from .hotkey import HotkeyManager from .image import ImgManager from .theme import ThemeManager from .tips import TipsManager from .ui import Ui # GUI 的一些辅助管理模块 app.coll_mgr = CollectionManager(app) app.theme_mgr = ThemeManager(app) app.tips_mgr = TipsManager(app) app.hotkey_mgr = HotkeyManager(app) app.img_mgr = ImgManager(app) # GUI 组件的数据管理模块 app.pvd_uimgr = ProviderUiManager(app) app.pl_uimgr = PlaylistUiManager(app) app.mymusic_uimgr = MyMusicUiManager(app) app.collections = CollectionsModel(parent=app) app.browser = Browser(app) app.ui = Ui(app) app.show_msg = app.ui.magicbox.show_msg