# abcliyew/bilibili-api architecture

> Architecture diagram of the GitHub repository abcliyew/bilibili-api, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/abcliyew/bilibili-api
- Repository: https://github.com/abcliyew/bilibili-api

## Overview

Bilibili API is a Java client library for retrieving Bilibili account, video, dynamic, live, and other platform data. Callers use its facades and services to request and receive typed results; the video client also exposes convenient video-field accessors. Separate service branches cover search, login, user space, comments, and personal content. Shared HTTP, WBI signing, and response parsing support these operations, while dynamic-image rendering is an additional result path. README documents the broad feature set; only sampled service excerpts confirm some internal wiring, so uncertain links are omitted.

Main entry points: [`src/main/java/com/esdllm/bilibiliApi/http/BilibiliHttp.java`](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/http/BilibiliHttp.java) (HTTP Client), [`src/main/java/com/esdllm/bilibiliApi/service/VideoService.java`](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/VideoService.java) (Video Service), [`src/main/java/com/esdllm/bilibiliApi/service/UserService.java`](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/UserService.java) (User Space), [`src/main/java/com/esdllm/bilibiliApi/service/DynamicService.java`](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/DynamicService.java) (Dynamic Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API Facades"]
  node_client["Video Client"]
end

subgraph group_domain["Data Services"]
  node_video["Video Service<br/>[VideoService.java]"]
  node_user["User Space<br/>[UserService.java]"]
  node_dynamic["Dynamic Service"]
  node_search["Search Service<br/>[SearchService.java]"]
  node_login["Login Service<br/>[LoginService.java]"]
  node_comment["Comment Service"]
  node_favorite["Favorites"]
  node_history["History"]
  node_live["Live Service<br/>[LiveService.java]"]
  node_danmaku["Danmaku"]
  node_shortlink["Short Links"]
end

subgraph group_runtime["Request Runtime"]
  node_http["HTTP Client<br/>[BilibiliHttp.java]"]
  node_signer["WBI Signer<br/>[WbiSigner.java]"]
  node_keystore["WBI Key Cache<br/>[WbiKeyStore.java]"]
  node_parser["Response Parser"]
  node_models["Typed Models<br/>[BilibiliData.java]"]
end

subgraph group_render["Dynamic Rendering"]
  node_adapter["Dynamic Adapter"]
  node_loader["Render Loader"]
  node_renderer["Java2D Renderer"]
end

node_caller(("Library Caller"))
node_platform(("Bilibili API"))

node_caller -->|"calls"| node_client
node_caller -->|"calls"| node_video
node_caller -->|"calls"| node_user
node_caller -->|"calls"| node_dynamic
node_caller -->|"calls"| node_search
node_caller -->|"calls"| node_login
node_caller -->|"calls"| node_comment
node_caller -->|"calls"| node_favorite
node_caller -->|"calls"| node_history
node_caller -->|"calls"| node_live
node_caller -->|"calls"| node_danmaku
node_caller -->|"calls"| node_shortlink
node_client -->|"resolves via"| node_video
node_video -->|"requests"| node_http
node_user -->|"requests"| node_http
node_search -->|"requests"| node_http
node_login -->|"requests"| node_http
node_comment -->|"requests"| node_http
node_favorite -->|"requests"| node_http
node_history -->|"requests"| node_http
node_live -->|"requests"| node_http
node_danmaku -->|"requests"| node_http
node_shortlink -->|"requests"| node_http
node_http -->|"sends requests"| node_platform
node_platform -->|"returns responses"| node_http
node_search -->|"parses with"| node_parser
node_comment -->|"parses with"| node_parser
node_favorite -->|"parses with"| node_parser
node_video -->|"signs requests"| node_signer
node_user -->|"signs requests"| node_signer
node_signer -->|"gets keys"| node_keystore
node_dynamic -->|"loads render model"| node_loader
node_loader -->|"normalizes schema"| node_adapter
node_dynamic -->|"renders model"| node_renderer

click node_client "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/bilibiliApi/BilibiliClient.java"
click node_video "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/VideoService.java"
click node_user "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/UserService.java"
click node_dynamic "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/DynamicService.java"
click node_search "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/SearchService.java"
click node_login "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/LoginService.java"
click node_comment "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/CommentService.java"
click node_favorite "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/FavoriteService.java"
click node_history "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/HistoryService.java"
click node_live "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/LiveService.java"
click node_danmaku "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/DanmakuService.java"
click node_shortlink "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/ShortLinkService.java"
click node_http "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/http/BilibiliHttp.java"
click node_signer "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/sign/WbiSigner.java"
click node_keystore "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/sign/WbiKeyStore.java"
click node_parser "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/parse/ResponseParserSupport.java"
click node_models "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/model/data/BilibiliData.java"
click node_adapter "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/adapter/DynamicSchemaAdapter.java"
click node_loader "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/render/RenderModelLoader.java"
click node_renderer "https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/render/Java2DImageRenderer.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_client toneBlue
class node_video,node_user,node_dynamic,node_search,node_login,node_comment,node_favorite,node_history,node_live,node_danmaku,node_shortlink toneAmber
class node_http,node_signer,node_keystore,node_parser,node_models,node_platform toneMint
class node_adapter,node_loader,node_renderer toneRose
class node_caller toneIndigo
```

## Components

### API Facades

- [Video Client](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/bilibiliApi/BilibiliClient.java): `src/main/java/com/esdllm/bilibiliApi/bilibiliApi/BilibiliClient.java`

### Data Services

- [Video Service](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/VideoService.java): `src/main/java/com/esdllm/bilibiliApi/service/VideoService.java`
- [User Space](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/UserService.java): `src/main/java/com/esdllm/bilibiliApi/service/UserService.java`
- [Dynamic Service](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/DynamicService.java): `src/main/java/com/esdllm/bilibiliApi/service/DynamicService.java`
- [Search Service](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/SearchService.java): `src/main/java/com/esdllm/bilibiliApi/service/SearchService.java`
- [Login Service](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/LoginService.java): `src/main/java/com/esdllm/bilibiliApi/service/LoginService.java`
- [Comment Service](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/CommentService.java): `src/main/java/com/esdllm/bilibiliApi/service/CommentService.java`
- [Favorites](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/FavoriteService.java): `src/main/java/com/esdllm/bilibiliApi/service/FavoriteService.java`
- [History](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/HistoryService.java): `src/main/java/com/esdllm/bilibiliApi/service/HistoryService.java`
- [Live Service](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/LiveService.java): `src/main/java/com/esdllm/bilibiliApi/service/LiveService.java`
- [Danmaku](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/DanmakuService.java): `src/main/java/com/esdllm/bilibiliApi/service/DanmakuService.java`
- [Short Links](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/service/ShortLinkService.java): `src/main/java/com/esdllm/bilibiliApi/service/ShortLinkService.java`

### Request Runtime

- [HTTP Client](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/http/BilibiliHttp.java): `src/main/java/com/esdllm/bilibiliApi/http/BilibiliHttp.java`
- [WBI Signer](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/sign/WbiSigner.java): `src/main/java/com/esdllm/bilibiliApi/sign/WbiSigner.java`
- [WBI Key Cache](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/sign/WbiKeyStore.java): `src/main/java/com/esdllm/bilibiliApi/sign/WbiKeyStore.java`
- [Response Parser](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/parse/ResponseParserSupport.java): `src/main/java/com/esdllm/bilibiliApi/parse/ResponseParserSupport.java`
- [Typed Models](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/model/data/BilibiliData.java): `src/main/java/com/esdllm/bilibiliApi/model/data/BilibiliData.java`

### Dynamic Rendering

- [Dynamic Adapter](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/adapter/DynamicSchemaAdapter.java): `src/main/java/com/esdllm/bilibiliApi/adapter/DynamicSchemaAdapter.java`
- [Render Loader](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/render/RenderModelLoader.java): `src/main/java/com/esdllm/bilibiliApi/render/RenderModelLoader.java`
- [Java2D Renderer](https://github.com/abcliyew/bilibili-api/blob/main/src/main/java/com/esdllm/bilibiliApi/render/Java2DImageRenderer.java): `src/main/java/com/esdllm/bilibiliApi/render/Java2DImageRenderer.java`

### Other components

- **Library Caller**
- **Bilibili API**

## Connections

- Library Caller → Video Client: calls
- Library Caller → Video Service: calls
- Library Caller → User Space: calls
- Library Caller → Dynamic Service: calls
- Library Caller → Search Service: calls
- Library Caller → Login Service: calls
- Library Caller → Comment Service: calls
- Library Caller → Favorites: calls
- Library Caller → History: calls
- Library Caller → Live Service: calls
- Library Caller → Danmaku: calls
- Library Caller → Short Links: calls
- Video Client → Video Service: resolves via
- Video Service → HTTP Client: requests
- User Space → HTTP Client: requests
- Search Service → HTTP Client: requests
- Login Service → HTTP Client: requests
- Comment Service → HTTP Client: requests
- Favorites → HTTP Client: requests
- History → HTTP Client: requests
- Live Service → HTTP Client: requests
- Danmaku → HTTP Client: requests
- Short Links → HTTP Client: requests
- HTTP Client → Bilibili API: sends requests
- Bilibili API → HTTP Client: returns responses
- Search Service → Response Parser: parses with
- Comment Service → Response Parser: parses with
- Favorites → Response Parser: parses with
- Video Service → WBI Signer: signs requests
- User Space → WBI Signer: signs requests
- WBI Signer → WBI Key Cache: gets keys
- Dynamic Service → Render Loader: loads render model
- Render Loader → Dynamic Adapter: normalizes schema
- Dynamic Service → Java2D Renderer: renders model
