Выберите цвет:
Расширенный поиск

Файловый архив Как загрузить файлы Проблемы с регистрацией? Калькулятор мультифида Новичкам читать !!! Справка
Вернуться   westsat.net.ua > Cпутниковые ресиверы > uClan / U2C > Ustym 4K
Загрузка...
Правила S-Finder Пользователи Календарь Все разделы прочитаны

Важная информация

Закрытая тема
 
Опции темы
Старый 03.10.2021, 17:40   #1
A.K.A. Uchkun
Модератор-раздела

 
Аватар для A.K.A. Uchkun
 
A.K.A. Uchkun вне форума
Регистрация: 23.08.2016
Страна: Uzbekistan
Возраст: 58
Сообщений: 11
Сказал(а) спасибо: 37
Поблагодарили 293 раз(а) в 11 сообщениях
Репутация: 8116
По умолчанию : Как перевести любимые плагины с python 2 на 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

Код:
pip install 2to3


pip install futurize


В принципе первый наверно ставится с питоном по умолчанию, а второй я вам помогу, просто скачайте нижеприложенный архив с библиотекой 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 файлы.

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


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

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 3 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.



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

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 3 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.




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

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

Код:
python -m futurize путь_к_исходному_файлу\*.py -w


Значит наша первая команда в консоли по адаптации исходного файла в питон 3 будет выглядеть так
Код:
python -m futurize C:\RussianMediaParkTV\__init__.py -w
Это и введем и нажмем Enter

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 3 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.




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


Код:
python -m futurize C:\RussianMediaParkTV\cache.py -w
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 3 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.





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

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

Код:
python -m futurize C:\RussianMediaParkTV\api\playlist.py -w



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

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


Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 3 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.






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

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


Цитата:
*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 и переделываем немного код.
Ну раз смысл креша говорит о том, что переменная использована до объявления ее глобальной, просто возьмем и строчку

Код:
global Timezone*

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



Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 3 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.



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

Скрытый текст




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


Цитата:
*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 и ее меняем таким образом, вот минус и плюс, было и стало


Код:
data=bn.decode('windows-1251').encode('utf-8')


data=bn.decode('windows-1251').



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

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

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 3 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.





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

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

И будете правы)))
Вложения
Тип файла: zip future-0.18.2.zip‎ (1.011.8 Кб, 51 просмотров)
__________________
Открытая телеграмм группа https://t.me/RussianMediaPark2

Последний раз редактировалось kosmos17; 04.01.2024 в 09:29.
 
16 пользователя(ей) сказали cпасибо:
Показать/Скрыть список поблагодаривших
Закрытая тема

Социальные закладки

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анекдоты(На любую тему) makaroff Анекдоты 491 29.01.2024 20:19
Новости О переходе Украины на цифровое ТВ viskom Эфирное и кабельное ТВ 364 27.11.2023 23:20



Текущее время: 02:29. Часовой пояс GMT +2.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
При использовании материалов ссылка на сайт обязательна.
Время генерации страницы 0.14567 секунды с 19 запросами