>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Rust

Baixando Conteúdo do Bilibili Diretamente para o Emby com Tauri e Rust

Qualquer pessoa que montou um servidor de mídia caseiro com Emby ou Jellyfin conhece essa rotina. Você encontra um curso útil, tutorial de programação ou palestras de conferência no Bilibili chinês, roda o yt-dlp e obtém um arquivo mp4 sem nome, sem capa, descrição ou legendas. Depois você passa meia hora inserindo metadados manualmente para que o player exiba corretamente o pôster e as descrições dos episódios.

Recentemente encontrei o projeto open-source bilibili-video-downloader. É um cliente GUI desktop que cuida de todo o trabalho tedioso de coletar metadados e baixar conteúdo.

O que o aplicativo pode fazer

O conjunto principal de recursos gira em torno da ideia de "baixado e imediatamente enviado para o Emby". O aplicativo analisa o Bilibili e extrai materiais na mais alta qualidade disponível: 8K, HDR, Dolby Vision com codecs AVC, HEVC ou AV1. O mesmo se aplica ao áudio, incluindo Flac e Dolby Atmos.

Além do download básico de arquivos, o utilitário aborda vários pontos específicos de dor:

  • Geração de arquivos NFO e download de arte. Junto com o vídeo, poster.jpg e fanart.jpg são baixados junto com um arquivo .nfo contendo a descrição, para que o Emby exiba o cartão do filme ou curso sem scrapers adicionais.
  • Convertendo comentários (danmaku). Comentários flutuantes chineses de XML ou JSON são automaticamente convertidos para legendas .ass padrão com fontes e estilos personalizáveis.
  • Marcação de capítulos e corte de integrações. O programa pega os timestamps do vídeo e os incorpora como capítulos. Se houver uma integração promocional no vídeo, ela é marcada como um segmento separado através do banco de dados do SponsorBlock, para que um player compatível pule automaticamente.
  • Modelos de nomenclatura flexíveis. Você define sua própria estrutura de pastas e nomes de arquivos usando tags como BV-id, título, parte, data e uploader.

Você pode fazer login via código QR ou Cookie. Isso concede acesso a inscrições pessoais, histórico de visualização, lista de 'assistir depois' e conteúdo premium se você tiver uma assinatura do Bilibili.

Detalhes técnicos

O desenvolvedor lanyeeee escolheu Tauri v2 + Rust para o backend e Vue 3 com Naive UI para a interface. É uma escolha sólida: em vez do inchado Electron com seu consumo infinito de memória, obtemos um binário compacto que roda rapidamente mesmo em máquinas de baixo custo. Os downloads são executados em múltiplas threads com suporte a retomada se a conexão cair.

Um detalhe interessante: o projeto inclui um sistema de plugins experimental construído em Rust. Ele utiliza bibliotecas dinâmicas (.dll, .so, .dylib) que são executadas dentro do processo do aplicativo.

Não há isolamento ou sandboxing aqui. O autor é direto sobre isso: a abordagem concede aos plugins total liberdade, mas introduz riscos de segurança. Portanto, a recomendação é compilar os plugins você mesmo a partir do código-fonte após revisá-lo.

Como compilar o projeto a partir do código-fonte

Lançamentos pré-compilados para Windows e macOS estão disponíveis na aba Releases no GitHub. Para compilar o binário você mesmo, você precisará ter Rust, Node.js e pnpm instalados.

O processo de compilação envolve três comandos no terminal:

git clone https://github.com/lanyeeee/bilibili-video-downloader.git
cd bilibili-video-downloader
pnpm install
pnpm tauri build

O binário final estará localizado na pasta src-tauri/target/release/bundle.

Para quem é isso

Esta ferramenta é útil para quem armazena materiais educacionais localmente ou configura um servidor de mídia caseiro. Também é uma boa referência para construir aplicativos cross-platform modernos com Tauri v2 que lidam com tarefas complexas como processamento de mídia e conversão de legendas.

Projetos relacionados