Sobre o projeto

## Visão geral do projeto etlp (embyToLocalPlayer) é uma ferramenta de ponte para player local: ao clicar no botão de reprodução original na página web do Emby / Jellyfin, em vez disso é chamado o player instalado na máquina local para reproduzir, e após o player sair normalmente o progresso de reprodução é enviado de volta ao servidor de mídia. O README indica que é adaptado para Plex. ## Principais capacidades - Reprodução direto na página inicial, acionada pelo botão de reprodução original; vídeos com múltiplas versões podem ter prioridade de versão configurada. - Suporte a lista de reprodução (reprodução contínua), mantendo a mesma versão no próximo episódio. - Suporte a marcação unidirecional de assistido em bgm.tv / bangumi.tv, simkl.com, trakt.tv. - Usuários com montagem local podem saltar para a pasta correspondente ao caminho (botão exibido acima do caminho do arquivo na página web). - Players não adaptados geralmente também podem ser chamados, apenas não retornam o progresso. - É possível reproduzir diretamente ou saltar para a pasta montada no qBittorrent WebUI (requer script complementar). - Inclui script de busca pseudo-agregada (embyEverywhere). ## Players com suporte a retorno de progresso mpv (incluindo mpv.net e outros players com núcleo mpv), PotPlayer, MPC-HC, MPC-BE, VLC, IINA (macOS). O README recomenda priorizar a família mpv quando não houver necessidades especiais. ## Instalação e execução 1. Instale Tampermonkey ou Violentmonkey e similares no navegador, ative o modo desenvolvedor, instale o userscript correspondente e atualize a página do Emby. 2. Baixe e descompacte o zip da página de releases em um caminho em inglês; três opções: - `etlp-mpv-py-embed-win32.zip` (Windows, mpv embutido, sem necessidade de alterar configuração); - `etlp-python-embed-win32.zip` (Windows, requer configurar o caminho e a seleção do player no ini); - `embyToLocalPlayer.zip` (Windows / Linux / macOS, requer instalar Python por conta própria e modificar a configuração). 3. No Windows, dê duplo clique em `embyToLocalPlayer_debug.bat`, pressione 1 para executar em primeiro plano e testar, pressione 2 para criar inicialização automática em segundo plano. 4. No macOS / Linux, execute via `etlp_run.command`, com exemplos de inicialização automática por itens de login, serviço systemd, etc. Python mínimo suportado é 3.8, Windows mínimo suportado é 10. ## Modos e pontos de configuração - Alternar pelo menu do userscript: ativar/desativar script, chave do modo de leitura do disco rígido. - O modo de leitura do disco rígido converte o caminho do servidor em endereço de arquivo local; é necessário preencher as regras de substituição de caminho no ini; `dev > path_check = yes` pode verificar a existência do arquivo e tratar NFC/NFD. - O modo de cache persistente considera apenas o arquivo de configuração, sem conflito com as configurações do userscript. - Atualização: no Windows pressione 6 no bat, no Linux/macOS execute `python3 utils/update.py`, e compare com `embyToLocalPlayer_diff.ini`. ## Perguntas frequentes e limitações - O player precisa ser encerrado para acionar o retorno de progresso; o aparecimento de `serving at 127.0.0.1:58000` no log indica que o serviço iniciou com sucesso. - A seleção de legendas/faixas de áudio embutidas do Emby não tem efeito; legendas/faixas de áudio externas funcionam; legendas embutidas ficam a cargo do player. - A lista de reprodução é ativada por padrão; recomenda-se não desativar; reproduzir tudo / reprodução aleatória / lista de reprodução na página web só suportam tipos filme e vídeo musical. - O PotPlayer pode encontrar falhas de renderização de Pin, `KeyError: 'stream.mkv'` e outros problemas; o README fornece etapas de diagnóstico como configuração inicial, troca de versão e mudança para o modo de leitura de disco. - O IINA precisa ser configurado para sair ao terminar a reprodução, caso contrário afeta o retorno de progresso; o modo sem leitura de disco não suporta lista de reprodução. - Na página inicial do Jellyfin, se o mesmo arquivo for reproduzido novamente dentro de 10 segundos após o término, o tempo de reprodução pode ficar incorreto. - O domínio do Plex pode sofrer poluição de DNS; é necessário alterar o DNS ou usar proxy. ## Sincronização de histórico de visualização - bangumi.tv: é necessário criar um token de acesso e preencher no ini; sincronização apenas unidirecional, suporta apenas séries regulares, não suporta filmes de cinema etc.; o README detalha a estratégia de identificação de sequências e correspondência de datas de lançamento. - simkl: é necessário criar um app na página dev, Redirect uri como `http://localhost:58000/simkl_auth`, preencher client_id/secret e autorizar automaticamente. - trakt.tv: é necessário criar um app, Redirect uri como `http://localhost:58000/trakt_auth`, preencher user_name/client_id/client_secret e autorizar. - Os três só sincronizam após o fechamento normal do player; clicar em já reproduzido na página web não aciona. ## Funções ocultas (README indica sem suporte) Incluem reprodução de iso de disco original/bdmv (recomenda-se VLC; iso não suporta retorno de progresso), redirecionamento/substituição local de endereço de reprodução, sincronização de progresso de reprodução de strm em rede local, passagem de dados do mpv para script lua, pulo automático de abertura e encerramento no mpv, pré-leitura do próximo episódio, pré-leitura de continuar assistindo, notificação Telegram de acompanhamento, cache persistente (reproduzir enquanto baixa), suporte ao player de danmaku 弹弹play, e lista de reprodução com base no Emby no modo de leitura de disco do Pot, etc. ## Requisitos de feedback O README enfatiza que antes do feedback deve-se atualizar para a versão mais recente, testar com a versão portátil que inclui mpv, testar pelo menos dois vídeos, fornecer logs e passos de reprodução; feedback fora dos requisitos será ignorado.