No description
Find a file
2026-01-30 23:59:25 +03:00
.vscode ver.1 2025-12-19 14:59:26 +03:00
__pycache__ add new functional 2026-01-30 23:59:25 +03:00
.DS_Store fix 2026-01-30 21:55:28 +03:00
.gitignore icons 2025-12-19 15:47:12 +03:00
.python-version ver.1 2025-12-19 14:59:26 +03:00
analyze_plex_library.py add new functional 2026-01-30 23:59:25 +03:00
document_generator.py add new functional 2026-01-30 23:59:25 +03:00
export_plex_library.py add new functional 2026-01-30 23:59:25 +03:00
plex_library_export.json add new functional 2026-01-30 23:59:25 +03:00
plex_menu.docx add new functional 2026-01-30 23:59:25 +03:00
plex_menu.pdf add new functional 2026-01-30 23:59:25 +03:00
plex_menu.py add new functional 2026-01-30 23:59:25 +03:00
pyproject.toml add new functional 2026-01-30 23:59:25 +03:00
README.md add new functional 2026-01-30 23:59:25 +03:00
Roboto-Regular.ttf worde but not beautiful 2025-12-17 00:40:34 +03:00
test_plex_menu.py add new functional 2026-01-30 23:59:25 +03:00
uv.lock add new functional 2026-01-30 23:59:25 +03:00
word_documentation.md add new functional 2026-01-30 23:59:25 +03:00

Генератор меню для Plex

Отлично! Переход на uv — это мудрое решение. Это современный и очень быстрый менеджер пакетов, который позволяет запускать скрипты с зависимостями "на лету", не создавая вручную виртуальные окружения.

Поскольку названия на русском, нам критически важно решить проблему со шрифтами. Стандартные шрифты PDF не умеют отображать кириллицу (вместо букв будут пустые квадраты).

Решение задачи

  1. Управление зависимостями: Мы используем формат Inline Script Metadata (PEP 723). Я добавлю специальный заголовок в начало файла, и uv сам скачает plexapi, reportlab и requests при запуске.
  2. Русский язык: Скрипт сам скачает бесплатный шрифт Roboto (от Google), если не найдет его рядом с собой. Это гарантирует, что текст на русском отобразится корректно.
  3. Логика для сериалов: Скрипт переберет эпизоды, сложит их длительность и разделит на количество, чтобы получить честную "среднюю цену" за серию.

Поддерживаемые форматы

Теперь приложение поддерживает генерацию документов в двух форматах:

  • 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

Что сделает скрипт:

  1. Увидит заголовок в начале файла и скачает нужные библиотеки в изолированный кэш.
  2. Скачает шрифт Roboto (появится файл Roboto-Regular.ttf в папке), чтобы названия на русском были читаемыми.
  3. Сгенерирует документ, где:
    • Фильмы и сериалы отсортированы от А до Я.
    • Цена сериала рассчитана на основе средней длины серии (чтобы было честно: 20-минутный мультик дешевле 60-минутной драмы).
    • Для формата PDF: на странице ровно 16 карточек.
    • Для формата Word: информация структурирована в виде таблиц с возможностью дальнейшего редактирования.

Попробуй запустить и скажи, если нужно поправить размер шрифтов или расположение картинок!