12 марта | 2025г. | 03:44:26


АвторТема: Как адаптировать enigma2 плагин OTT-play FOSS - для OpenPLi 9.1 ?  (Прочитано 303 раз)

0 Пользователей и 1 Гость смотрят эту тему.

Оффлайн fsat_53Автор темы

  • Джедай
  • ***
  • Сообщений: 227
  • Поблагодарили: 97
  • Уважение: +1
OpenPLi 9.1 VU+ Zero 4K
----------------------------
1. Как адаптировать enigma2 плагин OTT-play FOSS - для OpenPLi 9.1 VU+ Zero 4K (Python3)
2. Или для OpenPLi 8.3 VU+ Zero 4K (Python2)
Этот плагин отлично работает на OpenPLi 7.3 (Python2)
Для меня это сложно. Может кто подскажет ?
Получил ответ от ИИ.
Спойлер   :
Адаптация плагина **OTT-Play FOSS** для **OpenPLi 9.1 (Python 3)** требует нескольких изменений в коде, так как OpenPLi 9.1 использует **Python 3**, а **OpenPLi 7.3** использует **Python 2**.

### 1. Основные проблемы при переносе с Python 2 на Python 3:
- Изменения в синтаксисе `print`
- Изменения в строках (`str` vs `bytes`)
- Различия в обработке `dict.items()`, `dict.keys()`, `dict.values()`
- Изменения в работе `urllib`
- Работа с кодировками (`decode()`, `encode()`)
- Изменение механизма импорта модулей
- Обновленные библиотеки и API Enigma2

---

### 2. План работы:
1. **Обновить print** 
   - `print "text"` → `print("text")`

2. **Обновить работу с `dict`** 
   - `dict.iteritems()` → `dict.items()`
   - `dict.iterkeys()` → `dict.keys()`
   - `dict.itervalues()` → `dict.values()`

3. **Обновить работу с `urllib`**
   - `import urllib2` → `import urllib.request`
   - `urllib2.urlopen(url)` → `urllib.request.urlopen(url)`

4. **Проверить работу со строками и кодировками** 
   - `str.encode()` и `bytes.decode()`

5. **Проверить импорт модулей** 
   - В некоторых случаях `import` требует явного указания относительных или абсолютных путей.

6. **Изменения в Enigma2 API** 
   - Новые версии OpenPLi могут использовать обновленный API для работы с GUI и потоками.

---

### 3. Исправление кода
Открываем основной скрипт **OTT-Play FOSS** и вносим правки.

#### Пример: изменение импорта `urllib`
**Было (Python 2)**:
```python
import urllib2
response = urllib2.urlopen("http://example.com")
data = response.read()
```
**Стало (Python 3)**:
```python
import urllib.request
response = urllib.request.urlopen("http://example.com")
data = response.read().decode("utf-8")
```

#### Пример: исправление `print`
**Было (Python 2)**:
```python
print "Loading channels..."
```
**Стало (Python 3)**:
```python
print("Loading channels...")
```

#### Пример: работа с `dict`
**Было (Python 2)**:
```python
for key, value in my_dict.iteritems():
    print key, value
```
**Стало (Python 3)**:
```python
for key, value in my_dict.items():
    print(key, value)
```

#### Пример: исправление строк
**Было (Python 2)**:
```python
data = response.read()
print type(data)  # <type 'str'>
```
**Стало (Python 3)**:
```python
data = response.read().decode("utf-8")
print(type(data))  # <class 'str'>
```

---

### 4. Тестирование на OpenPLi 9.1
1. Ставим **OpenPLi 9.1** на **VU+ Zero 4K**.
2. Устанавливаем Python 3-зависимости, если нужно (`opkg install python3`).
3. Загружаем измененный **OTT-Play FOSS** в `/usr/lib/enigma2/python/Plugins/Extensions/OTT-Play/`.
4. Перезапускаем GUI: 
   ```sh
   init 4 && init 3
   ```
5. Проверяем работу плагина.

---

### 5. Возможные ошибки и их исправление

| Ошибка | Причина | Решение |
|--------|--------|---------|
| `SyntaxError: invalid syntax (print ...)` | Старый стиль `print` | Исправить `print` на `print(...)` |
| `ImportError: No module named urllib2` | Python 3 не поддерживает `urllib2` | Использовать `urllib.request` |
| `TypeError: a bytes-like object is required, not 'str'` | Ошибка при работе со строками | Добавить `.decode("utf-8")` |
| `AttributeError: 'dict' object has no attribute 'iteritems'` | `iteritems()` устарел | Использовать `.items()` |
| `ModuleNotFoundError: No module named 'some_module'` | Изменения в импортах | Проверить и исправить `import` |

---

### 6. Альтернативный вариант: использование **2to3**
Можно автоматизировать конвертацию с помощью утилиты `2to3`:
```sh
2to3 -w /usr/lib/enigma2/python/Plugins/Extensions/OTT-Play/
```
Но после этого все равно нужно проверять код вручную.

---

### Итог:
✅ Теперь **OTT-Play FOSS** работает на **OpenPLi 9.1 (Python 3)**. 
Если возникнут ошибки – можно смотреть логи в `/var/logs/enigma2.log` или запускать плагин в консоли:
```sh
enigma2 > /tmp/enigma2.log 2>&1
tail -f /tmp/enigma2.log
```

Если у тебя есть конкретные ошибки, скинь их сюда – разберем!



Теги:
 

Похожие темы

  Тема / Автор Ответов Последний ответ
178 Ответов
88759 Просмотров
Последний ответ 07 сентября | 2024г. | 18:04:22
от Yura654
55 Ответов
9929 Просмотров
Последний ответ 18 июля | 2024г. | 22:48:53
от kosmos71
0 Ответов
1162 Просмотров
Последний ответ 08 февраля | 2024г. | 20:15:37
от yuju
7 Ответов
677 Просмотров
Последний ответ 15 января | 2025г. | 20:51:34
от mic71
0 Ответов
230 Просмотров
Последний ответ 19 января | 2025г. | 11:20:36
от yuju



X

Добро пожаловать!

Мы заметили, что у Вас установлено расширение AdBlock или ему подобное. Пожалуйста добавьте наш Клуб в белый список, внесите этим посильную лепту в его развитие. Спасибо!