![]() |
|
![]() |
#41 |
Senior Member
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,946
|
![]()
Да, по симптомам явно похоже на race condition. Я предвидел такую возможность, но меня ввело в заблуждение утверждение об атомарности операции shutil.move(), которая оказалась нифига не атомарной. Можно попробовать сделать вот так:
Код:
def flush(self): """ Save storage contents to disk This method saves new and changed :class:`Storage` contents to disk and invalidates the Storage instance. Unchanged Storage is not saved but simply invalidated. """ contents = pickle.dumps(self._storage) if self._hash is None or hashlib.md5(contents).hexdigest() != self._hash: tmp = self._filename + '.tmp' try: start_time = time.time() while os.path.exists(tmp): xbmc.sleep(100) if time.time() - start_time > 2.0: raise TimeoutError( 'Exceeded timeout for saving {0}!'.format(self) ) with open(tmp, 'wb') as fo: fo.write(contents) except: if os.path.exists(tmp): os.remove(tmp) raise else: move(tmp, self._filename) del self._storage А вообще, в 3-й версии я собираюсь сильно переделать библиотеку. Основные изменения: - Из класса Plugin убрано всё, кроме собственно маршрутизации вызовов плагина. - Добавлен класс RoutedPlugin для маршрутизации с "красивыми" УРЛ-ами а ля Flask. - Код портирован на Питон 3. Задача - сделать код более долгоживущим, т. к. излишняя абстракция часто ломается и требует постоянных правок, а потом забросить его нафик, поскольку на поддержку нет ни времени, ни желания.
__________________
Координатор русского перевода 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, не отвечаю. Для обсуждений и советов есть форум. |
![]() |
![]() |
![]() |
#42 |
Senior Member
Регистрация: 18.10.2015
Адрес: Donetsk, Ukraine
Сообщений: 506
|
![]()
3я версия с develop ветки GitHub'a финальная? Ее можно брать за основу для разработки?
Давно хочу переделать дополнение tvzavr.ru на simpleplugin, как-раз возможность опробовать "красивые" ссылки. И можно добавить возврат названия дополнения при обращении к свойству 'name'?
__________________
Репозиторий: https://vlmaksime.github.io/repository.vlmaksime/ Поблагодарить: https://vlmaksime.github.io/donate Опрос по используемым версиям KODI: http://xbmc.ru/forum/showthread.php?t=15419 Последний раз редактировалось vl.maksime; 24.01.2018 в 11:15. |
![]() |
![]() |
![]() |
#43 | ||
Senior Member
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,946
|
![]() Цитата:
Цитата:
__________________
Координатор русского перевода 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, не отвечаю. Для обсуждений и советов есть форум. |
||
![]() |
![]() |
![]() |
#44 |
Senior Member
Регистрация: 18.10.2015
Адрес: Donetsk, Ukraine
Сообщений: 506
|
![]()
При тестировании 3й версии во время исключения в log_exception вылетает ошибка
Код:
EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<-- - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS! Error Type: <type 'exceptions.UnicodeDecodeError'> Error Contents: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128) Traceback (most recent call last): File "\14.2\portable_data\addons\weather.gismeteo\default.py", line 698, in <module> weather.run() File "\14.2\portable_data\addons\weather.gismeteo\resources\lib\simpleweather.py", line 54, in run self._resolve_function() File "\14.2\portable_data\addons\script.module.simpleplugin3\libs\simpleplugin.py", line 1016, in _resolve_function return action_callable(self._params) File "\14.2\system\python\Lib\contextlib.py", line 35, in __exit__ self.gen.throw(type, value, traceback) File "\14.2\portable_data\addons\script.module.simpleplugin3\libs\simpleplugin.py", line 136, in log_exception logger('OS info: {0}'.format(xbmc.getInfoLabel('System.OSVersionInfo'))) UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128) -->End of Python script error report<-- И еще вот такую ошибку выдает: Код:
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: unsupported operand type(s) for -: 'int' and 'NoneType' Traceback (most recent call last): File "\14.2\portable_data\addons\weather.gismeteo\default.py", line 698, in <module> weather.run() File "\14.2\portable_data\addons\weather.gismeteo\resources\lib\simpleweather.py", line 54, in run self._resolve_function() File "\14.2\portable_data\addons\script.module.simpleplugin3\libs\simpleplugin.py", line 1016, in _resolve_function return action_callable(self._params) File "\14.2\system\python\Lib\contextlib.py", line 35, in __exit__ self.gen.throw(type, value, traceback) File "\14.2\portable_data\addons\script.module.simpleplugin3\libs\simpleplugin.py", line 142, in log_exception for i, line in enumerate(frame_info[4], frame_info[2] - frame_info[5]): TypeError: unsupported operand type(s) for -: 'int' and 'NoneType' -->End of Python script error report<--
__________________
Репозиторий: https://vlmaksime.github.io/repository.vlmaksime/ Поблагодарить: https://vlmaksime.github.io/donate Опрос по используемым версиям KODI: http://xbmc.ru/forum/showthread.php?t=15419 Последний раз редактировалось vl.maksime; 10.02.2018 в 21:09. |
![]() |
![]() |
![]() |
#45 | |
Senior Member
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,946
|
![]() Цитата:
__________________
Координатор русского перевода 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, не отвечаю. Для обсуждений и советов есть форум. |
|
![]() |
![]() |
![]() |
#46 |
Senior Member
Регистрация: 18.10.2015
Адрес: Donetsk, Ukraine
Сообщений: 506
|
![]()
Да. При инициализации использую предложенный Вами код:
Код:
import xml.etree.cElementTree as etree try: etree.fromstring('<?xml version="1.0"?><foo><bar/></foo>') except TypeError: import xml.etree.ElementTree as etree
__________________
Репозиторий: https://vlmaksime.github.io/repository.vlmaksime/ Поблагодарить: https://vlmaksime.github.io/donate Опрос по используемым версиям KODI: http://xbmc.ru/forum/showthread.php?t=15419 |
![]() |
![]() |
![]() |
#47 |
Senior Member
Регистрация: 18.10.2015
Адрес: Donetsk, Ukraine
Сообщений: 506
|
![]()
Делаю новое дополнение с использованием RoutedPlugin, столкнулся с проблемой.
Хочу для сериалов сделать маршут вида "/tvshows/<show_id>", а для сезона сериала вид "/tvshows/<show_id>/<season_id>" для этого в коде сделал так: Код:
@plugin.route('/prog/<prog_id>') def program_seasons(prog_id): pass @plugin.route('/prog/<prog_id>/<archive_id>') def program_episodes(prog_id, archive_id): pass Я не правильно использовал маршруты или маршрутизация отработала не правильно?
__________________
Репозиторий: https://vlmaksime.github.io/repository.vlmaksime/ Поблагодарить: https://vlmaksime.github.io/donate Опрос по используемым версиям KODI: http://xbmc.ru/forum/showthread.php?t=15419 |
![]() |
![]() |
![]() |
#48 | |
Senior Member
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,946
|
![]() Цитата:
__________________
Координатор русского перевода 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, не отвечаю. Для обсуждений и советов есть форум. |
|
![]() |
![]() |
![]() |
#49 |
Senior Member
Регистрация: 18.10.2015
Адрес: Donetsk, Ukraine
Сообщений: 506
|
![]()
При тестировании на 3м питоне словил ошибку при использовании mem_cache
https://pastebin.com/3TkB4MMJ Кэшируется результат функции _get_genres(). Если заменить mem_cache на cache, ошибка не возникает.
__________________
Репозиторий: https://vlmaksime.github.io/repository.vlmaksime/ Поблагодарить: https://vlmaksime.github.io/donate Опрос по используемым версиям KODI: http://xbmc.ru/forum/showthread.php?t=15419 |
![]() |
![]() |
![]() |
#50 |
Member
Регистрация: 14.04.2015
Адрес: Москва
Сообщений: 61
|
![]()
Здравствуйте немогли бы подсказать как переделать аддон из версии kodi 17 в kodi 16.1.Ставлю аддон а он пишет the dependency on xbmc version 5.2.1
Последний раз редактировалось Ferti; 08.05.2018 в 16:03. |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
script.module.torrent2http - движок стримминга торрентов. | -=Vd=- | Помощь по плагинам | 144 | 17.02.2019 14:52 |
[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 |