Если вы пытаетесь экспортировать данные из 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 одним кликом. Алгоритм действий:
- Получите токен API:
- Откройте Plex Web App.
- Нажмите
F12(инструменты разработчика) → вкладкаNetwork. - Обновите страницу, найдите запрос к
/api/v2/resources. - В заголовках запроса скопируйте значение
X-Plex-Token.
- Сформируйте URL для API:
Базовый формат:
http://[IP_вашего_сервера]:32400/library/sections/[ID_библиотеки]/all?X-Plex-Token=[ваш_токен]Чтобы узнать
ID_библиотеки, выполните запрос:
http://[IP_вашего_сервера]:32400/library/sections?X-Plex-Token=[ваш_токен] - Импортируйте данные в Excel:
- В Excel перейдите на вкладку
Данные→Получить данные→Из других источников→Из веб. - Вставьте сформированный URL, нажмите
OK. - В открывшемся окне
Power Queryвыберите таблицу с данными (обычно она одна). - Преобразуйте JSON в таблицу: нажмите на иконку
▶рядом с колонкойMetadata.
- В Excel перейдите на вкладку
После импорта вы получите таблицу со всеми фильмами/сериалами из выбранной библиотеки. Чтобы автоматизировать обновление, сохраните запрос и настройте периодическую выгрузку через Обновить все (вкладка Данные).
Проверьте, что Plex сервер запущен и доступен по сети|Убедитесь, что токен API действителен (срок действия не истёк)|Отключите VPN/прокси, если они мешают подключению|Создайте резервную копию Excel-файла перед импортом-->
3. Способ 2: Использование надстройки PlexExporter
Если работа с API кажется сложной, можно воспользоваться готовой надстройкой PlexExporter (доступна на GitHub). Она позволяет экспортировать данные в CSV/Excel без ручного формирования запросов. Преимущества метода:
- 🔧 Не требует знания API или SQL.
- 📊 Экспортирует расширенные данные: жанры, актеры, студии, пользовательские теги.
- 🔄 Поддерживает планировщик задач для автоматического обновления.
Инструкция по установке:
- Скачайте последнюю версию PlexExporter с страницы релизов (выбирайте версию под свою ОС).
- Распакуйте архив и запустите
PlexExporter.exe(для Windows) или скриптplexexporter.py(для Linux/macOS). - Введите данные для подключения:
- Адрес сервера (например,
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) содержит всю информацию о медиатеке, включая:
- 🎬 Методанные фильмов/сериалов (название, год, рейтинг, описание).
- 📁 Структуру папок и пути к файлам.
- 👥 Данные о пользователях и их активности.
- 📊 Статистику просмотров и историю.
Чтобы экспортировать данные:
- Остановите Plex Media Server (через
Настройки→Сервер→Остановить сервер). - Скопируйте файл базы данных (обычно расположен по пути:
- 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
- Windows:
-- Экспорт всех фильмов с рейтингом и датой добавления
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.Преимущество этого метода — доступ к данным, которые не возвращает 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, настройте следующую схему:
- Для API + Power Query:
- Сохраните запрос в
Power Queryкак функцию. - Создайте параметр для
X-Plex-Tokenи пути к серверу. - Используйте Power Automate (бывший Microsoft Flow) для запуска обновления по триггеру (например, при изменении файла на сервере).
- Сохраните запрос в
- Для PlexExporter:
- Настройте
Task Scheduler(Windows) илиcron(Linux/macOS) для регулярного запуска утилиты. - Добавьте команду для автоматического открытия сгенерированного
.xlsx-файла в Excel.
- Настройте
- Для прямого экспорта из SQLite:
- Напишите скрипт на Python или Bash, который будет:
- Копировать базу данных в временную папку.
- Выполнять SQL-запрос и экспортировать результаты в
CSV. - Обновлять данные в Excel через
xlwings(Python) илиCOM-объект.
- Напишите скрипт на Python или Bash, который будет:
- Запускайте скрипт по расписанию или через вебхук при добавлении файлов в 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(пустые значения).
Пример создания сводной таблицы для анализа жанров:
- Выделите импортированные данные (включая заголовки).
- Перейдите на вкладку
Вставка→Сводная таблица. - В настройках сводной таблицы:
- Перетащите
genreв полеСтроки. - Перетащите
titleв полеЗначения(Excel автоматически посчитает количество). - Добавьте
ratingвЗначенияи выберитеСреднее.
- Перетащите
Для визуализации динамики пополнения коллекции:
- Создайте столбец с годом добавления (извлеките год из
added_dateс помощью функции=ГОД()). - Постройте сводную таблицу с группировкой по годам.
- На основе сводной таблицы создайте
Гистограмму(вкладкаВставка→Гистограмма).
Чтобы автоматизировать создание отчётов, запишите макрос в Excel (Вид → Макросы → Записать макрос) или используйте Power BI для более сложной аналитики.
8. Альтернативные инструменты для работы с данными Plex
Если Excel не подходит для ваших задач, рассмотрите следующие альтернативы:
| Инструмент | Преимущества | Недостатки |
|---|---|---|
| Tautulli |
|
Требует отдельной установки и настройки. |
| Plex Meta Manager |
|
Сложная конфигурация для новичков. |
| Google Sheets + Apps Script |
|
Ограничения на количество запросов к API. |
| Notion + API |
|
Нет продвинутой аналитики. |
Для визуализации данных можно использовать Tableau Public (бесплатная версия) или Metabase (open-source). Эти инструменты позволяют создавать интерактивные дашборды на основе данных из Plex, например:
- 📈 Тепловую карту просмотров по дням недели.
- 🎯 Диаграмму рассеивания для анализа зависимости рейтинга от года выпуска.
- 🗺️ Карту с распределением фильмов по странам производства.
Если вам нужна максимальная автоматизация, комбинируйте Plex API с Zapier или Make (ex-Integromat). Например, можно настроить цепочку:
- Триггер:
Новый файл добавлен в Plex(через вебхук). - Действие:
Обновить Google Sheets. - Действие:
Отправить уведомление в Telegram.
FAQ: Частые вопросы по интеграции Plex и Excel
Можно ли экспортировать данные из Plex в Excel без использования API?
Да, есть два альтернативных способа:
- Прямая работа с базой данных SQLite (см. раздел 4). Этот метод даёт доступ ко всем данным, включая историю просмотров и пользовательские настройки.
- Использование надстроек вроде PlexExporter (см. раздел 3), которые упрощают экспорт без ручного формирования запросов.
Однако оба метода требуют доступа к файлам сервера, что может быть невозможно, если Plex установлен на удалённом NAS или в облаке.
Почему в экспортированных данных отсутствуют обложки фильмов?
API Plex возвращает только ссылки на обложки (поле thumb или art в JSON), но не сами изображения. Чтобы загрузить обложки в Excel:
- Используйте функцию
=ИЗОБРАЖЕНИЕ()(доступна в Excel 365) с URL из поляthumb. - Или напишите макрос на 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?
Да, для этого настройте одно из следующих решений:
- Power Query + Power Automate:
- Сохраните запрос в
Power Query. - Создайте поток в Power Automate, который будет запускать обновление данных по расписанию или при изменении файла на сервере.
- Сохраните запрос в
- Скрипт на Python:
- Используйте библиотеки
requests(для API) иopenpyxl(для работы с Excel). - Запускайте скрипт по расписанию через
cronилиTask Scheduler.
- Используйте библиотеки
- Настройте вебхук в Plex (через Tautulli), который будет отправлять уведомление при добавлении файла.