No description
- Python 100%
| .vscode | ||
| __pycache__ | ||
| .DS_Store | ||
| .gitignore | ||
| .python-version | ||
| analyze_plex_library.py | ||
| document_generator.py | ||
| export_plex_library.py | ||
| plex_library_export.json | ||
| plex_menu.docx | ||
| plex_menu.pdf | ||
| plex_menu.py | ||
| pyproject.toml | ||
| README.md | ||
| Roboto-Regular.ttf | ||
| test_plex_menu.py | ||
| uv.lock | ||
| word_documentation.md | ||
Генератор меню для Plex
Отлично! Переход на uv — это мудрое решение. Это современный и очень быстрый менеджер пакетов, который позволяет запускать скрипты с зависимостями "на лету", не создавая вручную виртуальные окружения.
Поскольку названия на русском, нам критически важно решить проблему со шрифтами. Стандартные шрифты PDF не умеют отображать кириллицу (вместо букв будут пустые квадраты).
Решение задачи
- Управление зависимостями: Мы используем формат Inline Script Metadata (PEP 723). Я добавлю специальный заголовок в начало файла, и
uvсам скачаетplexapi,reportlabиrequestsпри запуске. - Русский язык: Скрипт сам скачает бесплатный шрифт Roboto (от Google), если не найдет его рядом с собой. Это гарантирует, что текст на русском отобразится корректно.
- Логика для сериалов: Скрипт переберет эпизоды, сложит их длительность и разделит на количество, чтобы получить честную "среднюю цену" за серию.
Поддерживаемые форматы
Теперь приложение поддерживает генерацию документов в двух форматах:
- PDF - традиционный формат для печати
- Microsoft Word (.docx) - для возможности редактирования и изменения документа
Инструкция по использованию
Благодаря uv, тебе не нужно вручную создавать venv или делать pip install.
Установка uv (если еще нет):
- Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh - Windows (PowerShell):
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
Настройка:
- Открой файл
plex_menu.py. - Впиши свои
PLEX_URLиPLEX_TOKEN. - Проверь названия библиотек в
LIBRARY_NAMES(например,['Фильмы', 'Сериалы'], если они названы по-русски в самом Plex). - Укажи желаемый формат выходного файла в переменной
OUTPUT_FILENAME(например,"plex_menu.docx"для Word или"plex_menu.pdf"для PDF).
Запуск:
Просто выполни команду в папке со скриптом:
uv run plex_menu.py
Что сделает скрипт:
- Увидит заголовок в начале файла и скачает нужные библиотеки в изолированный кэш.
- Скачает шрифт Roboto (появится файл
Roboto-Regular.ttfв папке), чтобы названия на русском были читаемыми. - Сгенерирует документ, где:
- Фильмы и сериалы отсортированы от А до Я.
- Цена сериала рассчитана на основе средней длины серии (чтобы было честно: 20-минутный мультик дешевле 60-минутной драмы).
- Для формата PDF: на странице ровно 16 карточек.
- Для формата Word: информация структурирована в виде таблиц с возможностью дальнейшего редактирования.
Попробуй запустить и скажи, если нужно поправить размер шрифтов или расположение картинок!