python - 如何检查 xbmc 中覆盖它们的值?

标签 python xbmc

我正在编写我的 python 脚本,因为我想检查 settings.xml 中的值是否为 true 或 false。我想检查 xml 文件中的值:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<settings>
<category label="30101">
   <setting id="myidname.enabled" value="false"/>
</category>
</settings>

我已经尝试过这个:

import xbmc 
import xbmcgui
import xbmcplugin
ACTION_BACKSPACE = 110
def onAction(self, action):
if action == ACTION_BACKSPACE:
   if self.Settings == xbmc.getSetting("myidname.enabled") == True:
      self.settings.setSetting("id=myidname.enabled", "value=false")

它不会让我检查 settings.xml 中的值是否为 true。如何使用 if 语句编写 python 代码,我想检查 id 的设置是否将值设置为 true?

其次,我使用此代码来覆盖 settings.xml 中的值:

self.settings.setSetting(id="myidname.enabled", value="true")

它不会让我覆盖该值。你如何编写Python代码以允许我覆盖settings.xml中与id位于同一行的值?

settings.xml 的文件位置位于:c:\users\user\appdata\roaming\xbmc\addons\script.tvguide\resources。

这是更新 xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<settings>
    <category label="30101">
    <setting id="myid.enabled" value="false"/>
        <setting id="myid1.enabled" value="false"/>
        <setting id="myid2.enabled" value="false"/>
        <setting id="myid3.enabled" value="false"/>
        <setting id="myid4.enabled" value="false"/>
        <setting id="myid5.enabled" value="false"/>
        <setting id="myid6.enabled" value="false"/>
        <setting id="myid7.enabled" value="false"/>
    </category>
</settings>

最佳答案

你的代码中有一些奇怪的东西。

首先,您似乎使用 xbmc.getSetting() - xbmc 模块中不存在这些函数。要获取(和设置)附加组件的设置,您需要使用方法 getSetting()setSetting()xbmcaddon.Addon() 的实例.

因此,要获取“myidname.enabled”的( bool )值(这真的是定义的设置ID吗?请显示您的settings.xml),您需要使用:

import xbmcaddon
addon = xbmcaddon.Addon()
myidnmame_enabled = addon.getSetting('myidname.enabled') == 'true'

请注意,getSetting() 始终返回字符串!要获取 bool 定义设置的 bool 值,我建议与 'true' 进行比较.

要设置设置,只需使用 setSetting() :

import xbmcaddon
addon = xbmcaddon.Addon()
addon.setSetting('setting_id', 'true')

例如,看看其他附加组件。

编辑:

有两个相关的settings.xml:

  1. 定义设置的settings.xml。这是您(作为附加组件作者)需要定义的文件。它应该位于xbmc\addons\script.tvguide\resources\settings.xml .

  2. (自动生成的)用户相关的 settings.xml,XBMC 在其中存储所选值。该地址位于 xbmc\userdata\addon_data\script.tvguide\resources\settings.xml 。您不应该修改它。

看来您混合了这些文件。第一个不应该有“值”属性! 将此文件修改为例如:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<settings>
    <category label="30101">
    <setting id="myid.enabled" value="false"/>
        <setting id="myid1.enabled" type="bool" label="MY ID1" default="false"/>
        <setting id="myid2.enabled" type="bool" label="MY ID2" default="false"/>
        <setting id="myid3.enabled" type="bool" label="MY ID3" default="false"/>
        <setting id="myid4.enabled" type="bool" label="MY ID4" default="false"/>
        <setting id="myid5.enabled" type="bool" label="MY ID5" default="false"/>
        <setting id="myid6.enabled" type="bool" label="MY ID6" default="false"/>
        <setting id="myid7.enabled" type="bool" label="MY ID7" default="false"/>
    </category>
</settings>

关于python - 如何检查 xbmc 中覆盖它们的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21210451/

相关文章:

python - 使用 Imaplib 在 Python 中访问聊天文件夹

Python Setuptools 分发 : Optimize Option in setup. py?

python - 使用 Python 脚本切换进程(运行时终止,不运行时启动)

raspberry-pi - Raspberry PI 上 XBMC 上的脏区域

python - 在 python 2 中为类设置 __doc__

python - 比较两个 df 以发现缺失的行

linux - 无法从 shell 脚本终止进程

ios - 在 ios 上动态加载 libspotify

javascript - WebRTC 到 Node.JS 服务器并作为 RTP 传输

python - 容器正在运行超出物理内存的较大文件