Enigma2 какие имиджи на python 3
Перейти к содержимому

Enigma2 какие имиджи на python 3

Python3 #1985

Clock is ticking, are we planning to move to python 3.x?

The text was updated successfully, but these errors were encountered:

athoik commented Jan 28, 2019

Well python 2.7 will die hard.

Although it would be nice if new code is python3 compatible with unit testing.

betacentauri commented Feb 3, 2019

We should eg think about accepting new py files only if they use this:
from future import absolute_import
from future import division
from future import print_function

betacentauri commented Feb 7, 2019 •

Just tested python-future on a sumo image. Sumo because python-future is there already included in the OE. It seems to work, but you need to use:
from __future__ import print_function

betacentauri commented Feb 9, 2019

technic commented Feb 9, 2019

The python files should be fine, I am more afraid about C-API part.

athoik commented Feb 10, 2019

Maybe we can use enigma3 on the feeds!

That will allow to test enigma3 and speed up the whole process!

betacentauri commented Feb 11, 2019

But for testing I guess we first need to make main python files python 3 compatible.

betacentauri commented Feb 23, 2019

Compiling e2 with python3 now works. But pyo/pyc files are missing in the package and more bad e2 don’t work 🙁
Traceback (most recent call last):
File «/usr/lib/enigma2/python/enigma.py», line 18, in swig_import_helper
return importlib.import_module(mname)
File «/usr/lib/python3.5/importlib/init.py», line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File «», line 986, in _gcd_import
File «», line 969, in _find_and_load
File «», line 956, in _find_and_load_unlocked
ImportError: No module named ‘_enigma’

betacentauri commented Feb 26, 2019

The SWIG problems are solved. Changes are committed.
There are still several issues with python code.

Модификации имиджа энигма2

В этой теме предлагаю делится своими готовыми модифицированными имиджами Энигма2.

Актуальный имидж PKT NEBULA V3 mod by spartak73 v3.0 скачиваем здесь

spartak73
Супер-Модератор
  • 20 Мар 2012
  • #2

PKT NEBULA IMAGE v1 SF-1028 based on sh4 DuckBox Projekt mod by spartak73

PKT NEBULA IMAGE v1 SF-1028 based on sh4 DuckBox Projekt mod by spartak73 v1.0

Решил поделиться своей модификацией имиджа от PKT NEBULA для Octagon — 1028P.

Изменения дополнения и новшества:

  • Новое bootlogo:
  • Изменения в меню:

Поиск каналов перемещен в Главное меню

  • Добавлен подсчет сервисов и разделение на SD и HD в списке спутников:
  • Добавлен мой спиннер:
  • Добавлена новая функция в контекстное меню списка каналов:

Сделать канал стартовым

  • Установлен плагин для просмотра IPTV nStreamPlayer VOD v0.5
  • Заменена иконка показа движения позиционера на окно :
spartak73
Супер-Модератор
  • 20 Мар 2012
  • #3
  • Установлен CoolTVGuide v5.6.1:

С русской локализацией

  • УстановленEnhanced Movie Center (EMC) V.3.0.0:

с русской локализацией

  • Установлена утилита IPK TOOLS:
  • Добавлена новая опция в меню поиска сервисов:

Simple Satellite Scan

  • Обновлена библиотека рендеров и конвертеров до версии 1.4
  • Установлены эмуляторы Mgcamd_1.38a и OScam_ymod18-t30
  • Проведена модификация стандартных скинов:
  • Добавлена наиболее полная локализация энигмы2 для русского языка:
  • Добавлена поддержка кириллицы при монтировании сетевых дисков:
spartak73
Супер-Модератор
  • 20 Мар 2012
  • #4

Релиз версии 1.0
Никакой гарантии, что все работает идеально не даю . Все ставите на свой страх и риск! Устанавливая этот архив вы берете всю ответственность за дальнейшее на себя. Ну все, слова напутствия сказал, с богом! :rofl: При проблемах выкладывать enigma_crashlog ! Без крашлога сообщения о "зеленке" буду удалять, что бы не засорять тему.

Enigma2 какие имиджи на python 3

Не нашел в каком разделе можно инструкции или FAQ написать, пишу здесь, админ разберется.

Решено: Как перевести любимые плагины с python 2 на python 3

В связи с появлением новых имиджей для наших ресиверов, основанных уже на python 3, например OpenATV версии 6.5 и выше, назрела необходимость перевести плагины также на python 3. Но что делать, если их авторы по тем или иным причинам не торопятся это делать?
Выход напрашивается сам собой, сделать это самому. Тем более, что если Вы хоть и не являетесь программистом, но считаетесь продвинутым пользователем Энигмы2.

Вот я и покажу, как на самом деле не так то это и невозможно. Но разумеется должен предупредить сразу.
Необходимо, чтобы выполнялось следующее.

1. Имеется разрешение от автора, либо Вы не будете выставлять это на паблик.
2. Разумеется Вы должны иметь в наличии исходники, ну или декомпилированное)))
3. Вы должны быть не только продвинутым пользователем Энигмы, но и конечно должны быть с компьютером на ты, то есть Вы не должны падать в обморок от необходимости установки в ваш комп (вернее конечно в ОС на компе) каких нибудь программ или библиотек, и разумеется обязаны иметь умение работать в консоли.

Итак, поехали.
Сперва-наперво разумеется нужно иметь на компе предустановленную среду python 2.7
Если у Вас это еще не установлено, ставьте вот отсюда https://www.python.org/downloads/release/python-2713/ соответствующую для вашей операционной системы версию.

Вам обязательно появятся две библиотеки питона. Так как я у себя питон устанавливал давно, в принципе не помню, устанавливаются ли эти библиотеки вместе с питоном по умолчанию или нет. Это вот эти две библиотеки — 2to3 и futurize (вторая точно не ставится по умолчанию).
Но если Вы продвинутый пользователь ПК, то несложно их дополнительно поставить через питоновский pip

В принципе первый наверно ставится с питоном по умолчанию, а второй я вам помогу, просто скачайте нижеприложенный архив с библиотекой futurize и распакуйте в site-packages вашего питона, то есть вот такая папка получится C:\Python27\Lib\site-packages\future-0.18.2

Теперь основные моменты. Дело в том, что в принципе с помощью futurize Вы без ручного переделывания кода вероятно обойдетесь. Это если Ваш плагин не использует например много строковых параметров. Потому что есть моменты, которые не переделываются с помощью библиотек автоматом.

Поэтому на всякий случай, изучите что собственно изменилось в питон 3 по сравнению с питон 2. При этом конечно такие изменения как ставший функцией метод print и тому подобное уж точно переделаются автоматом. А вот то, что обработка строк коренным образом изменилось в питон 3, это посложнее. Конечно то, что юникод теперь по умолчанию и обработка строк в байтовом и стринговом представлении облегчают работу только при условии написании кода изначально на питон 3, а вот переделку кода с питон 2 это заметно усложняет.

Но, как я уже сказал, будем надеяться во-первых, что код плага таких моментов либо не содержит, либо мизерно содержит, а во-вторых а на что крешлоги системы-то? Они то и любезно нам сообщат, что еще осталось переделать в плаге под питон 3 если что.

Поэтому, давайте прямо вместе с Вами и переделаю один плагин с питона 2 на питон 3, описывая с картинками каждый шаг для наглядности.

Если. как выше показал, питон установили, а также установили (распаковали) библиотеку futurize, хочу вот адаптировать под питон 3 собственный плагин для просмотра IPTV RussianMediaParkTV.
Беру папку плагина с исходниками и копирую всю папку в корень диска С, для быстроты работы модуля переделки. Вот скопировал туда, видно на скрине, и внутри исходные py файлы.

Важное замечание! Необходимо, чтобы в папке плагина присутствовали на момент запуска модуля адаптации абсолютно все файлы без исключения (в том числе и рекурсивно во вложенных папках), иначе пути импорта внутри модулей будете переделывать вручную.

Теперь открываем консоль Винды. Но если не знаете как открыть консоль Винды, то Вы конечно просто попали не в ту тему, быстрее уходите отсюда, не теряйте своего времени даром.
Окно консоли

Заходим в папку с установленной модулю futurize, обычная команда захода в папку — cd C:\Python27\Lib\site-packages\future-0.18.2
Вставяяяем команду в консоль и нажимаем Enter

А дальше чуть внимательнее.
Теперь нужно будет по одному файлу каждый из исходных файлов .py пропустить через этот самый модуль futurize, чтобы он попытался автоматом переделать его под питон 3, при этом если вы далее вручную не тронете его, это будет универсальный код, работающий и на питон 2 одновременно.

Начнем с самого первого файла в корне, это как видите __init__.py
Используем вот такую команду, находясь в консоли в папке модуля futurize

Значит наша первая команда в консоли по адаптации исходного файла в питон 3 будет выглядеть так

Это и введем и нажмем Enter

Как видите, модуль говорит адаптация не требуется. Разумеется, инит то был пустой)))
Но вот далее пойдет веселее.
Следующий в этой папке файл cache.py

Вот уже изменения пошли. Строчка, которая начинается с минусом — означает удалена, и соответсвенно с плюсом добавлена.
Напоминаю изменения сделаны автоматически.

Не буду тут конечно все однотипные операции со всеми файлами, скажу только, что не забудьте указать правильный путь к файлу, или попросту скопировать путь из заголовка папки Винды, например уже в другой папке данного плагина будет —

После того, как нудно закончил также со всеми файлами-исходниками плагина, просто взял и забросил папку плагина с переделанными исходниками под питон 3 в имидж ОпенАТВ 7, в папку Extensions имиджа.
И сразу попробую запустить плагин, перегрузив имидж. Потому что знаю в данном случае более ничего в имидж устанавливать не нужно.
И да, разумеется еще также заброшу в имидж файлы с папками скинов, которые идут вместе с плагином RussianMediaParkTV.
Эти папки забросим куда надо, то есть в папку имиджа /usr/share/enigma2/.
А также создадим папку russianmediaparktv в папке /etc/russianmediaparktv.. которая так и так создалась бы при установке плагина из ипк.

И ура, как видите на скрине внизу плагин принят третьим питоном ОпенАТВ 7.

Но первая попытка запуска закончилась крешем)))

Это ничего. Открываем крешлог и находим нужное и читаем:

*File "/usr/lib/enigma2/python/Plugins/Extensions/RussianMediaParkTV/utils.py", line 408
2021-10-03 15:41:53+0500 [-]* * *global Timezone ## Warning: Unused global
SyntaxError: name ‘Timezone’ is used prior to global declaration

Все ясно. Имидж говорит глобальная переменная присвоена раньшше обьявления. Такое принимал питон 2, но питон 3 более строгим оказался. Ладно изменим.
Открываем этот самый файл /usr/lib/enigma2/python/Plugins/Extensions/RussianMediaParkTV/utils.py и переделываем немного код.
Ну раз смысл креша говорит о том, что переменная использована до объявления ее глобальной, просто возьмем и строчку

перенесем из конца файла в начало ее после импортов, то есть вот сюда, см. на скрине

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

Теперь креш при попытке зайти в раздел НТВ

*File "/usr/lib/enigma2/python/Plugins/Extensions/RussianMediaParkTV/api/ntv.py", line 101, in start
2021-10-03 16:34:25+0500 [-]* * *spl_for_tel=data.split(‘\n’)
2021-10-03 16:34:25+0500 [-] TypeError: a bytes-like object is required, not ‘str’

Также все ясно. Это какраз таки изменившиеся в тройке особенности работы со строками.
Находим в ntv.py строчку 110 и ее меняем таким образом, вот минус и плюс, было и стало

Вобщем еще несколько крешей получилось и их смысл свелся к тому, что я в нескольких строчках убрал кодирование в юникод, который в двойке нужен был. а в тройке уже вредит так как здесь он по умолчанию идет. То есть везде где было окончание .encode(‘utf-8’), это окончание то и убрал.

Снова запускаем и успех.

Все получилось)))
А мы и не сомневались)))

Удачи в переделках плагинов под питон 3.
Теперь думаю, с помощью этой простой инструкции Вы кинетесь переделывать ваши любимые плагины под питон 3))))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *