KODI - getPlayListId() 缺少参数
KODI - getPlayListId() missing argument
我正在尝试 mod AutoResume
KODI
的插件。现在 addon
只保存当前播放歌曲的一个位置。重启后它会播放那首歌然后停止。
但我希望它开始播放歌曲,然后播放之前播放的整个播放列表。
所以我尝试更改代码,但我遇到了问题。
我正在尝试像这样读取播放列表 ID:
mediaFile = xbmc.Player().getPlayingFile()
position = xbmc.Player().getTime()
# The line in question:
playList = xbmc.PlayList().getPlayListId()
# Write info to file
f = open('/home/pi/autoresume.txt', 'w')
f.write(mediaFile)
f.write('\n')
f.write(repr(position))
f.write('\n')
f.write(repr(playList))
f.close()
但是 python 给了我这个:
-->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.TypeError'>
Error Contents: function takes exactly 1 argument (0 given)
Traceback (most recent call last):
File "/home/pi/.kodi/addons/service.autoResume-master/default.py", line 79, in <module>
recordPosition()
File "/home/pi/.kodi/addons/service.autoResume-master/default.py", line 59, in recordPosition
playList = xbmc.PlayList().getPlayListId()
TypeError: function takes exactly 1 argument (0 given)
-->End of Python script error report<--
如果我理解正确,getPlaylistId() 中缺少参数,但此方法不需要参数:
http://mirrors.xbmc.org/docs/python-docs/stable/xbmc.html#PlayList-getPlayListId
我做错了什么?
如果您在 class 中,您是否尝试过 getPlayListId(self)?
XBMC 具有以下类型,如果您需要播放列表的一些信息,则必须使用这些类型:
- xbmc.PLAYLIST_MUSIC
- xbmc.PLAYLIST_VIDEO
因此对于您的示例,您必须从您想要的播放列表中选择此信息,因此如果您想要拥有音乐播放列表 ID,则必须执行以下操作:
xbmc.PlayList(xbmc.PLAYLIST_MUSIC).getPlayListId()
查看此 link 了解更多信息:
http://www.programcreek.com/python/example/77742/xbmc.PLAYLIST_VIDEO
我遇到了同样的问题。我最终改用了 jsonrpc。唯一需要注意的是,您可以在没有播放列表的情况下播放视频文件,您必须使用
进行检查
xbmc.Player().getPlayingFile()
我认为 getPlayListId 的目的是获取您已经使用过的播放列表对象并找到它的 id...不一定找到当前播放的播放列表。不过我可能是错的。
有 3 种可能 "playlists"。 0 是音频,1 是视频,不确定 2。我轮询所有 3 并写入数据库以保留我发送到列表的任何内容。这些是我使用的:
plid[0] = json.loads(xbmc.executeJSONRPC(
'{"jsonrpc":"2.0", "method": "Playlist.GetItems", "params":{"properties":["file"], "playlistid":0'
+ '},"id":0}'))
plid[1] = json.loads(xbmc.executeJSONRPC(
'{"jsonrpc":"2.0", "method": "Playlist.GetItems", "params":{"properties":["file"], "playlistid":1'
+ '},"id":1}'))
plid[2] = json.loads(xbmc.executeJSONRPC(
'{"jsonrpc":"2.0", "method": "Playlist.GetItems", "params":{"properties":["file"], "playlistid":2'
+ '},"id":2}'))
编辑:
我只是找到了一种更简单的方法来查看您是否需要 getPlayingFile()。如果您使用 jsonrpc 找到活动播放器,然后检查播放媒体的播放列表位置,-1 的位置表示它不在播放列表中:
data = json.loads(xbmc.executeJSONRPC('{"jsonrpc":"2.0", "method":"Player.GetActivePlayers", "id":0}'))
if xbmc.PlayList(data["result"][0]["playerid"]).getposition() < 0:
# playing file outside of play list
我正在尝试 mod AutoResume
KODI
的插件。现在 addon
只保存当前播放歌曲的一个位置。重启后它会播放那首歌然后停止。
但我希望它开始播放歌曲,然后播放之前播放的整个播放列表。
所以我尝试更改代码,但我遇到了问题。
我正在尝试像这样读取播放列表 ID:
mediaFile = xbmc.Player().getPlayingFile()
position = xbmc.Player().getTime()
# The line in question:
playList = xbmc.PlayList().getPlayListId()
# Write info to file
f = open('/home/pi/autoresume.txt', 'w')
f.write(mediaFile)
f.write('\n')
f.write(repr(position))
f.write('\n')
f.write(repr(playList))
f.close()
但是 python 给了我这个:
-->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.TypeError'>
Error Contents: function takes exactly 1 argument (0 given)
Traceback (most recent call last):
File "/home/pi/.kodi/addons/service.autoResume-master/default.py", line 79, in <module>
recordPosition()
File "/home/pi/.kodi/addons/service.autoResume-master/default.py", line 59, in recordPosition
playList = xbmc.PlayList().getPlayListId()
TypeError: function takes exactly 1 argument (0 given)
-->End of Python script error report<--
如果我理解正确,getPlaylistId() 中缺少参数,但此方法不需要参数: http://mirrors.xbmc.org/docs/python-docs/stable/xbmc.html#PlayList-getPlayListId
我做错了什么?
如果您在 class 中,您是否尝试过 getPlayListId(self)?
XBMC 具有以下类型,如果您需要播放列表的一些信息,则必须使用这些类型:
- xbmc.PLAYLIST_MUSIC
- xbmc.PLAYLIST_VIDEO
因此对于您的示例,您必须从您想要的播放列表中选择此信息,因此如果您想要拥有音乐播放列表 ID,则必须执行以下操作:
xbmc.PlayList(xbmc.PLAYLIST_MUSIC).getPlayListId()
查看此 link 了解更多信息: http://www.programcreek.com/python/example/77742/xbmc.PLAYLIST_VIDEO
我遇到了同样的问题。我最终改用了 jsonrpc。唯一需要注意的是,您可以在没有播放列表的情况下播放视频文件,您必须使用
进行检查xbmc.Player().getPlayingFile()
我认为 getPlayListId 的目的是获取您已经使用过的播放列表对象并找到它的 id...不一定找到当前播放的播放列表。不过我可能是错的。
有 3 种可能 "playlists"。 0 是音频,1 是视频,不确定 2。我轮询所有 3 并写入数据库以保留我发送到列表的任何内容。这些是我使用的:
plid[0] = json.loads(xbmc.executeJSONRPC(
'{"jsonrpc":"2.0", "method": "Playlist.GetItems", "params":{"properties":["file"], "playlistid":0'
+ '},"id":0}'))
plid[1] = json.loads(xbmc.executeJSONRPC(
'{"jsonrpc":"2.0", "method": "Playlist.GetItems", "params":{"properties":["file"], "playlistid":1'
+ '},"id":1}'))
plid[2] = json.loads(xbmc.executeJSONRPC(
'{"jsonrpc":"2.0", "method": "Playlist.GetItems", "params":{"properties":["file"], "playlistid":2'
+ '},"id":2}'))
编辑: 我只是找到了一种更简单的方法来查看您是否需要 getPlayingFile()。如果您使用 jsonrpc 找到活动播放器,然后检查播放媒体的播放列表位置,-1 的位置表示它不在播放列表中:
data = json.loads(xbmc.executeJSONRPC('{"jsonrpc":"2.0", "method":"Player.GetActivePlayers", "id":0}'))
if xbmc.PlayList(data["result"][0]["playerid"]).getposition() < 0:
# playing file outside of play list