@@ -2,7 +2,9 @@ import {script} from '@digshare/script';
2
2
import RSSParser from 'rss-parser' ;
3
3
4
4
// 配置目标 RSS 地址。
5
- const RSS_URL = 'https://sspai.com/feed' ;
5
+ const RSS_URLS = [ 'https://sspai.com/feed' ] ;
6
+ // 如果需要多个地址,参考如下配置(地址前后加单引号,中间用逗号隔开):
7
+ // const RSS_URLS = ['https://sspai.com/feed', 'https://vane.life/rss/'];
6
8
7
9
// 配置内容筛选关键字,空格隔开。
8
10
const KEYWORDS_SPACE_SEPARATED = '关键字 用空格 隔开 比如 app 软件' ;
@@ -24,10 +26,17 @@ export default script<void, Storage>(async (_payload, {storage}) => {
24
26
const seenSet = new Set ( storage . getItem ( 'seen' ) ) ;
25
27
26
28
// 使用 RSS Parser 加载、解析目标 RSS 列表。
27
- const feed = await rssParser . parseURL ( RSS_URL ) ;
29
+ const feeds = await Promise . all ( RSS_URLS . map ( url => rssParser . parseURL ( url ) ) ) ;
30
+
31
+ const items = feeds
32
+ . flatMap ( feed => feed . items )
33
+ . sort (
34
+ ( x , y ) =>
35
+ new Date ( y . pubDate ?? 0 ) . getTime ( ) - new Date ( x . pubDate ?? 0 ) . getTime ( ) ,
36
+ ) ;
28
37
29
38
// 从加载的 RSS 订阅内容中筛选出之前没有看到过的内容。
30
- const unseenItems = feed . items . filter (
39
+ const unseenItems = items . filter (
31
40
item =>
32
41
// seenSet 中如果有 item.guid,就说明之前看到过。
33
42
! ! item . link && ! seenSet . has ( item . guid ?? item . link ) ,
@@ -68,14 +77,14 @@ export default script<void, Storage>(async (_payload, {storage}) => {
68
77
return ;
69
78
}
70
79
71
- // 从新内容中取出前 3 条(主要怕一次性新内容太多,比如脚本第一次执行)。
72
- const mostRecentUnseenItems = filteredUnseenItems . slice ( 0 , 3 ) ;
73
-
74
80
return {
75
- content : `发现了 ${ filteredUnseenItems . length } 篇新内容。` ,
81
+ content : `\
82
+ 发现了 ${ filteredUnseenItems . length } 篇新内容:
83
+
84
+ ${ filteredUnseenItems . map ( item => `- 《${ item . title } 》` ) . join ( '\n' ) } `,
76
85
links : [
77
86
// 提供链接:
78
- ...mostRecentUnseenItems . map ( item => {
87
+ ...filteredUnseenItems . map ( item => {
79
88
return {
80
89
// 链接标题使用订阅内容标题
81
90
title : item . title ,
0 commit comments