How baiyang520/allmusic_netapi works
netapi-bilibili is an AllMusic music-source adapter: AllMusic requests search results or resolves a BV/av ID into video metadata and a playable URL. Playback retrieves the best available audio stream, remuxes it to M4A, caches it, and exposes it over a local HTTP server for the client. The graph reflects sampled call paths and documented playback behavior; some stream-server internals were only partially sampled.
Main entry points: BilibiliStreamServer.java Stream Server · BilibiliApi.java Bilibili API · BilibiliHttpClient.java HTTP Client · BiliApiMain.java Music API Adapter
Components 12
AllMusic Adapter
- Music API Adapter
src/main/java/io/github/Baiyang521/netapi/BiliApiMain.java
Bilibili API
- Bilibili API
src/main/java/io/github/Baiyang521/netapi/bilibili/BilibiliApi.java - Video Metadata
src/main/java/io/github/Baiyang521/netapi/bilibili/VideoInfo.java - Session and WBI
src/main/java/io/github/Baiyang521/netapi/bilibili/BilibiliSession.java - WBI Signer
src/main/java/io/github/Baiyang521/netapi/bilibili/BilibiliWbiSigner.java - HTTP Client
src/main/java/io/github/Baiyang521/netapi/bilibili/BilibiliHttpClient.java
Playback Serving
- Stream Server
src/main/java/io/github/Baiyang521/netapi/bilibili/BilibiliStreamServer.java - M4A Remuxer
src/main/java/io/github/Baiyang521/netapi/bilibili/BilibiliRemuxer.java - M4A Cache
src/main/java/io/github/Baiyang521/netapi/bilibili/BilibiliStreamServer.java
Other components
- AllMusic Server
- Bilibili APIs
- AllMusic Client
Connections 15
- AllMusic Server → Music API Adapter: calls API
- Music API Adapter → Bilibili API: searches / resolves
- Bilibili API → Session and WBI: gets signing key
- Session and WBI → WBI Signer: derives key
- Session and WBI → HTTP Client: fetches session data
- Bilibili API → WBI Signer: signs search
- Bilibili API → HTTP Client: requests metadata / audio
- HTTP Client → Bilibili APIs: sends requests
- Bilibili API → Video Metadata: builds metadata
- Music API Adapter → Stream Server: creates stream URL
- Stream Server → HTTP Client: downloads audio
- Stream Server → M4A Remuxer: remuxes audio
- Stream Server → M4A Cache: reads / writes M4A
- AllMusic Client → Stream Server: requests playback
- Stream Server → AllMusic Client: serves M4A