RSSHub/lib
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
..
api
assets
errors test: remove text "Not Found" from httperror 2026-05-06 03:12:57 +08:00
middleware refactor: use arrow function 2026-05-11 02:16:04 +08:00
routes feat(route/sjtu): add CS school academic activities (#22050) 2026-06-01 05:33:37 +08:00
routes-deprecated
shims chore(deps-dev): bump the oxc group across 1 directory with 4 updates (#22107) 2026-05-27 00:51:12 +08:00
utils fix(cache): call JSON.stringify when storing value in cache.tryGet (#20671) 2026-05-07 01:26:11 +08:00
views
app-bootstrap.test.tsx feat(core): add honeybadger support (#21574) 2026-04-01 01:10:12 +08:00
app-bootstrap.tsx feat(core): add honeybadger support (#21574) 2026-04-01 01:10:12 +08:00
app.test.ts fix(ua): ensure header-generator and custom ua are effective with each other (#21546) 2026-03-29 22:47:56 +08:00
app.ts
app.worker.tsx refactor: migrate browser automation to Playwright (#21901) 2026-05-04 21:16:18 +08:00
bilibili-video-route.test.ts fix: update browser fetching for bilibili and xsijishe 2026-05-06 16:30:15 +08:00
config.remote-error.test.ts
config.test.ts feat: add HTTP cache (#21814) 2026-04-24 11:35:51 +08:00
config.ts refactor: migrate browser automation to Playwright (#21901) 2026-05-04 21:16:18 +08:00
container.ts
entrypoints.test.ts
index.test.ts
index.ts feat: disable IPv6 (#21719) 2026-04-13 23:45:08 +08:00
obsidian-routes.test.ts fix: update obsidian community routes 2026-05-14 15:47:50 +08:00
pkg.test.ts
pkg.ts
registry.dynamic.test.ts
registry.test.ts style: auto format 2026-04-14 15:15:05 +00:00
registry.ts
route-paths.d.ts
router.js
routes.test.ts
server.ts
setup.test.ts style: auto format 2026-04-14 15:15:05 +00:00
techflowpost.test.ts test(route): move techflowpost test outside routes 2026-05-09 17:24:41 +08:00
types.ts refactor: migrate browser automation to Playwright (#21901) 2026-05-04 21:16:18 +08:00
worker.ts
worker.worker.test.ts