83 lines
2.0 KiB
Python
83 lines
2.0 KiB
Python
import asyncio
|
|
import argparse
|
|
|
|
from mopidy_async_client import MopidyClient
|
|
|
|
parser = argparse.ArgumentParser(description="Mopdiy FloppyPlayer")
|
|
parser.add_argument("URI_string", help="Mopdiy URI to Album/Playlist.")
|
|
args = parser.parse_args()
|
|
inputURI = args.URI_string
|
|
|
|
|
|
async def playback_started_handler(data):
|
|
print(data)
|
|
|
|
|
|
async def all_events_handler(event, data):
|
|
print(event, data)
|
|
|
|
|
|
async def main3():
|
|
if inputURI == "stop":
|
|
await stop()
|
|
elif inputURI == "current_track":
|
|
await current_track()
|
|
else:
|
|
await main1()
|
|
|
|
|
|
async def stop():
|
|
mopidy = await MopidyClient().connect()
|
|
await mopidy.playback.stop()
|
|
await mopidy.disconnect()
|
|
|
|
|
|
async def current_track():
|
|
mopidy = await MopidyClient().connect()
|
|
res = await mopidy.playback.get_current_track()
|
|
current_data = {
|
|
"Artist": res["artists"][0]["name"],
|
|
"Album": res["album"]["name"],
|
|
"Song": res["name"],
|
|
}
|
|
print(current_data)
|
|
await mopidy.disconnect()
|
|
|
|
|
|
async def main1():
|
|
link = inputURI.split(" - ")[1]
|
|
async with MopidyClient(
|
|
url="ws://127.0.0.1:6680/mopidy/ws"
|
|
) as mopidy: # close connection explicit
|
|
await mopidy.playback.stop()
|
|
await mopidy.tracklist.clear()
|
|
await mopidy.tracklist.add(uris=[link])
|
|
await mopidy.playback.play()
|
|
|
|
|
|
async def main2():
|
|
mopidy = await MopidyClient().connect()
|
|
await mopidy.playback.stop()
|
|
await mopidy.tracklist.clear()
|
|
await mopidy.tracklist.add(uris=[inputURI])
|
|
await mopidy.playback.play()
|
|
mopidy.listener.bind("track_playback_started", playback_started_handler)
|
|
mopidy.listener.bind("*", all_events_handler)
|
|
|
|
# your app logic
|
|
for i in range(10):
|
|
# res = await mopidy.tracklist.get_tracks()
|
|
res = await mopidy.playback.get_current_track()
|
|
print(res)
|
|
await asyncio.sleep(5)
|
|
|
|
# end your app logic
|
|
|
|
await mopidy.disconnect() # close connection implicit
|
|
|
|
|
|
# asyncio.run(main1())
|
|
# or
|
|
# asyncio.run(main2())
|
|
asyncio.run(main3())
|