如何检查值以在xbmc中覆盖它们?

时间:2014-01-18 22:02:15

标签: 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")

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

其次,我使用此代码允许我覆盖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>

1 个答案:

答案 0 :(得分:2)

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

首先,看起来您使用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定义设置的布尔值,我建议将其与'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。你不应该修改它。

  3. 似乎你混合了这些文件。第一个不应该有“价值”属性! 将此文件修改为例如:

    <?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>