莫比迪亚皮

mopidyapi的Python项目详细描述


MOPIDIAPI

MopidyAPI是用于与 Mopidy通过它的JSON RPC API

MopidyAPI使用http调用rpc方法,使用websockets侦听事件。

它兼容mopidy 2.2中的所有功能。

安装

pip install mopidyapi

用法

MopidyAPI包含映射到每个the Mopidy v2.2 core API functions.的函数

例如文档中的mopidy.core.PlaybackController.pause()映射到这里的MopidyAPI.playback.pause()

快速示例

>>>frommopidyapiimportMopidyAPI>>>m=MopidyAPI()>>>tracks=m.tracklist.get_tracks()>>>tracks[0].name'I'veSeenFootage'>>>tracks[0].artists[Artist(name='Death Grips',uri='spotify:artist:5RADpgYLOuS2ZxDq7ggYYH')]>>>tracks[0]._fields('album','name','disc_no','uri','length','track_no','artists','date','bitrate')

连接到mopidy

要连接到mopidy,需要实例化一个MopidyAPI对象。 默认情况下,它将连接到位于localhost:6680的mopidy, 所以您可能不需要给构造函数任何参数。

frommopidyapiimportMopidyAPIm=MopidyAPI(host='my.mopidy.host.com',port=6680)

您还可以传递use_websockets=False,以防止启动WebSocket侦听器, 在一个单独的线程中运行。但是,事件侦听(如下所述)不适用于此集合。

调用mopidy函数

中描述的所有功能 Mopidy 2.2 core API documentationMopidyAPI中可用。

mopidy文档中命名为core.<ControllerName>Controller.<functionname>()的函数, 将使用名称MopidyAPI.<controllername>.<functionname>()

例如,您可以通过调用m.playback.pause()暂停音乐, 或者可以通过调用来搜索歌曲,例如m.library.search(artist='Rick Astley'),其中m = MopidyAPI()

函数将返回 Python native ^{} 返回数据的表示。

事件监听

您可以使用函数装饰器来标记事件到达时要调用的特定函数。参见下面的示例。

使用的事件在Mopidy's core events documentation.

frommopidyapiimportMopidyAPIm=MopidyAPI()@m.on_event('volume_changed')defprint_volume(event):print(f"Volume changed to: {event.volume}")@m.on_event('track_playback_started')defprint_newtracks(event):print(f"Started playing track: {event.track.name}")

与函数调用一样,传递的事件是namedtuples.

事件侦听器装饰器的一个重要警告, 它不会以任何方式警告您,如果您使用无效的事件名称(例如,您拼错了事件名称)。

关于选择namedtuples

的说明

为什么namedtuples

名字的选择可能看起来不寻常(甚至不方便)。 但是对于这个应用程序,它们比字典有许多优势:

1。比听写要少一些冗长。

event.tl_track.track.album.name

event['tl_track']['track']['album']['name']

2。它们打印得更整齐。

Artist(name='Death Grips', uri='spotify:artist:5RADpgYLOuS2ZxDq7ggYYH')

{'name': 'Death Grips', 'uri': 'spotify:artist:5RADpgYLOuS2ZxDq7ggYYH'}

3。namedtuples准确地表示数据的不可变性质。

允许对来自mopidy的数据进行变异可能会让人认为这会改变mopidy内部的数据,但事实显然并非如此。

…但是,我知道格言!

好吧,如果你需要.keys(),你可以使用._fields(), 如果你真的需要一个dict,你可以使用._asdict(), 它将返回一个实际的dict。

贡献

请通过github issue tracker告诉我有关bug的信息。

如果你有心情帮助我改进这个项目,也可以随便写。我不咬人:)

许可证

这个项目是根据gplv3授权的。 有关详细信息,请参见LICENSE文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Frida Java windows的逆向工程   Java术语中的对象初始化   java在何处放置maven参数化junit输入xml文件   java如何在Swift中创建以日期为键、布尔值为值的字典/地图?   java Velocity动态属性访问   java Maven站点我如何找到它们?   java JavaFX按钮在显示阶段时显示为选中状态   文件io字符串方法java赋值   java为SOAP头生成证书   java Android更改EditText的setError弹出消息的背景色   java格式存储为字符串的数字   java Testcontainers+dbrider:无法清除表X,消息:启用自动提交时无法提交。,原因:无效   java程序应该可以运行,但仍然没有输出?   Java在列表末尾添加一个节点?   java类对象中的默认构造函数做什么?   java如何更快地从映射返回键和值?