Об этом проекте

## Обзор проекта etlp (embyToLocalPlayer) — это инструмент-мост для локальных плееров: при нажатии исходной кнопки воспроизведения на веб-странице Emby / Jellyfin он запускает воспроизведение в установленном на компьютере плеере, а после корректного закрытия плеера передаёт прогресс воспроизведения обратно на медиасервер. В README указана совместимость с Plex. ## Основные возможности - Воспроизведение прямо с главной страницы: запускается нажатием исходной кнопки; для видео с несколькими версиями можно настроить приоритет версий. - Поддержка плейлистов (непрерывное воспроизведение), следующий эпизод использует ту же версию. - Односторонняя отметка просмотренного в bgm.tv / bangumi.tv, simkl.com, trakt.tv. - Пользователи с локальным монтированием могут переходить к папке, соответствующей пути (кнопка отображается над путём к файлу на веб-странице). - Неадаптированные плееры обычно тоже можно вызвать, но прогресс не передаётся обратно. - Возможность воспроизведения или перехода к смонтированной папке прямо в qBittorrent WebUI (требуется дополнительный скрипт). - В комплекте псевдоагрегирующий поисковый скрипт (embyEverywhere). ## Плееры с поддержкой передачи прогресса mpv (включая mpv.net и другие плееры на ядре mpv), PotPlayer, MPC-HC, MPC-BE, VLC, IINA (macOS). В README рекомендуется при отсутствии особых требований отдавать предпочтение плеерам на базе mpv. ## Установка и запуск 1. Установите в браузере расширение Tampermonkey или Violentmonkey (или аналогичное) и включите режим разработчика, установите соответствующий скрипт и обновите страницу Emby. 2. Скачайте и распакуйте zip со страницы релизов в путь без кириллицы, три варианта: - `etlp-mpv-py-embed-win32.zip` (Windows, встроенный mpv, без изменения конфигурации); - `etlp-python-embed-win32.zip` (Windows, требуется указать путь к плееру и выбор в ini); - `embyToLocalPlayer.zip` (Windows / Linux / macOS, требуется самостоятельная установка Python и изменение конфигурации). 3. В Windows дважды щёлкните `embyToLocalPlayer_debug.bat`, нажмите 1 для тестового запуска в переднем плане, 2 — для создания автозапуска в фоне при включении системы. 4. В macOS / Linux запуск через `etlp_run.command`, также приведены примеры автозапуска через элементы входа, systemd-сервис и т.п. Минимальная версия Python — 3.8, минимальная версия Windows — 10. ## Режимы и ключевые моменты конфигурации - Переключение через меню расширения: включение/отключение скрипта, переключатель режима чтения с диска. - Режим чтения с диска преобразует пути сервера в локальные адреса файлов, требуется заполнить правила замены путей в ini; `dev > path_check = yes` позволяет проверять существование файла и обрабатывать NFC/NFD. - Режим постоянного кэша зависит только от файла конфигурации и не конфликтует с настройками расширения. - Обновление: в Windows в bat нажмите 6, в Linux/macOS выполните `python3 utils/update.py` и сравните с `embyToLocalPlayer_diff.ini`. ## Частые вопросы и ограничения - Передача прогресса происходит только после закрытия плеера; появление в логе `serving at 127.0.0.1:58000` означает успешный запуск службы. - Встроенные субтитры/выбор аудиодорожки в Emby не работают, внешние субтитры/дорожки работают; встроенные субтитры выбираются плеером. - Плейлисты включены по умолчанию, отключать не рекомендуется; кнопки «воспроизвести всё»/«случайное воспроизведение»/«плейлист» на веб-странице поддерживаются только для фильмов и музыкальных видео. - PotPlayer может столкнуться с ошибками рендеринга Pin, `KeyError: 'stream.mkv'` и т.п.; в README приведены шаги по начальной настройке, смене версии, переходу на режим чтения с диска. - IINA требует настройки выхода после завершения воспроизведения, иначе это повлияет на передачу прогресса; в не-режиме чтения с диска плейлисты не поддерживаются. - В Jellyfin при повторном воспроизведении того же файла в течение 10 секунд после завершения на главной странице время воспроизведения может быть ошибочным. - Домен Plex может быть подвержен DNS-загрязнению, требуется изменить DNS или использовать прокси. ## Синхронизация истории просмотра - bangumi.tv: требуется создать токен доступа и заполнить ini, синхронизация только односторонняя, поддерживаются только обычные серии, не поддерживаются полнометражные версии и т.п.; в README подробно описаны стратегии распознавания продолжений и сопоставления дат выхода. - simkl: требуется создать приложение на dev-странице, Redirect uri — `http://localhost:58000/simkl_auth`, заполнить client_id/secret для автоматической авторизации. - trakt.tv: требуется создать приложение, Redirect uri — `http://localhost:58000/trakt_auth`, заполнить user_name/client_id/client_secret для авторизации. - Все три синхронизируются только после корректного закрытия плеера, отметка «просмотрено» через клик на веб-странице не запускает синхронизацию. ## Скрытые функции (в README отмечены как не поддерживаемые) Включают воспроизведение iso-образов/bdmv (рекомендуется VLC, для iso передача прогресса не поддерживается), локальное перенаправление/замену адресов воспроизведения, синхронизацию прогресса для strm по LAN, передачу данных mpv в lua-скрипты, автоматический пропуск интро и титров в mpv, предварительное чтение следующего эпизода, предварительное чтение «продолжить просмотр», Telegram-уведомления о новых сериях, постоянный кэш (воспроизведение во время загрузки), поддержку плеера с дансями DanDanPlay, а также плейлисты в режиме чтения с диска Pot, ориентированные на Emby. ## Требования к обратной связи В README подчёркивается: перед отправкой отзыва обновитесь до последней версии, протестируйте на портативной версии с mpv, проверьте как минимум два видео, предоставьте логи и шаги воспроизведения; отзывы, не соответствующие этим требованиям, игнорируются.