Как подключить Plex к Excel: 3 рабочих способа для анализа медиатеки

Если вы пытаетесь экспортировать данные из Plex Media Server в Microsoft Excel для анализа своей коллекции фильмов, сериалов или музыки, то столкнулись с типичной проблемой: Plex не предоставляет прямого инструмента для выгрузки структурированных данных в .xlsx или .csv. Причина кроется в архитектуре сервера — Plex хранит метаданные в базе SQLite, а интерфейс пользователя не предусматривает функций экспорта. Однако обойти это ограничение можно тремя способами: через встроенный API Plex, сторонние надстройки для Excel или прямую работу с базой данных сервера.

Наиболее универсальный метод — использование Plex API с последующим импортом JSON-данных в Excel через Power Query. Этот подход позволяет получить актуальную информацию о медиафайлах, включая метки, рейтинги, даты добавления и даже статистику просмотров. Альтернативные решения — надстройки вроде PlexExporter или ручной парсинг базы com.plexapp.plugins.library.db — требуют больше технических навыков, но дают доступ к расширенным данным, которые API не возвращает (например, истории просмотров или пользовательским коллекциям).

В этой статье разберём все три метода с пошаговыми инструкциями, сравним их по сложности и функциональности, а также покажем, как автоматизировать обновление данных в Excel при добавлении новых файлов в Plex. Особый акцент сделаем на обработке ошибок — например, когда API возвращает код 401 Unauthorized из-за неверного токена или когда Power Query не может распарсить вложенные JSON-объекты.

1. Подготовка: что понадобится для интеграции Plex и Excel

Прежде чем приступать к настройке, убедитесь, что у вас есть:

  • 📌 Установленный Plex Media Server (версия не ниже 1.25.0 — в старых версиях API может работать некорректно).
  • 🔑 Токен доступа к API (его можно получить в настройках аккаунта Plex или через консоль браузера).
  • 🖥️ Microsoft Excel 2016 или новее (для работы с Power Query) либо LibreOffice Calc с поддержкой внешних данных.
  • 🛠️ Утилиты для работы с JSON (опционально): jq для Linux/macOS или Postman для тестирования API-запросов.

Если вы используете Plex Pass, у вас будет доступ к расширенным endpoint’ам API, например для получения статистики по пользователям или данных о транскодировании. Без подписки функциональность ограничена базовыми запросами к библиотекам. Также проверьте, что ваш сервер доступен извне (если планируете запрашивать данные с другого устройства) — для этого в настройках Plex должен быть включён Remote Access.

⚠️ Внимание: Если ваш Plex сервер работает на NAS-системе (Synology, QNAP и т.д.), путь к базе данных может отличаться от стандартного. Например, на Synology DSM база обычно находится в /volume1/Plex/Library/Application Support/Plex Media Server/Plug-ins. Уточните локацию через файловый менеджер или SSH.

Для работы с базой SQLite напрямую потребуется утилита вроде DB Browser for SQLite (бесплатная, кроссплатформенная). Она позволяет выполнять SQL-запросы и экспортировать результаты в CSV, который затем импортируется в Excel. Этот метод подходит, если вам нужны исторические данные или информация, недоступная через API (например, лог активности пользователей).

2. Способ 1: Экспорт данных через Plex API + Power Query

Это самый гибкий метод, так как позволяет обновлять данные в Excel одним кликом. Алгоритм действий:

  1. Получите токен API:
    1. Откройте Plex Web App.
    2. Нажмите F12 (инструменты разработчика) → вкладка Network.
    3. Обновите страницу, найдите запрос к /api/v2/resources.
    4. В заголовках запроса скопируйте значение X-Plex-Token.
  2. Сформируйте URL для API:

    Базовый формат:
    http://[IP_вашего_сервера]:32400/library/sections/[ID_библиотеки]/all?X-Plex-Token=[ваш_токен]

    Чтобы узнать ID_библиотеки, выполните запрос:
    http://[IP_вашего_сервера]:32400/library/sections?X-Plex-Token=[ваш_токен]

  3. Импортируйте данные в Excel:
    1. В Excel перейдите на вкладку ДанныеПолучить данныеИз других источниковИз веб.
    2. Вставьте сформированный URL, нажмите OK.
    3. В открывшемся окне Power Query выберите таблицу с данными (обычно она одна).
    4. Преобразуйте JSON в таблицу: нажмите на иконку рядом с колонкой Metadata.

После импорта вы получите таблицу со всеми фильмами/сериалами из выбранной библиотеки. Чтобы автоматизировать обновление, сохраните запрос и настройте периодическую выгрузку через Обновить все (вкладка Данные).

Проверьте, что Plex сервер запущен и доступен по сети|Убедитесь, что токен API действителен (срок действия не истёк)|Отключите VPN/прокси, если они мешают подключению|Создайте резервную копию Excel-файла перед импортом-->

3. Способ 2: Использование надстройки PlexExporter

Если работа с API кажется сложной, можно воспользоваться готовой надстройкой PlexExporter (доступна на GitHub). Она позволяет экспортировать данные в CSV/Excel без ручного формирования запросов. Преимущества метода:

  • 🔧 Не требует знания API или SQL.
  • 📊 Экспортирует расширенные данные: жанры, актеры, студии, пользовательские теги.
  • 🔄 Поддерживает планировщик задач для автоматического обновления.

Инструкция по установке:

  1. Скачайте последнюю версию PlexExporter с страницы релизов (выбирайте версию под свою ОС).
  2. Распакуйте архив и запустите PlexExporter.exe (для Windows) или скрипт plexexporter.py (для Linux/macOS).
  3. Введите данные для подключения:
    • Адрес сервера (например, http://192.168.1.100:32400)
    • Токен API (см. способ 1)
    • Путь для сохранения файла (указывайте .xlsx для Excel)
  • Выберите библиотеки для экспорта и нажмите Start Export.
  • Надстройка создаст файл с вкладками для каждой библиотеки. Например, для фильмов будут колонки: Title, Year, Duration, Genres, Added At и др. Для сериалов добавится информация об эпизодах и сезонах.

    ⚠️ Внимание: PlexExporter может не корректно обрабатывать кириллические пути к файлам на сервере. Если в данных появляются кракозябры, переименуйте папки с медиафайлами, используя латиницу, или настройте кодировку в конфигурационном файле надстройки (config.ini).

    Через Plex API + Power Query|С помощью надстройки PlexExporter|Прямая работа с базой SQLite|Ещё не решил-->

    4. Способ 3: Прямой экспорт из базы данных Plex

    Этот метод подходит для опытных пользователей, так как требует доступа к файлам сервера. База данных Plex (com.plexapp.plugins.library.db) содержит всю информацию о медиатеке, включая:

    • 🎬 Методанные фильмов/сериалов (название, год, рейтинг, описание).
    • 📁 Структуру папок и пути к файлам.
    • 👥 Данные о пользователях и их активности.
    • 📊 Статистику просмотров и историю.

    Чтобы экспортировать данные:

    1. Остановите Plex Media Server (через НастройкиСерверОстановить сервер).
    2. Скопируйте файл базы данных (обычно расположен по пути:
      • Windows: %LOCALAPPDATA%\Plex Media Server\Plug-in Support\Databases
      • macOS: /Users/[ваш_пользователь]/Library/Application Support/Plex Media Server/Plug-in Support/Databases
      • Linux/NAS: /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases
  • Откройте файл в DB Browser for SQLite.
  • Выполните SQL-запрос для экспорта нужных данных. Примеры:
    -- Экспорт всех фильмов с рейтингом и датой добавления
    

    SELECT

    metadata_items.title,

    metadata_items.originally_available_at AS year,

    metadata_items.summary,

    metadata_items.rating,

    library_sections.name AS library_name,

    datetime(metadata_items.added_at, 'unixepoch') AS added_date

    FROM metadata_items

    JOIN library_sections ON metadata_items.library_section_id = library_sections.id

    WHERE metadata_items.metadata_type = 1; -- 1 = фильмы, 2 = шоу, 8 = альбомы

    -- Экспорт истории просмотров

    SELECT

    metadata_items.title,

    users.username,

    datetime(metadata_item_settings.viewed_at, 'unixepoch') AS watched_date

    FROM metadata_item_settings

    JOIN metadata_items ON metadata_item_settings.guid = metadata_items.guid

    JOIN users ON metadata_item_settings.account_id = users.id

    WHERE metadata_item_settings.viewed_at > 0;

  • Экспортируйте результаты в CSV (ФайлЭкспортТаблица как CSV-файл).
  • Импортируйте CSV в Excel через ДанныеИз текста/CSV.
  • Преимущество этого метода — доступ к данным, которые не возвращает API (например, полная история просмотров или пользовательские коллекции). Однако будьте осторожны: изменения в базе напрямую могут привести к сбоям Plex. Всегда делайте резервную копию файла com.plexapp.plugins.library.db перед редактированием.

    Расширенные SQL-запросы для Plex

    Запрос 1. Топ-10 самых просматриваемых фильмов:

    SELECT
    

    mi.title,

    COUNT(mis.viewed_at) AS view_count

    FROM metadata_item_settings mis

    JOIN metadata_items mi ON mis.guid = mi.guid

    WHERE mi.metadata_type = 1 AND mis.viewed_at > 0

    GROUP BY mi.title

    ORDER BY view_count DESC

    LIMIT 10;

    Запрос 2. Фильмы без постера или обложки:
    SELECT title, originally_available_at AS year
    

    FROM metadata_items

    WHERE metadata_type = 1 AND thumb_url IS NULL;

    Запрос 3. Пользователи с наибольшей активностью:
    SELECT
    

    u.username,

    COUNT(mis.viewed_at) AS total_views

    FROM metadata_item_settings mis

    JOIN users u ON mis.account_id = u.id

    WHERE mis.viewed_at > 0

    GROUP BY u.username

    ORDER BY total_views DESC;

    5. Обработка ошибок и типичные проблемы

    При интеграции Plex и Excel пользователи чаще всего сталкиваются со следующими ошибками:

    Ошибка Причина Решение
    401 Unauthorized при запросе к API Неверный или просроченный токен. Получите новый токен (см. раздел 2) или проверьте его актуальность в настройках аккаунта Plex.
    Power Query не распознаёт JSON API возвращает сжатые данные (gzip) или некорректный формат. Добавьте заголовок Accept-Encoding: gzip в запрос или используйте Postman для предварительной проверки ответа.
    Пустые ячейки в колонках с метаданными Plex не загрузил метаданные для некоторых файлов. Запустите Match (сопоставление) для проблемных файлов в интерфейсе Plex.
    SQLite выдаёт ошибку database is locked База заблокирована работающим сервером Plex. Остановите сервер перед работой с базой (см. раздел 4).
    Кириллические символы отображаются как ???? Неверная кодировка при экспорте из SQLite. При экспорте в CSV выбирайте кодировку UTF-8.

    Если при импорте в Excel данные отображаются в одной колонке, воспользуйтесь инструментом Текст по столбцам (вкладка Данные). Для JSON-данных в Power Query нажмите на иконку рядом с колонкой, содержащей вложенные объекты, и выберите нужные поля.

    1. Сохраните файл Excel в OneDrive или SharePoint.

    2. В Power Query настройте параметры источника данных для автоматического обновления.

    3. В Excel перейдите в ДанныеОбновить всеСвойства и установите расписание (например, ежедневно в 3:00).-->

    6. Автоматизация: как обновлять данные в Excel без ручного импорта

    Чтобы данные в Excel обновлялись автоматически при добавлении новых файлов в Plex, настройте следующую схему:

    1. Для API + Power Query:
      • Сохраните запрос в Power Query как функцию.
      • Создайте параметр для X-Plex-Token и пути к серверу.
      • Используйте Power Automate (бывший Microsoft Flow) для запуска обновления по триггеру (например, при изменении файла на сервере).
    2. Для PlexExporter:
      • Настройте Task Scheduler (Windows) или cron (Linux/macOS) для регулярного запуска утилиты.
      • Добавьте команду для автоматического открытия сгенерированного .xlsx-файла в Excel.
    3. Для прямого экспорта из SQLite:
      • Напишите скрипт на Python или Bash, который будет:
        1. Копировать базу данных в временную папку.
        2. Выполнять SQL-запрос и экспортировать результаты в CSV.
        3. Обновлять данные в Excel через xlwings (Python) или COM-объект.
    4. Запускайте скрипт по расписанию или через вебхук при добавлении файлов в Plex.

    Пример скрипта на Python для автоматического обновления:

    import sqlite3
    

    import pandas as pd

    from datetime import datetime

    Подключение к базе Plex

    db_path = r'C:\Users\YourUser\AppData\Local\Plex Media Server\Plug-in Support\Databases\com.plexapp.plugins.library.db'

    conn = sqlite3.connect(db_path)

    Запрос для экспорта фильмов

    query = """

    SELECT

    title,

    originally_available_at AS year,

    rating,

    datetime(added_at, 'unixepoch') AS added_date

    FROM metadata_items

    WHERE metadata_type = 1

    """

    Экспорт в DataFrame и сохранение в Excel

    df = pd.read_sql(query, conn)

    df.to_excel(r'C:\path\to\plex_movies.xlsx', index=False, engine='openpyxl')

    Закрытие соединения

    conn.close()

    print(f"Данные обновлены: {datetime.now()}")

    Для запуска скрипта по расписанию используйте Task Scheduler (Windows) или cron (Linux/macOS). Например, команда для cron, которая будет запускать скрипт каждый день в 2:00:

    0 2   * /usr/bin/python3 /path/to/plex_export.py

    7. Анализ данных в Excel: примеры отчётов

    После импорта данных из Plex в Excel вы можете создать следующие отчёты для анализа медиатеки:

    • 📊 Статистика по жанрам: сводная таблица с количеством фильмов/сериалов по жанрам и средним рейтингом.
    • 📅 Динамика пополнения коллекции: график добавления файлов по месяцам/годам.
    • Топ по рейтингу: фильмы с самым высоким/низким рейтингом (используйте условное форматирование для выделения).
    • 👥 Aктивность пользователей: кто и когда смотрел те или иные файлы (если экспортировали историю просмотров).
    • 🎬 Непросмотренные фильмы: фильтр по колонке viewed_at (пустые значения).

    Пример создания сводной таблицы для анализа жанров:

    1. Выделите импортированные данные (включая заголовки).
    2. Перейдите на вкладку ВставкаСводная таблица.
    3. В настройках сводной таблицы:
      • Перетащите genre в поле Строки.
      • Перетащите title в поле Значения (Excel автоматически посчитает количество).
      • Добавьте rating в Значения и выберите Среднее.
  • Отсортируйте по убыванию количества фильмов.
  • Для визуализации динамики пополнения коллекции:

    1. Создайте столбец с годом добавления (извлеките год из added_date с помощью функции =ГОД()).
    2. Постройте сводную таблицу с группировкой по годам.
    3. На основе сводной таблицы создайте Гистограмму (вкладка ВставкаГистограмма).

    Чтобы автоматизировать создание отчётов, запишите макрос в Excel (ВидМакросыЗаписать макрос) или используйте Power BI для более сложной аналитики.

    8. Альтернативные инструменты для работы с данными Plex

    Если Excel не подходит для ваших задач, рассмотрите следующие альтернативы:

    Инструмент Преимущества Недостатки
    Tautulli
    • Мониторинг активности пользователей в реальном времени.
    • Экспорт отчётов в CSV/JSON.
    • Интеграция с Plex API.
    Требует отдельной установки и настройки.
    Plex Meta Manager
    • Управление метаданными и коллекциями.
    • Экспорт данных в структурированном виде.
    Сложная конфигурация для новичков.
    Google Sheets + Apps Script
    • Бесплатный и облачный.
    • Автоматическое обновление через триггеры.
    Ограничения на количество запросов к API.
    Notion + API
    • Удобное структурирование данных.
    • Интеграция с другими сервисами.
    Нет продвинутой аналитики.

    Для визуализации данных можно использовать Tableau Public (бесплатная версия) или Metabase (open-source). Эти инструменты позволяют создавать интерактивные дашборды на основе данных из Plex, например:

    • 📈 Тепловую карту просмотров по дням недели.
    • 🎯 Диаграмму рассеивания для анализа зависимости рейтинга от года выпуска.
    • 🗺️ Карту с распределением фильмов по странам производства.

    Если вам нужна максимальная автоматизация, комбинируйте Plex API с Zapier или Make (ex-Integromat). Например, можно настроить цепочку:

    1. Триггер: Новый файл добавлен в Plex (через вебхук).
    2. Действие: Обновить Google Sheets.
    3. Действие: Отправить уведомление в Telegram.

    FAQ: Частые вопросы по интеграции Plex и Excel

    Можно ли экспортировать данные из Plex в Excel без использования API?

    Да, есть два альтернативных способа:

    1. Прямая работа с базой данных SQLite (см. раздел 4). Этот метод даёт доступ ко всем данным, включая историю просмотров и пользовательские настройки.
    2. Использование надстроек вроде PlexExporter (см. раздел 3), которые упрощают экспорт без ручного формирования запросов.

    Однако оба метода требуют доступа к файлам сервера, что может быть невозможно, если Plex установлен на удалённом NAS или в облаке.

    Почему в экспортированных данных отсутствуют обложки фильмов?

    API Plex возвращает только ссылки на обложки (поле thumb или art в JSON), но не сами изображения. Чтобы загрузить обложки в Excel:

    1. Используйте функцию =ИЗОБРАЖЕНИЕ() (доступна в Excel 365) с URL из поля thumb.
    2. Или напишите макрос на VBA, который будет скачивать изображения по URL и вставлять их в ячейки.

    Пример формулы для Excel 365:
    =ИЗОБРАЖЕНИЕ("http://[IP_сервера]:32400" & [@thumb]; 2), где 2 — это стиль отображения (подгонка под ячейку).

    Как экспортировать данные о просмотрах конкретного пользователя?

    Для этого нужно работать напрямую с базой SQLite или использовать endpoint API /status/sessions/history/all (требуется Plex Pass). Пример SQL-запроса:

    SELECT
    

    mi.title,

    u.username,

    datetime(mis.viewed_at, 'unixepoch') AS watched_date,

    mis.view_offset / 1000 AS watch_duration_sec

    FROM metadata_item_settings mis

    JOIN metadata_items mi ON mis.guid = mi.guid

    JOIN users u ON mis.account_id = u.id

    WHERE u.username = 'ИмяПользователя'

    AND mis.viewed_at > 0

    ORDER BY watched_date DESC;

    В результате вы получите таблицу с названием фильма, именем пользователя, датой просмотра и длительностью.

    Можно ли автоматически обновлять данные в Excel при добавлении новых фильмов в Plex?

    Да, для этого настройте одно из следующих решений:

    1. Power Query + Power Automate:
      • Сохраните запрос в Power Query.
      • Создайте поток в Power Automate, который будет запускать обновление данных по расписанию или при изменении файла на сервере.
    2. Скрипт на Python:
      • Используйте библиотеки requests (для API) и openpyxl (для работы с Excel).
      • Запускайте скрипт по расписанию через cron или Task Scheduler.
  • Webhook + Zapier:
    • Настройте вебхук в Plex (через Tautulli), который будет отправлять уведомление при добавлении файла.