Профессиональное приложение на PyQt6 для редактирования M3U/M3U8 плейлистов с расширенным функционалом и модульной архитектурой.
- Современный GUI на PyQt6 с улучшенным дизайном
- Древовидное отображение плейлистов с группировкой по категориям
- Ленивая загрузка для больших плейлистов (>500 каналов)
- Редактирование каналов - добавление, удаление, изменение
- Контекстное меню - переименование категорий и каналов через ПКМ
- Асинхронная проверка ссылок с автоматическим снятием рабочих каналов
- Управление категориями через чекбоксы с поддержкой частичного выбора
- Поиск и удаление дублей с тремя методами (URL, название, комбинированный)
- Объединение плейлистов с настраиваемым удалением дублей
- Исправленные цвета - отличная видимость текста во всех элементах
- Высокий контраст - соответствие стандартам доступности WCAG
- Иконки FontAwesome через QtAwesome (с fallback)
- Централизованные стили с программной генерацией CSS
- Прогресс-бары для длительных операций
- Информативный статус-бар с детальной информацией
- Оптимизация для разных разрешений (от 1366x768 до 4K)
- Автоматическое обновление счетчиков и состояний
- Модульная архитектура - разделение на логические компоненты
- Принципы SOLID - единственная ответственность, открытость/закрытость
- Централизованная конфигурация - все настройки в одном месте
- Система логирования - многоуровневое логирование с файлами
- Обработка ошибок - централизованная с пользовательскими диалогами
- Валидация данных - проверка файлов и URL
- Мониторинг производительности - автоматическое измерение времени операций
- Python: 3.8+ (рекомендуется 3.10+)
- ОС: Windows 10/11, macOS, Linux
- Разрешение экрана: 1366x768 или выше
- ОЗУ: 512 МБ (для больших плейлистов >2000 каналов - 1 ГБ)
# Основные зависимости
pip install PyQt6 aiohttp
# Опционально для иконок
pip install QtAwesome# 1. Клонируйте репозиторий
git clone <repository-url>
cd m3u_editor
# 2. Установите зависимости
pip install PyQt6 aiohttp QtAwesome
# 3. Запустите приложение
python m3u_editor.pyНовая функция v2.1! Переименование категорий и каналов:
-
Переименование категории:
- Щелкните правой кнопкой по названию категории
- Выберите "Переименовать категорию"
- Введите новое название
- ✅ Автоматически обновляются все каналы в этой категории
-
Переименование канала:
- Щелкните правой кнопкой по названию канала
- Выберите "Переименовать канал"
- Введите новое название
- ✅ Обновляется EXTINF строка в плейлисте
- Асинхронная проверка - не блокирует интерфейс
- Кнопка отмены - возможность остановить проверку в любой момент
- Автоматическое снятие рабочих каналов для удобного удаления нерабочих
- Цветовая индикация - зеленый/красный статус
- Чекбоксы для выбора целых категорий
- Частичное выделение - автоматическое определение состояния
- Ленивая загрузка для больших плейлистов (>500 каналов)
# Запуск автотестов
python test_app.py
# Тест стилей и интерфейса
python test_styles.py
# Тест контекстного меню
python test_context_menu.py
# Тест исправления проверки ссылок
python test_link_check_fix.py
# Тест кнопки отмены проверки
python test_cancel_check.py
# Тест улучшений SSL
python test_ssl_improvements.py
# Тест исправления логики чекбоксов
python test_checkbox_logic_fix.py
# Тест исправления ленивой загрузки
python test_lazy_loading_fix.py
# Тест исправления сохранения
python test_save_fix.py
# Тест исправления выбора чекбоксов
python test_checkbox_selection_fix.py# Основной способ
python m3u_editor.py
# Или через скомпилированный EXE (Windows)
dist\M3UEditor.exe# Запуск скрипта сборки
build2.bat
# Результат: dist\M3UEditor.exe- Нажмите "Открыть" или Ctrl+O
- Выберите M3U/M3U8 файл
- Плейлист отобразится в виде дерева с группами
- Добавление канала: Кнопка "Добавить канал"
- Удаление: Выберите каналы и нажмите "Удалить выбранные"
- Выбор всех/снятие: Кнопки "Выбрать все" / "Снять выбор"
- Нажмите "Проверить ссылки"
- Дождитесь завершения проверки
- Статус отобразится в колонке "Статус"
- Перейдите на вкладку "Дубли"
- Выберите метод поиска (URL, название, оба)
- Нажмите "Найти дубли" или "Удалить дубли"
- Перейдите на вкладку "Объединение"
- Добавьте файлы для объединения
- Выберите файл для сохранения
- Нажмите "Объединить"
- Ctrl+S: Сохранить текущий файл
- Ctrl+Shift+S: Сохранить как новый файл
Все стили генерируются программно в config.py:
# Настройка цветов
config.style.colors['primary'] = '#3498db'
config.style.colors['text'] = '#2c3e50'
# Применение стилей
app.setStyleSheet(config.get_style_sheet())- UI настройки: размеры окон, пороги производительности
- Сетевые настройки: таймауты, количество одновременных проверок
- Файловые настройки: поддерживаемые кодировки и расширения
- Цветовая схема: полная настройка всех цветов интерфейса
Автоматический fallback: QtAwesome → системные иконки
├── m3u_editor.py # Главное приложение
├── m3u_core.py # Ядро обработки M3U
├── config.py # Централизованная конфигурация
├── logger.py # Система логирования
├── utils.py # Утилиты и обработка ошибок
├── test_app.py # Автоматические тесты
└── test_styles.py # Тест интерфейса
- M3UEditorMainWindow - главное окно с интегрированным логированием
- PlaylistTreeWidget - оптимизированное дерево с ленивой загрузкой
- LinkChecker - асинхронная проверка ссылок
- M3UProcessor - ядро обработки плейлистов
- ErrorHandler - централизованная обработка ошибок
- PerformanceMonitor - мониторинг производительности
- SOLID принципы - модульность и расширяемость
- Слабая связанность - независимые компоненты
- Высокая когезия - логически связанные функции в одном модуле
- Обработка ошибок - graceful degradation с логированием
- Производительность - оптимизация для больших данных
# Полная проверка системы
python test_app.py
# Проверка интерфейса и цветов
python test_styles.py
# Проверка логов
cat ~/.m3u_editor/app.log # Linux/macOS
type %USERPROFILE%\.m3u_editor\app.log # Windows# 1. Проверьте Python версию
python --version # Должно быть 3.8+
# 2. Установите зависимости
pip install PyQt6 aiohttp
# 3. Запустите тест
python test_app.py# Запустите тест стилей
python test_styles.py
# Проверьте настройки дисплея (масштабирование)- Используется автоматическая ленивая загрузка для >500 каналов
- Для >2000 каналов рекомендуется 1 ГБ ОЗУ
- Проверьте логи производительности
# Установите aiohttp
pip install aiohttp
# Проверьте сетевое подключение
# Настройте таймауты в config.pyВсе операции логируются в ~/.m3u_editor/app.log:
- INFO: Обычные операции
- WARNING: Предупреждения
- ERROR: Ошибки с деталями
- DEBUG: Подробная отладочная информация
- Цвета интерфейса - 100% читаемость всех элементов
- Производительность - оптимизация для больших плейлистов
- Архитектура - модульная структура с SOLID принципами
- Обработка ошибок - централизованная с логированием
- Контекстное меню - переименование категорий и каналов через ПКМ
- Кнопка отмены проверки - остановка проверки ссылок в любой момент
- Исправлена логика удаления - правильное определение нерабочих каналов
- Исправлена ленивая загрузка - корректная работа с большими плейлистами
- Исправлен выбор каналов - правильное определение нерабочих каналов в свернутых группах
- Улучшения SSL - стабильная работа с HTTPS ссылками без ошибок
- Исправлена проверка ссылок - корректная работа со свернутыми категориями
- Система логирования - подробные логи всех операций
- Валидация данных - проверка файлов и URL
- Мониторинг производительности - автоматические измерения
- Автотесты - проверка всех компонентов
- Ленивая загрузка: >500 каналов
- Прогресс-диалоги: >2000 каналов
- Оптимизированные обновления UI
- Асинхронная проверка ссылок
m3u_editor/
├── 📄 m3u_editor.py # Главное приложение
├── 🔧 m3u_core.py # Ядро M3U обработки
├── ⚙️ config.py # Конфигурация
├── 📝 logger.py # Логирование
├── 🛠️ utils.py # Утилиты
├── 🧪 test_app.py # Автотесты
├── 🎨 test_styles.py # Тест UI
├── 🖱️ test_context_menu.py # Тест контекстного меню
├── 🔗 test_link_check_fix.py # Тест исправления проверки ссылок
├── ⏹️ test_cancel_check.py # Тест кнопки отмены проверки
├── 🔒 test_ssl_improvements.py # Тест улучшений SSL
├── 📏 test_button_sizes.py # Тест размеров кнопок
├── ☑️ test_checkbox_logic_fix.py # Тест исправления логики чекбоксов
├── 🔄 test_lazy_loading_fix.py # Тест исправления ленивой загрузки
├── 💾 test_save_fix.py # Тест исправления сохранения
├── 📋 build2.bat # Сборка EXE
└── 📚 документация/
├── IMPROVEMENTS.md # Детали улучшений
└── COLOR_FIXES.md # Исправления цветов
- Форкните репозиторий
- Создайте ветку:
git checkout -b feature/new-feature - Внесите изменения с соблюдением принципов SOLID
- Добавьте тесты: обновите
test_app.py - Запустите тесты:
python test_app.py - Создайте Pull Request
- Принципы: KISS, DRY, YAGNI, SOLID
- Типизация: Type hints везде где возможно
- Документация: Docstrings для всех классов и методов
- Тестирование: Покрытие новой функциональности
MIT License - см. файл LICENSE
- Запустите диагностику:
python test_app.py - Проверьте логи:
~/.m3u_editor/app.log - Изучите документацию:
IMPROVEMENTS.md,COLOR_FIXES.md - Создайте Issue с подробным описанием и логами
- 📖 Подробные улучшения:
IMPROVEMENTS.md - 🎨 Исправления цветов:
COLOR_FIXES.md - 🧪 Автотесты:
python test_app.py - 🎨 Тест интерфейса:
python test_styles.py
M3U Editor v2.1 - Профессиональное решение для работы с плейлистами! 🎵✨
Модульная архитектура • Высокая производительность • Отличная читаемость • Полное логирование