通过爬虫采集数据,并进行可视化展示。
Collect hot-ranking data from multiple sources and present it through a web UI.
- Spider project: https://github.com/datehoer/hotToday
- Website: https://www.hotday.uk/
- Legacy site:
https://hotrank.datehoer.com/
This repository currently contains:
- Backend: Python + FastAPI
app.py— application entry point and middleware registrationhotrank/infrastructure.py— PostgreSQL, Redis, rate limiting, and lifespanhotrank/model_client.py— model-provider request handlinghotrank/routers/— HTTP route moduleshotrank/services/— rank loading, news summarization, and RSS generationhotrank/schemas.py— request and response data models
- Frontend (legacy):
ui/— Vue 2 + Element UI + IconPark - Frontend (current/live):
vue-ui/— Vue 3 + Vite + TypeScript + Tailwind CSS + Heroiconsvue-ui/src/App.vue— page-level state and orchestrationvue-ui/src/components/— reusable page components and modal views
As of the current online deployment,
https://www.hotday.uk/is serving thevue-ui/frontend.
The live page loads Vite-built assets such as/assets/index-*.jsand/assets/index-*.css, and its DOM structure/styles matchvue-ui/src/App.vue.
Backend stack:
- FastAPI
- Redis
- PostgreSQL
Recent backend changes already reflected in the repo:
- 2025-03-03
- switched storage from MongoDB to PostgreSQL to reduce memory usage
- added global rate limiting
After building the Docker image, you can run the backend container like this:
docker run -itd --name hotrank \
-v /var/www/hotday.uk/feed:/app/rss_feed.xml \
-v /var/www/hotday.uk/feed_with_ai:/app/rss_feed_today_top_news.xml \
-v /opt/hot-rank-web/app.py:/app/app.py \
-v /opt/hot-rank-web/parse_detail.py:/app/parse_detail.py \
-v /opt/hot-rank-web/common.py:/app/common.py \
-v /opt/hot-rank-web/config.py:/app/config.py \
-p 127.0.0.1:7545:7545 \
hotrank:v0.1If you are only updating code (without adding new dependencies/files into the image), restarting the container is usually enough.
Recommended commands:
cd vue-ui
pnpm install
pnpm run dev
pnpm run buildAfter pnpm run build, deploy the generated static files from vue-ui/dist/ to Nginx (or your static file host).
The old frontend is still kept in the repository for compatibility/reference:
cd ui
pnpm install
pnpm run serve
pnpm run buildIf you are making changes intended for the currently deployed site, prefer working in vue-ui/.




