Как проверить значение, чтобы перезаписать их в 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. Как вы пишете код для Python, используя оператор if, который я хочу проверить в настройках с идентификатором, если оно имеет значение true?
Во-вторых, я использую этот код, чтобы позволить мне перезаписать значение в файле settings.xml:
self.settings.setSetting(id="myidname.enabled", value="true")
Это не позволит мне перезаписать значение. Как вы пишете код для Python, чтобы позволить мне перезаписать значение в settings.xml в той же строке, что и идентификатор?
Расположение файла для 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 ответ
В вашем коде есть странные вещи.
Во-первых, похоже, что вы используете xbmc.getSetting()
- эти функции не существуют в модуле xbmc. Чтобы получить (и установить) настройки для вашего дополнения, вам нужно использовать методы getSetting()
а также setSetting()
к примеру xbmcaddon.Addon()
,
Поэтому, чтобы получить значение (bool) для "myidname.enabled" (действительно ли это определенный идентификатор настроек? Пожалуйста, покажите мне ваш файл 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:
Settings.xml, где определены параметры. Это файл, который вы (как автор дополнения) должны определить. Это должно быть расположено в
xbmc\addons\script.tvguide\resources\settings.xml
,(Сгенерированный) пользовательский файл settings.xml, в котором XBMC хранит выбранные значения. Это расположено в
xbmc\userdata\addon_data\script.tvguide\resources\settings.xml
, Вы не должны изменять его.
Кажется, вы смешали эти файлы. Первый не должен иметь свойства "value"! Измените этот файл, например:
<?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>