Как проверить значение, чтобы перезаписать их в 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:

  1. Settings.xml, где определены параметры. Это файл, который вы (как автор дополнения) должны определить. Это должно быть расположено в xbmc\addons\script.tvguide\resources\settings.xml,

  2. (Сгенерированный) пользовательский файл 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>
Другие вопросы по тегам