>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Rust

Bilibili-content rechtstreeks downloaden naar Emby met Tauri en Rust

Iedereen die een thuismediaserver met Emby of Jellyfin heeft gebouwd, kent deze routine. Je vindt een nuttige cursus, ontwikkelingstutorial of conferentiepraatje op het Chinese Bilibili, draait yt-dlp en krijgt een naamloos mp4-bestand zonder cover, beschrijving of ondertitels. Vervolgens besteed je een half uur aan het handmatig invoeren van metadata, zodat de speler netjes de poster en afleveringsbeschrijvingen ophaalt.

Onlangs stuitte ik op het open-source project bilibili-video- down loader. Het is een desktop GUI-client die al het vervelende werk van het verzamelen van metadata en het downloaden van content voor zijn rekening neemt.

Wat de app kan doen

De hoofdfuncties draaien om het idee van "gedownload en direct naar Emby gepusht." De app parseert Bilibili en haalt materialen in de hoogste beschikbare kwaliteit: 8K, HDR, Dolby Vision met AVC, HEVC of AV1-codecs. Hetzelfde geldt voor audio, inclusief Flac en Dolby Atmos.

Naast basisbestandsdownload pakt de utility verschillende specifieke pijnpunten aan:

  • NFO-bestandsgeneratie en artwork-download. Samen met de video worden poster.jpg en fanart.jpg gedownload, samen met een .nfo-bestand met de beschrijving, zodat Emby de film- of cursuskaart ophaalt zonder extra scrapers.
  • Commentaren converteren (danmaku). Zwevende Chinese commentaren van XML of JSON worden automatisch geconverteerd naar standaard .ass-ondertitels met aanpasbare lettertypen en stijlen.
  • Hoofdstukmarkering en integratiesnijden. Het programma haalt timestamps uit de video en embedt ze als hoofdstukken. Als er een promotie-integratie in de video zit, wordt deze gemarkeerd als een apart segment via de SponsorBlock-database, zodat een compatibele speler dit direct overslaat.
  • Flexibele naamgevingstemplates. Je definieert je eigen mapstructuur en bestandsnamen met tags zoals BV-id, title, part, date en uploader.

Je kunt inloggen via QR-code of cookie. Dit geeft toegang tot persoonlijke abonnementen, kijkgeschiedenis, bekijk-later-lijst en premium content als je een Bilibili-abonnement hebt.

Technische details

Ontwikkelaar lanyeeee koos voor Tauri v2 + Rust voor de backend en Vue 3 met Naive UI voor de interface. Het is een solide keuze: in plaats van de logge Electron met zijn eindeloze geheugenverbruik krijgen we een compact binair bestand dat snel draait, zelfs op goedkope machines. Downloads draaien in meerdere threads met ondersteuning voor hervatten als de verbinding wegvalt.

Een interessant detail: het project bevat een experimenteel plug-insysteem gebouwd in Rust. Het maakt gebruik van dynamische bibliotheken (.dll, .so, .dylib) die binnen het applicatieproces worden uitgevoerd.

Er is hier geen isolatie of sandboxing. De auteur is hier open over: de aanpak geeft plug-ins complete vrijheid maar brengt beveiligingsrisico's met zich mee. Dus de aanbeveling is om plug-ins zelf te compileren vanuit de broncode na het controleren van de code.

Hoe het project te bouwen vanuit de broncode

Voorgebouwde releases voor Windows en macOS zijn beschikbaar op het Releases-tabblad in GitHub. Om het binaire bestand zelf te bouwen, heb je Rust, Node.js en pnpm geïnstalleerd nodig.

Het bouwproces omvat drie terminalcommando's:

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

Het uiteindelijke binaire bestand bevindt zich in de src-tauri/target/release/bundle-map.

Voor wie is dit

Dit hulpmiddel is nuttig voor degenen die educatieve materialen lokaal opslaan of een thuismediaserver opzetten. Het is ook een solide referentie voor het bouwen van moderne cross-platform apps met Tauri v2 die complexe taken afhandelen zoals mediaprocessing en ondertitelconversie.

Gerelateerde projecten