DIYgod mirror
Go to file
BeaCox 575f71abde
feat(route/sjtu): add CS school academic activities (#22050)
* feat(route/sjtu): add CS school academic activities

* refactor(route/sjtu/cs/xshd): use JSX for description and respect dedicated item fields

  - Switch to .tsx with renderToString (Rule 25)
  - Move 时间→pubDate (with HH:mm), 报告人→author, 封面→image (Rule 11)
  - Drop hand-written referrerpolicy attributes (Rule 39)
  - pubDate now preserves hour/minute when source provides it

* fix(route/sjtu/cs/xshd): separate publish date from event time

  - pubDate now reflects announcement publish date:
    - in-site articles: detail page 发布日期 (authoritative)
    - WeChat-redirect items: extracted from image URL path /upload/image/YYYYMMDD/
  - 举办时间 (event time) moved back into description (no longer duplicates pubDate)

* fix(route/sjtu/cs/xshd): remove manual title trimming (Rule 16)

* fix(route/sjtu/cs/xshd): address review comments

  - Use response URL to detect WeChat redirect
  - Fetch WeChat MP content via fetchArticle
  - Remove try-catch around detail requests
  - Remove dangerouslySetInnerHTML from JSX rendering

* fix(route/sjtu/cs/xshd): use ofetch consistently

* fix(route/sjtu/cs/xshd): fallback on WeChat MP WAF errors

* fix(route/sjtu/cs/xshd): fallback when detail enrichment fails

  The route enriches list items by fetching detail pages, but some SJTU
  detail URLs are redirect stubs to WeChat MP. In CI, those intermediate
  detail requests can fail with no response before the route reaches the
  WeChat MP parser, causing Promise.all to reject and the whole feed to
  return 503.

  Switch detail enrichment aggregation from Promise.all to
  Promise.allSettled and fall back to list-page metadata for only the
  failed item. Successful items are still enriched with in-site article
  content or WeChat MP content.

  This follows the existing resilient detail-fetching pattern in
  lib/routes/usenix/usenix.ts and keeps the scoped WeChatMpError fallback
  around fetchArticle(), similar to lib/routes/wechat/sogou.ts.
2026-06-01 05:33:37 +08:00
.devcontainer chore: migrate to oxfmt (#20735) 2026-01-13 00:06:06 +08:00
.github chore(deps): bump DeterminateSystems/magic-nix-cache-action (#22130) 2026-05-29 22:40:46 +08:00
.husky
.idx chore: migrate to oxfmt (#20735) 2026-01-13 00:06:06 +08:00
assets
eslint-plugins style: migrate eslint to oxlint (#21224) 2026-02-28 21:23:11 +08:00
lib feat(route/sjtu): add CS school academic activities (#22050) 2026-06-01 05:33:37 +08:00
logs
patches fix: update rss-parser patch to support other compressions (#21561) 2026-03-30 22:22:24 +00:00
public chore: try root public for vercel 2025-12-07 00:15:41 +08:00
scripts chore: enhance identify function 2026-05-13 19:17:03 +08:00
.codecov.yml
.dockerignore chore: migrate to oxfmt (#20735) 2026-01-13 00:06:06 +08:00
.editorconfig
.envrc fix(.envrc): add --no-pure-eval for devenv flake compatibility (#20692) 2025-12-19 00:00:46 +08:00
.gitignore feat: add Cloudflare Containers deployment support (#20932) 2026-01-20 15:29:13 +08:00
.npmrc
.oxfmtrc.json style: migrate eslint to oxlint (#21224) 2026-02-28 21:23:11 +08:00
.oxlintrc.ci.json chore: add ignorePatterns in oxlintrc.ci.json 2026-04-30 06:24:46 +08:00
.oxlintrc.json chore(deps-dev): bump the oxc group across 1 directory with 4 updates (#22107) 2026-05-27 00:51:12 +08:00
AGENTS.md docs: add review guidelines for codex 2025-12-29 17:42:03 +08:00
CODE_OF_CONDUCT.md chore: fix prettier config 2025-11-27 14:32:29 +08:00
CONTRIBUTING.md
Dockerfile refactor: migrate browser automation to Playwright (#21901) 2026-05-04 21:16:18 +08:00
LICENSE docs: update license file 2025-12-28 18:42:39 +08:00
README.md fix(README): update image link 2026-03-17 16:00:00 +08:00
SECURITY.md
app.json refactor: migrate browser automation to Playwright (#21901) 2026-05-04 21:16:18 +08:00
devenv.nix chore: add Nix flake and NixOS module support (#20597) 2025-12-09 19:43:06 +08:00
docker-compose.yml refactor: migrate browser automation to Playwright (#21901) 2026-05-04 21:16:18 +08:00
eslint.config.mjs chore(deps-dev): bump the oxc group across 1 directory with 4 updates (#22054) 2026-05-20 19:57:51 +08:00
flake.lock chore(deps): bump devenv from `4057466` to `bb9f187` (#22134) 2026-05-29 23:03:10 +08:00
flake.nix chore(nix): update dependencies hash to sha256-7fqPDVqQglOp665prmFWcxqhUPM6BDk/DjAVIvBSFTQ= 2026-05-15 10:14:16 +00:00
fly.toml
package.json chore(deps-dev): bump eslint-plugin-yml from 3.3.2 to 3.4.0 (#22129) 2026-05-29 21:38:59 +08:00
pnpm-lock.yaml chore(deps-dev): bump eslint-plugin-yml from 3.3.2 to 3.4.0 (#22129) 2026-05-29 21:38:59 +08:00
tailwind.config.js
tsconfig.json chore: add Vercel build configuration 2025-08-10 18:34:16 +08:00
tsdown-container.config.ts chore(deps-dev): bump tsdown from 0.21.9 to 0.21.10 (#21810) 2026-04-29 05:09:46 +08:00
tsdown-lib.config.ts chore: rename again `inlineOnly` -> `deps.onlyAllowBundle` -> `deps.onlyBundle` 2026-03-16 18:24:08 +08:00
tsdown-vercel.config.ts chore: rename again `inlineOnly` -> `deps.onlyAllowBundle` -> `deps.onlyBundle` 2026-03-16 18:24:08 +08:00
tsdown-worker.config.ts chore(deps-dev): bump tsdown from 0.21.9 to 0.21.10 (#21810) 2026-04-29 05:09:46 +08:00
tsdown.config.ts chore: rename again `inlineOnly` -> `deps.onlyAllowBundle` -> `deps.onlyBundle` 2026-03-16 18:24:08 +08:00
vercel.json chore: unpin jsdom (#21505) 2026-03-25 23:16:40 +08:00
vitest.config.ts fix: update obsidian community routes 2026-05-14 15:47:50 +08:00
wrangler-container.toml refactor: migrate browser automation to Playwright (#21901) 2026-05-04 21:16:18 +08:00
wrangler.toml refactor: migrate browser automation to Playwright (#21901) 2026-05-04 21:16:18 +08:00

README.md

RSSHub

RSSHub

🧡 Everything is RSSible

docker publish npm publish test Test coverage Visitors

Telegram group Telegram channel X (Twitter)

Introduction

RSSHub is the world's largest RSS network, consisting of over 5,000 global instances.

RSSHub delivers millions of contents aggregated from all kinds of sources, our vibrant open source community is ensuring the deliver of RSSHub's new routes, new features and bug fixes.

RSSHub pairs especially well with Folo, an AI RSS reader for feed discovery and modern reading workflows. The project is also open source on GitHub.

Documentation | Folo | Telegram Group | Telegram Channel | X (Twitter)

  • Folo | An AI RSS reader that works especially well with RSSHub. Source code: GitHub.
  • RSSHub Radar | A browser extension that can help you quickly discover and subscribe to the RSS and RSSHub of current websites.
  • RSSBud | RSSHub Radar for iOS platform, designed specifically for mobile ecosystem optimization.
  • RSSAid | RSSHub Radar for Android platform built with Flutter.
  • DocSearch | Link RSSHub DocSearch into Raycast.
  • Awesome RSSHub Routes | Curated list of RSS feeds and RSSHub routes.

Contribute

We welcome all pull requests. Suggestions and feedback are also welcomed here.

Refer to Quick Start

Deployment

Refer to Deployment

Special Thanks

Logo designer sheldonrrr

              

Author

RSSHub © DIYgod, Released under the AGPL-3.0 License.
Authored and maintained by DIYgod with help from contributors (list).

Blog @DIYgod · GitHub @DIYgod · X (Twitter) @DIYgod · Telegram Channel @awesomeDIYgod