# raywangqvq/bilibilitoolpro architecture

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

- Interactive diagram: https://gitdiagram.com/raywangqvq/bilibilitoolpro
- Repository: https://github.com/raywangqvq/bilibilitoolpro

## Overview

BiliTool automates scheduled Bilibili account tasks, with a web interface for configuration, login, schedules and history, plus a hosted-console entry point. The main path is schedule or manual task execution → application workflow → domain operations → Bilibili APIs; configuration and account cookies shape those operations, while execution logs and notifications report outcomes. The README lists additional task families and deployment-panel integrations. Some task implementations and UI wiring are unsampled, so those branches are represented at directory level and uncertain call relationships are omitted.

Main entry points: [`src/Ray.BiliBiliTool.Web/Program.cs`](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Web/Program.cs) (Web Host), [`src/BlazingQuartz.Core/Services/SchedulerService.cs`](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/BlazingQuartz.Core/Services/SchedulerService.cs) (Scheduler Service), [`src/Ray.BiliBiliTool.Application`](https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Application) (Task Services), [`src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces`](https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces) (Bilibili API Clients)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User Entry"]
  node_web["Web Host<br/>[Program.cs]"]
  node_console["Console Host<br/>[Program.cs]"]
end

subgraph group_scheduling["Scheduling and UI"]
  node_webui["Web UI<br/>[Schedules.razor.cs]"]
  node_auth["Web Authentication<br/>[AuthController.cs]"]
  node_scheduler["Scheduler Service"]
  node_webjobs["Scheduled Jobs<br/>[Jobs]"]
end

subgraph group_tasks["Task Workflows"]
  node_daily["Daily Workflow"]
  node_taskservices["Task Services"]
  node_domain["Domain Operations"]
  node_login["QR Login"]
end

subgraph group_integrations["External Services and State"]
  node_agent["Bilibili API Clients<br/>[Interfaces]"]
  node_bili{{"Bilibili"}}
  node_config["Task Configuration<br/>[Options]"]
  node_cookies["Cookie Sources"]
  node_db[("SQLite Database<br/>[BiliDbContext.cs]")]
  node_logs[("Execution History")]
  node_notify["Notification Adapter"]
  node_panels["Panel APIs"]
end

node_user(("Operator"))
node_recipients(("Notification Receivers"))

node_user -->|"configures tasks"| node_webui
node_user -->|"signs in"| node_auth
node_user -->|"starts tool"| node_console
node_web -->|"hosts UI"| node_webui
node_web -->|"registers scheduler"| node_scheduler
node_webui -->|"manages schedules"| node_scheduler
node_scheduler -->|"dispatches jobs"| node_webjobs
node_webjobs -->|"invokes tasks"| node_taskservices
node_console -->|"hosts task services"| node_taskservices
node_daily -->|"calls domain operations"| node_domain
node_daily -->|"reads options"| node_config
node_daily -->|"uses account cookie"| node_cookies
node_taskservices -->|"orchestrates operations"| node_domain
node_domain -->|"calls API clients"| node_agent
node_login -->|"requests login"| node_agent
node_agent -->|"sends API requests"| node_bili
node_user -->|"requests QR login"| node_login
node_web -->|"loads configuration"| node_config
node_web -->|"initializes persistence"| node_db
node_scheduler -->|"records executions"| node_logs
node_taskservices -.->|"emits notifications"| node_notify
node_notify -.->|"pushes messages"| node_recipients
node_agent -.->|"calls panel APIs"| node_panels

click node_web "https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Web/Program.cs"
click node_console "https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Console/Program.cs"
click node_webui "https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Web/Components/Pages/Schedules/Schedules.razor.cs"
click node_auth "https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Web/Controllers/AuthController.cs"
click node_scheduler "https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/BlazingQuartz.Core/Services/SchedulerService.cs"
click node_webjobs "https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Web/Jobs"
click node_daily "https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs"
click node_taskservices "https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Application"
click node_domain "https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.DomainService"
click node_login "https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.DomainService/LoginDomainService.cs"
click node_agent "https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces"
click node_config "https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Config/Options"
click node_cookies "https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Infrastructure/Cookie/CookieStrFactory.cs"
click node_db "https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Infrastructure.EF/BiliDbContext.cs"
click node_logs "https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/BlazingQuartz.Core/History/ExecutionLogStore.cs"
click node_notify "https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Infrastructure/Notifications/SerilogNotificationAdapter.cs"
click node_panels "https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Agent"

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_web,node_console toneBlue
class node_webui,node_auth,node_scheduler,node_webjobs toneAmber
class node_daily,node_taskservices,node_domain,node_login toneMint
class node_agent,node_bili,node_config,node_cookies,node_db,node_logs,node_notify,node_panels toneRose
class node_user,node_recipients toneIndigo
```

## Components

### User Entry

- [Web Host](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Web/Program.cs): `src/Ray.BiliBiliTool.Web/Program.cs`
- [Console Host](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Console/Program.cs): `src/Ray.BiliBiliTool.Console/Program.cs`

### Scheduling and UI

- [Web UI](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Web/Components/Pages/Schedules/Schedules.razor.cs): `src/Ray.BiliBiliTool.Web/Components/Pages/Schedules/Schedules.razor.cs`
- [Web Authentication](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Web/Controllers/AuthController.cs): `src/Ray.BiliBiliTool.Web/Controllers/AuthController.cs`
- [Scheduler Service](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/BlazingQuartz.Core/Services/SchedulerService.cs): `src/BlazingQuartz.Core/Services/SchedulerService.cs`
- [Scheduled Jobs](https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Web/Jobs): `src/Ray.BiliBiliTool.Web/Jobs`

### Task Workflows

- [Daily Workflow](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs): `src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs`
- [Task Services](https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Application): `src/Ray.BiliBiliTool.Application`
- [Domain Operations](https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.DomainService): `src/Ray.BiliBiliTool.DomainService`
- [QR Login](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.DomainService/LoginDomainService.cs): `src/Ray.BiliBiliTool.DomainService/LoginDomainService.cs`

### External Services and State

- [Bilibili API Clients](https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces): `src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces`
- **Bilibili**
- [Task Configuration](https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Config/Options): `src/Ray.BiliBiliTool.Config/Options`
- [Cookie Sources](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Infrastructure/Cookie/CookieStrFactory.cs): `src/Ray.BiliBiliTool.Infrastructure/Cookie/CookieStrFactory.cs`
- [SQLite Database](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Infrastructure.EF/BiliDbContext.cs): `src/Ray.BiliBiliTool.Infrastructure.EF/BiliDbContext.cs`
- [Execution History](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/BlazingQuartz.Core/History/ExecutionLogStore.cs): `src/BlazingQuartz.Core/History/ExecutionLogStore.cs`
- [Notification Adapter](https://github.com/raywangqvq/bilibilitoolpro/blob/main/src/Ray.BiliBiliTool.Infrastructure/Notifications/SerilogNotificationAdapter.cs): `src/Ray.BiliBiliTool.Infrastructure/Notifications/SerilogNotificationAdapter.cs`
- [Panel APIs](https://github.com/raywangqvq/bilibilitoolpro/tree/main/src/Ray.BiliBiliTool.Agent): `src/Ray.BiliBiliTool.Agent`

### Other components

- **Operator**
- **Notification Receivers**

## Connections

- Operator → Web UI: configures tasks
- Operator → Web Authentication: signs in
- Operator → Console Host: starts tool
- Web Host → Web UI: hosts UI
- Web Host → Scheduler Service: registers scheduler
- Web UI → Scheduler Service: manages schedules
- Scheduler Service → Scheduled Jobs: dispatches jobs
- Scheduled Jobs → Task Services: invokes tasks
- Console Host → Task Services: hosts task services
- Daily Workflow → Domain Operations: calls domain operations
- Daily Workflow → Task Configuration: reads options
- Daily Workflow → Cookie Sources: uses account cookie
- Task Services → Domain Operations: orchestrates operations
- Domain Operations → Bilibili API Clients: calls API clients
- QR Login → Bilibili API Clients: requests login
- Bilibili API Clients → Bilibili: sends API requests
- Operator → QR Login: requests QR login
- Web Host → Task Configuration: loads configuration
- Web Host → SQLite Database: initializes persistence
- Scheduler Service → Execution History: records executions
- Task Services → Notification Adapter: emits notifications
- Notification Adapter → Notification Receivers: pushes messages
- Bilibili API Clients → Panel APIs: calls panel APIs
