Exemple #1
0
def main():
    parser = setup_argparse()
    args = parser.parse_args()

    debug = args.debug
    mpv_audio_device = args.mpv_audio_device

    setup_logger(debug=debug)

    player = MpvPlayer(audio_device=bytes(mpv_audio_device, 'utf-8'))
    player.initialize()
    library = Library()
    library.register(lp)
    library.register(np)
    library.register(qp)

    pubsub_gateway, pubsub_server = run_pubsub()

    app = App(player, library, pubsub_gateway)

    live_lyric = app.live_lyric
    event_loop = asyncio.get_event_loop()
    event_loop.create_task(run_server(app, live_lyric))
    try:
        event_loop.run_forever()
        logger.info('Event loop stopped.')
    except KeyboardInterrupt:
        # NOTE: gracefully shutdown?
        pass
    finally:
        pubsub_server.close()
        event_loop.close()
Exemple #2
0
class App(object):
    CliMode = 0x0001
    GuiMode = 0x0010

    mode = 0x0000

    def __init__(self, player=None):
        if player is None:
            locale.setlocale(locale.LC_NUMERIC, 'C')
            self.player = MpvPlayer()
            self.player.initialize()
        else:
            self.player = player
        self.playlist = self.player.playlist
        self.library = Library()
        self.live_lyric = LiveLyric()

        self.plugin_mgr = PluginsManager(self)
        self.version_mgr = VersionManager(self)

    def initialize(self):
        self.player.position_changed.connect(self.live_lyric.on_position_changed)
        self.playlist.song_changed.connect(self.live_lyric.on_song_changed)

        self.plugin_mgr.scan()
        loop = asyncio.get_event_loop()
        loop.call_later(10, partial(loop.create_task, self.version_mgr.check_release()))
Exemple #3
0
class TestPlayer(TestCase):
    def setUp(self):
        self.player = MpvPlayer()
        self.player.initialize()

    def tearDown(self):
        self.player.shutdown()

    @skipIf(os.environ.get('TEST_ENV', 'travis'), '')
    def test_play(self):
        self.player.play(MP3_URL)
        self.player.stop()

    @skipIf(os.environ.get('TEST_ENV', 'travis'), '')
    def test_duration(self):
        # This may failed?
        self.player.play(MP3_URL)
        time.sleep(0.1)
        self.assertIsNotNone(self.player.duration)

    @skipIf(os.environ.get('TEST_ENV', 'travis'), '')
    def test_seek(self):
        self.player.play(MP3_URL)
        time.sleep(0.1)
        self.player.position = 100
Exemple #4
0
class App(object):
    def __init__(self):
        self.player = MpvPlayer()
        self.playlist = self.player.playlist
        self.source = Source()

    def initialize(self):
        self.player.initialize()
        self.source.register(local_provider)
        self.source.register(netease_provider)

    def list_providers(self):
        for provider in self.source.providers:
            yield provider

    def get_provider(self, name):
        for provider in self.source.providers:
            if provider.identifier == name:
                return provider
        return None

    def play(self, song_identifier):
        song = self.source.get_song(song_identifier)
        if song is not None:
            self.player.play_song(song)