Skip to content

maks-mk/m3ueditor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

M3U Editor v2.1 - Современный редактор плейлистов

Профессиональное приложение на PyQt6 для редактирования M3U/M3U8 плейлистов с расширенным функционалом и модульной архитектурой.

🚀 Возможности v2.1

✨ Основной функционал

  • Современный GUI на PyQt6 с улучшенным дизайном
  • Древовидное отображение плейлистов с группировкой по категориям
  • Ленивая загрузка для больших плейлистов (>500 каналов)
  • Редактирование каналов - добавление, удаление, изменение
  • Контекстное меню - переименование категорий и каналов через ПКМ
  • Асинхронная проверка ссылок с автоматическим снятием рабочих каналов
  • Управление категориями через чекбоксы с поддержкой частичного выбора
  • Поиск и удаление дублей с тремя методами (URL, название, комбинированный)
  • Объединение плейлистов с настраиваемым удалением дублей

🎨 Улучшения интерфейса v2.1

  • Исправленные цвета - отличная видимость текста во всех элементах
  • Высокий контраст - соответствие стандартам доступности WCAG
  • Иконки FontAwesome через QtAwesome (с fallback)
  • Централизованные стили с программной генерацией CSS
  • Прогресс-бары для длительных операций
  • Информативный статус-бар с детальной информацией
  • Оптимизация для разных разрешений (от 1366x768 до 4K)
  • Автоматическое обновление счетчиков и состояний

🏗️ Архитектурные улучшения v2.1

  • Модульная архитектура - разделение на логические компоненты
  • Принципы 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! Переименование категорий и каналов:

  1. Переименование категории:

    • Щелкните правой кнопкой по названию категории
    • Выберите "Переименовать категорию"
    • Введите новое название
    • Автоматически обновляются все каналы в этой категории
  2. Переименование канала:

    • Щелкните правой кнопкой по названию канала
    • Выберите "Переименовать канал"
    • Введите новое название
    • ✅ Обновляется 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

Сборка EXE (Windows)

# Запуск скрипта сборки
build2.bat

# Результат: dist\M3UEditor.exe

Основные функции

📂 Открытие плейлиста

  1. Нажмите "Открыть" или Ctrl+O
  2. Выберите M3U/M3U8 файл
  3. Плейлист отобразится в виде дерева с группами

✏️ Редактирование

  • Добавление канала: Кнопка "Добавить канал"
  • Удаление: Выберите каналы и нажмите "Удалить выбранные"
  • Выбор всех/снятие: Кнопки "Выбрать все" / "Снять выбор"

🔍 Проверка ссылок

  1. Нажмите "Проверить ссылки"
  2. Дождитесь завершения проверки
  3. Статус отобразится в колонке "Статус"

🧹 Удаление дублей

  1. Перейдите на вкладку "Дубли"
  2. Выберите метод поиска (URL, название, оба)
  3. Нажмите "Найти дубли" или "Удалить дубли"

🔗 Объединение плейлистов

  1. Перейдите на вкладку "Объединение"
  2. Добавьте файлы для объединения
  3. Выберите файл для сохранения
  4. Нажмите "Объединить"

💾 Сохранение

  • Ctrl+S: Сохранить текущий файл
  • Ctrl+Shift+S: Сохранить как новый файл

🎨 Настройка интерфейса v2.1

Централизованные стили

Все стили генерируются программно в config.py:

# Настройка цветов
config.style.colors['primary'] = '#3498db'
config.style.colors['text'] = '#2c3e50'

# Применение стилей
app.setStyleSheet(config.get_style_sheet())

Конфигурация

  • UI настройки: размеры окон, пороги производительности
  • Сетевые настройки: таймауты, количество одновременных проверок
  • Файловые настройки: поддерживаемые кодировки и расширения
  • Цветовая схема: полная настройка всех цветов интерфейса

Иконки

Автоматический fallback: QtAwesome → системные иконки

🏗️ Архитектура v2.1

Модульная структура

├── 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 с логированием
  • Производительность - оптимизация для больших данных

🐛 Устранение неполадок v2.1

Диагностика

# Полная проверка системы
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: Подробная отладочная информация

📊 Новое в v2.1

✅ Исправления

  • Цвета интерфейса - 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    # Исправления цветов

Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку: git checkout -b feature/new-feature
  3. Внесите изменения с соблюдением принципов SOLID
  4. Добавьте тесты: обновите test_app.py
  5. Запустите тесты: python test_app.py
  6. Создайте Pull Request

Стандарты кода

  • Принципы: KISS, DRY, YAGNI, SOLID
  • Типизация: Type hints везде где возможно
  • Документация: Docstrings для всех классов и методов
  • Тестирование: Покрытие новой функциональности

📄 Лицензия

MIT License - см. файл LICENSE

🆘 Поддержка

При возникновении проблем:

  1. Запустите диагностику: python test_app.py
  2. Проверьте логи: ~/.m3u_editor/app.log
  3. Изучите документацию: IMPROVEMENTS.md, COLOR_FIXES.md
  4. Создайте Issue с подробным описанием и логами

Полезные ссылки

  • 📖 Подробные улучшения: IMPROVEMENTS.md
  • 🎨 Исправления цветов: COLOR_FIXES.md
  • 🧪 Автотесты: python test_app.py
  • 🎨 Тест интерфейса: python test_styles.py

M3U Editor v2.1 - Профессиональное решение для работы с плейлистами! 🎵✨

Модульная архитектура • Высокая производительность • Отличная читаемость • Полное логирование

About

M3U Editor v2.1 - Современный редактор плейлистов

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors