# sunshine6669/chinese-poetry architecture

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

- Interactive diagram: https://gitdiagram.com/sunshine6669/chinese-poetry
- Repository: https://github.com/sunshine6669/chinese-poetry

## Overview

This repository is primarily a distributable corpus of Chinese classical literature in JSON, intended for developers building poetry applications. A user can choose a collection and consume its records directly or use PlainDataLoader to extract poem text by dataset name or ID. The repository also contains Song Ci collection-maintenance and export scripts, plus ranking data and a ranking updater. The tree and README establish the corpus’s breadth; relationships involving unsampled dataset configuration and ranking internals are left out where they cannot be verified.

Main entry points: [`宋词/UpdateCi.py`](https://github.com/sunshine6669/chinese-poetry/blob/master/%E5%AE%8B%E8%AF%8D/UpdateCi.py) (Ci updater), [`宋词/main.py`](https://github.com/sunshine6669/chinese-poetry/blob/master/%E5%AE%8B%E8%AF%8D/main.py) (Ci exporter), [`rank/server.js`](https://github.com/sunshine6669/chinese-poetry/blob/master/rank/server.js) (Ranking updater), [`loader/data_loader.py`](https://github.com/sunshine6669/chinese-poetry/blob/master/loader/data_loader.py) (Plain data loader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_corpus["Poetry corpus"]
  node_tang["Tang poetry"]
  node_ci["Song Ci"]
  node_huajianji["Huajianji"]
  node_nantang["Nantang lyrics"]
  node_other_collections["Other collections"]
end

subgraph group_access["Dataset access"]
  node_loader["Plain data loader<br/>[data_loader.py]"]
  node_loader_config["Loader config<br/>[datas.json]"]
end

subgraph group_maintenance["Data maintenance"]
  node_ci_updater["Ci updater<br/>[UpdateCi.py]"]
  node_ci_db[("Ci database<br/>[ci.db]")]
  node_ci_exporter["Ci exporter<br/>[main.py]"]
end

subgraph group_ranking["Ranking data"]
  node_rank_updater["Ranking updater<br/>[server.js]"]
  node_ci_rank["Ci rankings"]
  node_poet_rank["Poet rankings"]
end

node_developer(("Application developer"))
node_source_site(("Source website"))

node_developer -->|"requests extraction"| node_loader
node_loader -->|"loads config"| node_loader_config
node_ci_updater -->|"fetches pages"| node_source_site
node_ci_updater -->|"updates JSON"| node_ci
node_ci_exporter -->|"queries records"| node_ci_db
node_ci_exporter -->|"writes JSON"| node_ci
node_rank_updater -->|"reads and writes"| node_ci_rank
node_rank_updater -->|"reads and writes"| node_poet_rank

click node_loader "https://github.com/sunshine6669/chinese-poetry/blob/master/loader/data_loader.py"
click node_loader_config "https://github.com/sunshine6669/chinese-poetry/blob/master/loader/datas.json"
click node_tang "https://github.com/sunshine6669/chinese-poetry/tree/master/%E5%85%A8%E5%94%90%E8%AF%97"
click node_ci "https://github.com/sunshine6669/chinese-poetry/tree/master/%E5%AE%8B%E8%AF%8D"
click node_huajianji "https://github.com/sunshine6669/chinese-poetry/tree/master/%E4%BA%94%E4%BB%A3%E8%AF%97%E8%AF%8D/huajianji"
click node_nantang "https://github.com/sunshine6669/chinese-poetry/tree/master/%E4%BA%94%E4%BB%A3%E8%AF%97%E8%AF%8D/nantang"
click node_other_collections "https://github.com/sunshine6669/chinese-poetry/tree/master/%E8%AE%BA%E8%AF%AD"
click node_ci_updater "https://github.com/sunshine6669/chinese-poetry/blob/master/%E5%AE%8B%E8%AF%8D/UpdateCi.py"
click node_ci_db "https://github.com/sunshine6669/chinese-poetry/blob/master/%E5%AE%8B%E8%AF%8D/ci.db"
click node_ci_exporter "https://github.com/sunshine6669/chinese-poetry/blob/master/%E5%AE%8B%E8%AF%8D/main.py"
click node_rank_updater "https://github.com/sunshine6669/chinese-poetry/blob/master/rank/server.js"
click node_ci_rank "https://github.com/sunshine6669/chinese-poetry/tree/master/rank/ci"
click node_poet_rank "https://github.com/sunshine6669/chinese-poetry/tree/master/rank/poet"

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_tang,node_ci,node_huajianji,node_nantang,node_other_collections toneBlue
class node_loader,node_loader_config toneAmber
class node_ci_updater,node_ci_db,node_ci_exporter toneMint
class node_rank_updater,node_ci_rank,node_poet_rank toneRose
class node_developer,node_source_site toneIndigo
```

## Components

### Poetry corpus

- [Tang poetry](https://github.com/sunshine6669/chinese-poetry/tree/master/%E5%85%A8%E5%94%90%E8%AF%97): `全唐诗`
- [Song Ci](https://github.com/sunshine6669/chinese-poetry/tree/master/%E5%AE%8B%E8%AF%8D): `宋词`
- [Huajianji](https://github.com/sunshine6669/chinese-poetry/tree/master/%E4%BA%94%E4%BB%A3%E8%AF%97%E8%AF%8D/huajianji): `五代诗词/huajianji`
- [Nantang lyrics](https://github.com/sunshine6669/chinese-poetry/tree/master/%E4%BA%94%E4%BB%A3%E8%AF%97%E8%AF%8D/nantang): `五代诗词/nantang`
- [Other collections](https://github.com/sunshine6669/chinese-poetry/tree/master/%E8%AE%BA%E8%AF%AD): `论语`

### Dataset access

- [Plain data loader](https://github.com/sunshine6669/chinese-poetry/blob/master/loader/data_loader.py): `loader/data_loader.py`
- [Loader config](https://github.com/sunshine6669/chinese-poetry/blob/master/loader/datas.json): `loader/datas.json`

### Data maintenance

- [Ci updater](https://github.com/sunshine6669/chinese-poetry/blob/master/%E5%AE%8B%E8%AF%8D/UpdateCi.py): `宋词/UpdateCi.py`
- [Ci database](https://github.com/sunshine6669/chinese-poetry/blob/master/%E5%AE%8B%E8%AF%8D/ci.db): `宋词/ci.db`
- [Ci exporter](https://github.com/sunshine6669/chinese-poetry/blob/master/%E5%AE%8B%E8%AF%8D/main.py): `宋词/main.py`

### Ranking data

- [Ranking updater](https://github.com/sunshine6669/chinese-poetry/blob/master/rank/server.js): `rank/server.js`
- [Ci rankings](https://github.com/sunshine6669/chinese-poetry/tree/master/rank/ci): `rank/ci`
- [Poet rankings](https://github.com/sunshine6669/chinese-poetry/tree/master/rank/poet): `rank/poet`

### Other components

- **Application developer**
- **Source website**

## Connections

- Application developer → Plain data loader: requests extraction (evidence: `loader/data_loader.py`)
- Plain data loader → Loader config: loads config (evidence: `loader/data_loader.py`)
- Ci updater → Source website: fetches pages (evidence: `宋词/UpdateCi.py`)
- Ci updater → Song Ci: updates JSON (evidence: `宋词/UpdateCi.py`)
- Ci exporter → Ci database: queries records (evidence: `宋词/main.py`)
- Ci exporter → Song Ci: writes JSON (evidence: `宋词/main.py`)
- Ranking updater → Ci rankings: reads and writes (evidence: `rank/server.js`)
- Ranking updater → Poet rankings: reads and writes (evidence: `rank/server.js`)
