>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Rust

Pobieranie treści z Bilibili bezpośrednio do Emby z Tauri i Rust

Każdy, kto zbudował domowy serwer multimedialny z Emby lub Jellyfin, zna tę rutynę. Znajdujesz przydatny kurs, tutorial programistyczny lub wykłady z konferencji na chińskim Bilibili, uruchamiasz yt-dlp i otrzymujesz bezimienny plik mp4 bez okładki, opisu ani napisów. Potem spędzasz pół godziny na ręcznym wprowadzaniu metadanych, żeby odtwarzacz ładnie wyświetlił plakat i opisy odcinków.

Niedawno natknąłem się na otwarty projekt bilibili-video-downloader. To klient GUI na desktop, który zajmuje się całą żmudną pracą związaną z gromadzeniem metadanych i pobieraniem treści.

Co potrafi ta aplikacja

Główny zestaw funkcji kręci się wokół idei „pobrane i natychmiast wysłane do Emby". Aplikacja parsuje Bilibili i wyodrębnia materiały w najwyższej dostępnej jakości: 8K, HDR, Dolby Vision z kodekami AVC, HEVC lub AV1. To samo dotyczy dźwięku, w tym Flac i Dolby Atmos.

Poza podstawowym pobieraniem plików, narzędzie to rozwiązuje kilka konkretnych problemów:

  • Generowanie plików NFO i pobieranie grafik. Wraz z filmem pobierane są poster.jpg i fanart.jpg oraz plik .nfo zawierający opis, dzięki czemu Emby wyświetla kartę filmu lub kursu bez dodatkowych scraperów.
  • Konwersja komentarzy (danmaku). Pływające chińskie komentarze z XML lub JSON są automatycznie konwertowane na standardowe napisy .ass z możliwością dostosowania czcionek i stylów.
  • Oznaczanie rozdziałów i wycinanie integracji. Program pobiera znaczniki czasowe z filmu i osadza je jako rozdziały. Jeśli w filmie znajduje się promocyjna integracja, jest ona oznaczona jako osobny segment za pomocą bazy danych SponsorBlock, dzięki czemu kompatybilny odtwarzacz pomija ją w locie.
  • Elastyczne szablony nazewnictwa. Definiujesz własną strukturę folderów i nazwy plików za pomocą tagów takich jak BV-id, title, part, date i uploader.

Możesz zalogować się przez kod QR lub ciasteczko. Daje to dostęp do osobistych subskrypcji, historii oglądania, listy do obejrzenia później oraz treści premium, jeśli masz subskrypcję Bilibili.

Szczegóły techniczne

Deweloper lanyeeee wybrał Tauri v2 + Rust do backendu i Vue 3 z Naive UI do interfejsu. To solidny wybór: zamiast rozdętego Electrona z jego niekończącym się zużyciem pamięci, otrzymujemy kompaktowy plik binarny, który działa szybko nawet na słabszych maszynach. Pobieranie odbywa się w wielu wątkach z obsługą wznawiania w przypadku utraty połączenia.

Ciekawe szczegóły: projekt zawiera eksperymentalny system wtyczek zbudowany w Rust. Wykorzystuje dynamiczne biblioteki (.dll, .so, .dylib), które wykonują się w procesie aplikacji.

Nie ma tutaj izolacji ani piaskownicy. Autor jest otwarty w tej kwestii: podejście to daje wtyczkom pełną swobodę, ale wprowadza ryzyko bezpieczeństwa. Dlatego zaleceniem jest samodzielna kompilacja wtyczek ze źródeł po przejrzeniu kodu.

Jak zbudować projekt ze źródeł

Wstępnie zbudowane wydania dla Windows i macOS są dostępne na karcie Releases w GitHub. Aby zbudować plik binarny samodzielnie, potrzebujesz zainstalowanych Rust, Node.js i pnpm.

Proces budowania obejmuje trzy polecenia terminala:

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

Końcowy plik binarny znajdzie się w folderze src-tauri/target/release/bundle.

Dla kogo to jest

To narzędzie jest przydatne dla osób przechowujących materiały edukacyjne lokalnie lub konfigurujących domowy serwer multimedialny. To również solidne źródło odniesienia do budowania nowoczesnych aplikacji wieloplatformowych z Tauri v2, które obsługują złożone zadania, takie jak przetwarzanie mediów i konwersja napisów.

Powiązane projekty