Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины.
   

Вернуться   Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины. > Разработка > Поддержка локальной разработки модулей

Ответ
 
Опции темы Опции просмотра
Старый 28.07.2017, 16:07   #31
vl.maksime
Senior Member
 
Аватар для vl.maksime
 
Регистрация: 18.10.2015
Адрес: Donetsk, Ukraine
Сообщений: 396
По умолчанию

Можете поменять последовательность вызова команд при инициализации listItem'a? В текущей последовательности есть изъян.
Сначала вызывается метод установки списка актеров
Код:
        if major_version >= '17':
            cast = item.get('cast')
            if cast is not None:
                list_item.setCast(cast)
                del item['cast']
Потом установка свойств видео:
Код:
        if item.get('info'):
            for media, info in item['info'].iteritems():
                list_item.setInfo(media, info)
Из-за того, что cast присутствует item['cast'] и item['properties']['cast'], второй фрагмент кода затирает актерский состав установленный первым фрагментом.

Чтоб обойти эту проблему из моего дополнения, для версий KODI 17+ необходимо удалять свойство item['properties']['cast'].

Если поменять их местами, то проблема уйдет.

Последний раз редактировалось vl.maksime; 29.07.2017 в 22:32.
vl.maksime вне форума   Ответить с цитированием
 

Старый 29.07.2017, 00:02   #32
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,942
По умолчанию

Хорошо, сделаю.
__________________
Координатор русского перевода 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, не отвечаю. Для обсуждений и советов есть форум.
Roman_V_M вне форума   Ответить с цитированием
Старый 29.07.2017, 22:33   #33
vl.maksime
Senior Member
 
Аватар для vl.maksime
 
Регистрация: 18.10.2015
Адрес: Donetsk, Ukraine
Сообщений: 396
По умолчанию

Попутно, можно попросить добавить поддержку методов:
setContentLookup() - появился в 16й версии. Если правильно понял, отключает попытку плеера получить информацию о файле.
setRating() - появился в 18й версии
addSeason() - позволяет установить заголовок сезона. Появилось в 18й версии

Последний раз редактировалось vl.maksime; 30.07.2017 в 11:49.
vl.maksime вне форума   Ответить с цитированием
Старый 04.08.2017, 21:44   #34
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,942
По умолчанию

Дополнительные методы добавлены еще раньше. Сделал, как вы просили, плюс пофиксил баг с log_notice, который на самом деле писал с уровнем INFO.
__________________
Координатор русского перевода 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, не отвечаю. Для обсуждений и советов есть форум.
Roman_V_M вне форума   Ответить с цитированием
Старый 07.08.2017, 21:21   #35
vl.maksime
Senior Member
 
Аватар для vl.maksime
 
Регистрация: 18.10.2015
Адрес: Donetsk, Ukraine
Сообщений: 396
По умолчанию

Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Дополнительные методы добавлены еще раньше. Сделал, как вы просили, плюс пофиксил баг с log_notice, который на самом деле писал с уровнем INFO.
Наличие методов проверял непосредственно в модуле, установленном из репозитория. Или модуль не обновился, или изменений не было в репозитории.

Спасибо, пошел править дополнения.
vl.maksime вне форума   Ответить с цитированием
Старый 23.08.2017, 10:40   #36
vl.maksime
Senior Member
 
Аватар для vl.maksime
 
Регистрация: 18.10.2015
Адрес: Donetsk, Ukraine
Сообщений: 396
По умолчанию

Еще одно пожелание.
У метода xbmcplugin.addSortMethod() есть необязательный параметр "label2Mask"
Код:
xbmcplugin.addSortMethod(handle, sortMethod [,label2Mask])
Можете добавить опциональную поддержку это параметра?

Этот параметр необходим, чтоб задать произвольный шаблон для представления поля Label2. Например в дополнении для сортировки списка я использую метод "SORT_METHOD_NONE", при этом для этого метода по умолчанию используется шаблон "%D", который отображает длительность видео (см. скриншот 1).
Т.к. на скине есть дополнительное поле, отображающее длительность видео, это поле можно переназначить на отображение другой информации. Например, выводить туда год. Для этого в качестве параметра label2Mask достаточно передать строку "%Y", тогда в этом поле будет отображаться год (см. скриншот 2)
Миниатюры
screenshot001.png   screenshot002.png  
vl.maksime вне форума   Ответить с цитированием
Старый 23.09.2017, 20:53   #37
iks5
Junior Member
 
Регистрация: 17.08.2017
Сообщений: 1
По умолчанию

Разобрался, удалил

Последний раз редактировалось iks5; 24.09.2017 в 19:56. Причина: удалено
iks5 вне форума   Ответить с цитированием
Старый 05.01.2018, 06:45   #38
vl.maksime
Senior Member
 
Аватар для vl.maksime
 
Регистрация: 18.10.2015
Адрес: Donetsk, Ukraine
Сообщений: 396
По умолчанию

Периодически ломаются файлы *.pcl
Последнее время у меня часто ломается файл "__gettext__.pcl".

Вот последовательность ошибок, которые приводят к поломке файла:
Код:
    -->Python callback/script returned the following error<--
     - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
    Error Type: <type 'exceptions.IOError'>
    Error Contents: (13, 'Permission denied', u'\\portable_data\\userdata\\addon_data\\plugin.video.russiatv1\\__gettext__.pcl.tmp')
    Traceback (most recent call last):
      File "\portable_data\addons\plugin.video.russiatv1\default.py", line 15, in <module>
        _ = plugin.initialize_gettext()
      File "\portable_data\addons\script.module.simpleplugin\libs\simpleplugin.py", line 782, in initialize_gettext
        self._ui_strings_map = deepcopy(ui_strings_map)
      File "\portable_data\addons\script.module.simpleplugin\libs\simpleplugin.py", line 188, in __exit__
        self.flush()
      File "\portable_data\addons\script.module.simpleplugin\libs\simpleplugin.py", line 228, in flush
        move(tmp, self._filename)  # Atomic save
      File "\system\python\Lib\shutil.py", line 302, in move
        copy2(src, real_dst)
      File "\system\python\Lib\shutil.py", line 130, in copy2
        copyfile(src, dst)
      File "\system\python\Lib\shutil.py", line 82, in copyfile
        with open(src, 'rb') as fsrc:
    IOError: (13, 'Permission denied', u'\\portable_data\\userdata\\addon_data\\plugin.video.russiatv1\\__gettext__.pcl.tmp')
    -->End of Python script error report<--
Код:
    -->Python callback/script returned the following error<--
     - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
    Error Type: <type 'exceptions.IOError'>
    Error Contents: (2, 'No such file or directory', u'\\portable_data\\userdata\\addon_data\\plugin.video.russiatv1\\__gettext__.pcl.tmp')
    Traceback (most recent call last):
      File "\portable_data\addons\plugin.video.russiatv1\default.py", line 15, in <module>
        _ = plugin.initialize_gettext()
      File "\portable_data\addons\script.module.simpleplugin\libs\simpleplugin.py", line 782, in initialize_gettext
        self._ui_strings_map = deepcopy(ui_strings_map)
      File "\portable_data\addons\script.module.simpleplugin\libs\simpleplugin.py", line 188, in __exit__
        self.flush()
      File "\portable_data\addons\script.module.simpleplugin\libs\simpleplugin.py", line 228, in flush
        move(tmp, self._filename)  # Atomic save
      File "\system\python\Lib\shutil.py", line 302, in move
        copy2(src, real_dst)
      File "\system\python\Lib\shutil.py", line 130, in copy2
        copyfile(src, dst)
      File "\system\python\Lib\shutil.py", line 82, in copyfile
        with open(src, 'rb') as fsrc:
    IOError: (2, 'No such file or directory', u'\\portable_data\\userdata\\addon_data\\plugin.video.russiatv1\\__gettext__.pcl.tmp')
    -->End of Python script error report<--
И после этого постоянно возникает ошибка:
Код:
    -->Python callback/script returned the following error<--
     - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
    Error Type: <type 'exceptions.KeyError'>
    Error Contents: 'hash'
    Traceback (most recent call last):
      File "\portable_data\addons\plugin.video.russiatv1\default.py", line 15, in <module>
        _ = plugin.initialize_gettext()
      File "\portable_data\addons\script.module.simpleplugin\libs\simpleplugin.py", line 773, in initialize_gettext
        raw_strings_hash != ui_strings_map['hash']):
      File "\portable_data\addons\script.module.simpleplugin\libs\simpleplugin.py", line 191, in __getitem__
        return self._storage[key]
    KeyError: 'hash'
    -->End of Python script error report<--
Причиной этому является неправильное содержание файла "__gettext__.pcl", который теперь выглядит вот-так:
Код:
(dp1
.
После этого, единственный способ запустить дополнение, это удалить этот файл вручную.

Так же подобная ситуация возникает с файлом кэша.

Используется версия 2.3.2
__________________
Репозиторий: https://github.com/vlmaksime/repository.vlmaksime/releases
Опрос по используемым версиям: http://xbmc.ru/forum/showthread.php?t=15419
vl.maksime вне форума   Ответить с цитированием
Старый 05.01.2018, 16:35   #39
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,942
По умолчанию

Как видно из трейсбэка, ошибка возникает где-то внутри стандартной библиотеки. Проблемы с правами вне моей компетенции.
__________________
Координатор русского перевода 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, не отвечаю. Для обсуждений и советов есть форум.
Roman_V_M вне форума   Ответить с цитированием
Старый 06.01.2018, 00:46   #40
vl.maksime
Senior Member
 
Аватар для vl.maksime
 
Регистрация: 18.10.2015
Адрес: Donetsk, Ukraine
Сообщений: 396
По умолчанию

Вроде удалось выявить закономерность возникновения шибки. Проявляется она при быстром переходе между разделами, т.е. когда быстро несколько раз происходит создание класса.

Ситуацию легко воспроизвести с помощью простенького скрипта:
Код:
# -*- coding: utf-8 -*-
import os
from simpleplugin import Storage

cwd = os.getcwd()
while True:
    with Storage(cwd, 'test.pcl') as storage:
        value = storage.get('value', 0)
        storage['value'] = value + 1
Достаточно запустить этот скрипт два раза, как сразу же в одном из сеансов возникнет проблема:
Код:
D:\>test.py
Traceback (most recent call last):
  File "D:\test.py", line 9, in <module>
    storage['value'] = value + 1
  File "C:\Python27\lib\site-packages\simpleplugin-2.3.2-py2.7.egg\simpleplugin.py", line 188, in __exit__
    self.flush()
  File "C:\Python27\lib\site-packages\simpleplugin-2.3.2-py2.7.egg\simpleplugin.py", line 226, in flush
    os.remove(tmp)
WindowsError: [Error 2] : 'D:\\test.pcl.tmp'

D:\>test.py
Traceback (most recent call last):
  File "D:\test.py", line 9, in <module>
    storage['value'] = value + 1
  File "C:\Python27\lib\site-packages\simpleplugin-2.3.2-py2.7.egg\simpleplugin.py", line 188, in __exit__
    self.flush()
  File "C:\Python27\lib\site-packages\simpleplugin-2.3.2-py2.7.egg\simpleplugin.py", line 228, in flush
    move(tmp, self._filename)  # Atomic save
  File "C:\Python27\lib\shutil.py", line 302, in move
    copy2(src, real_dst)
  File "C:\Python27\lib\shutil.py", line 130, in copy2
    copyfile(src, dst)
  File "C:\Python27\lib\shutil.py", line 82, in copyfile
    with open(src, 'rb') as fsrc:
IOError: [Errno 2] No such file or directory: 'D:\\test.pcl.tmp'

D:\>test.py
Traceback (most recent call last):
  File "D:\test.py", line 9, in <module>
    storage['value'] = value + 1
  File "C:\Python27\lib\site-packages\simpleplugin-2.3.2-py2.7.egg\simpleplugin.py", line 188, in __exit__
    self.flush()
  File "C:\Python27\lib\site-packages\simpleplugin-2.3.2-py2.7.egg\simpleplugin.py", line 228, in flush
    move(tmp, self._filename)  # Atomic save
  File "C:\Python27\lib\shutil.py", line 303, in move
    os.unlink(src)
WindowsError: [Error 32] Процесс не может получить доступ к файлу,: 'D:\\test.pcl.tmp'
Возможно выходом из ситуации будет замена класса Storage на MemStorage?
__________________
Репозиторий: https://github.com/vlmaksime/repository.vlmaksime/releases
Опрос по используемым версиям: http://xbmc.ru/forum/showthread.php?t=15419
vl.maksime вне форума   Ответить с цитированием
Ответ
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
script.module.torrent2http - движок стримминга торрентов. -=Vd=- Помощь по плагинам 107 08.07.2018 23:31
[All] script.module.antizapret - Обход блокировок для плагинов nightik Помощь по плагинам 25 04.05.2018 03:55
PyXBMCt - фреймворк для создания интерфейса плагинов Roman_V_M Поддержка локальной разработки модулей 22 28.03.2017 09:01
script.module.remote-pdb: удаленный консольный отладчик для плагинов Roman_V_M Поддержка локальной разработки модулей 18 06.10.2016 14:42
Библиотека для фото runkov Подсказки, описания и FAQ по XBMC 5 22.10.2010 11:29


Текущее время: 17:31. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.