# addon = xbmcaddon.Addon() xml_file = "".join(get_xml_file_path()) if not os.path.isfile(xml_file): # 1. Use default file copy_default_xml_file(xml_file)
# 2. Toggle update update_xml_file()
elems = ET.parse(open(xml_file, "r")).getroot()
if channel_name is None: # Return list of channels channels = elems.findall("channel") ret = [] for channel in channels: ret.append({ 'name': channel.findtext("name"), # 'thumbnail': item.findtext("thumbnail"), # 'fanart': item.findtext("fanart"), }) return ret else: # Return list of items for channel ret = [] channels = elems.findall("channel") for channel in channels: if channel.findtext("name") == channel_name: items = channel.find("items").findall("item") for item in items: it = {} for child in item: it[child.tag] = child.text ret.append(it) break return ret
mode = args.get('mode', None) if mode is None: channels = fetch_channels_from_xml(addon.getSetting('xml_filename')) listing = [] for channel in channels: channel_name = channel.get('name', '?') url = build_url({'mode': 'channel', 'channel_name': channel_name}) li = xbmcgui.ListItem(channel_name, iconImage='DefaultFolder.png')
# Set 'IsPlayable' property to 'true'. # This is mandatory for playable items! li.setProperty('IsPlayable', 'true')
# Add the list item to a virtual Kodi folder. # is_folder = False means that this item won't open any sub-list. is_folder = True
# Add our item to the listing as a 3-element tuple. listing.append((url, li, is_folder)) # xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, # listitem=li, isFolder=True)
Для начала хочу добиться хотя-бы вывода в список тега: <service
Проблеммы:
1. Ввел новый адрес .xml в настройках.
При обновлении выдает ошибку.
Лог:
13:59:10 T:2904 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.TypeError'>
Error Contents: encode() argument 1 must be string, not None
Traceback (most recent call last):
File "D:\kodi-16.1-Jarvis\portable_data\addons\plugin.video.deutsche_ sender-master\addon.py", line 131, in <module>
update_xml_file()
File "D:\kodi-16.1-Jarvis\portable_data\addons\plugin.video.deutsche_ sender-master\addon.py", line 62, in update_xml_file
o.write(r.text.encode(r.encoding))
TypeError: encode() argument 1 must be string, not None
-->End of Python script error report<--
Удалил - o.write(r.text.encode(r.encoding))
Раскоментировал - # o.write(r.text.encode('utf-8')) # Seems wrong for iso*-input
Файл начал обновляться без ошибок.
2. Дальше тупик , какие-бы теги не подставлял в addon.py: , из тела своего .xml
Список не появляется
В кодировке ли дело , еще в чем ? Не пойму за недостатком знаний.
Посему прошу помощи сообщества. Растолкуйте неразумному как сделать правильно.
Исходный код оригинального .xml , про кодировку в теле ничего не имеет.
У моего - <?xml version="1.0" encoding="UTF-8"?>
Надеюсь на помощь.
У вас задача модифицировать исходный плагин или распарсить свой xml? Если последнее, то открываете любой по ElementTree и вперед. Для начала потренируетесь на кошках, в смысле, на скрипте вне Коди.
__________________
Координатор русского перевода Kodi:
https://www.transifex.com/projects/p/kodi-main/
------------------------------
Raspberry PI 2 + LibreELEC 8 (Kodi 17)
Samsung Galaxy Tab A 10.1 + Kodi 17 for Android
------------------------------
Читаем и пополняем Википедию форума: http://xbmc.ru/wiki
------------------------------ На любые личные сообщения, не связанные с переводом Kodi, не отвечаю. Для обсуждений и советов есть форум.