From 22ae7139f2ef550ef6be76b0bdcdfe52f559b9cc Mon Sep 17 00:00:00 2001 From: hanw Date: Sun, 4 Jan 2026 22:38:59 +0800 Subject: [PATCH 1/2] feat: Add data source: OpenAI news --- public/icons/openai.png | Bin 0 -> 15406 bytes server/glob.d.ts | 1 + server/sources/openai.ts | 21 +++++++++++++++++++++ shared/pinyin.json | 1 + shared/pre-sources.ts | 8 ++++++++ shared/sources.json | 8 ++++++++ 6 files changed, 39 insertions(+) create mode 100644 public/icons/openai.png create mode 100644 server/sources/openai.ts diff --git a/public/icons/openai.png b/public/icons/openai.png new file mode 100644 index 0000000000000000000000000000000000000000..0b6b8a6c802327f24451c466853e7b05a90d398a GIT binary patch literal 15406 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 jwTNHZLn`O { + const rss = await rss2json("https://openai.com/blog/rss.xml") + if (!rss) return [] + + const news: NewsItem[] = [] + for (const item of rss.items) { + news.push({ + id: item.id, + title: item.title, + url: item.link, + extra: { + date: item.created, + hover: item.description, + }, + }) + } + + return news +}) diff --git a/shared/pinyin.json b/shared/pinyin.json index d1d445523..862e1d092 100644 --- a/shared/pinyin.json +++ b/shared/pinyin.json @@ -28,6 +28,7 @@ "fastbull-news": "fabucaijing-toutiao", "solidot": "Solidot", "hackernews": "Hacker News", + "openai": "OpenAI", "producthunt": "Product Hunt", "github-trending-today": "Github-Today", "bilibili-hot-search": "bilibili-resou", diff --git a/shared/pre-sources.ts b/shared/pre-sources.ts index 7e519d424..1336b8aab 100644 --- a/shared/pre-sources.ts +++ b/shared/pre-sources.ts @@ -258,6 +258,14 @@ export const originSources = { type: "hottest", home: "https://news.ycombinator.com/", }, + "openai": { + name: "OpenAI", + color: "green", + column: "tech", + type: "realtime", + interval: Time.Common, + home: "https://openai.com/", + }, "producthunt": { name: "Product Hunt", color: "red", diff --git a/shared/sources.json b/shared/sources.json index 4cd566438..fc8fe91cc 100644 --- a/shared/sources.json +++ b/shared/sources.json @@ -322,6 +322,14 @@ "color": "orange", "interval": 600000 }, + "openai": { + "name": "OpenAI", + "type": "realtime", + "column": "tech", + "home": "https://openai.com/", + "color": "green", + "interval": 1800000 + }, "producthunt": { "name": "Product Hunt", "type": "hottest", From 6f2d26546b195a0868f9843514646145cc9ecca6 Mon Sep 17 00:00:00 2001 From: hanw Date: Sun, 18 Jan 2026 17:11:27 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wrangler.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 wrangler.toml diff --git a/wrangler.toml b/wrangler.toml new file mode 100644 index 000000000..5f20b3b27 --- /dev/null +++ b/wrangler.toml @@ -0,0 +1,8 @@ +name = "newsnow" +pages_build_output_dir = "dist/output/public" +compatibility_date = "2024-10-03" + +[[d1_databases]] +binding = "NEWSNOW_DB" +database_name = "newsnow-db" +database_id = ""