mirror of
https://github.com/imsyy/DailyHotApi.git
synced 2026-01-13 05:34:55 +08:00
✨ feat: 新增 吾爱破解
This commit is contained in:
41
src/utils/parseRSS.ts
Normal file
41
src/utils/parseRSS.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import RSSParser from "rss-parser";
|
||||
import logger from "./logger.js";
|
||||
|
||||
export const extractRss = (content: string): string | null => {
|
||||
// 匹配 <rss> 标签及内容
|
||||
const rssRegex = /(<rss[\s\S]*?<\/rss>)/i;
|
||||
const matches = content.match(rssRegex);
|
||||
return matches ? matches[0] : null;
|
||||
};
|
||||
export const parseRSS = async (rssContent: string) => {
|
||||
const parser = new RSSParser();
|
||||
// 是否为网址
|
||||
const isUrl = (url: string) => {
|
||||
try {
|
||||
new URL(url);
|
||||
return true;
|
||||
} catch (_) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
try {
|
||||
const feed = isUrl(rssContent)
|
||||
? await parser.parseURL(rssContent)
|
||||
: await parser.parseString(rssContent);
|
||||
const items = feed.items.map((item) => ({
|
||||
title: item.title, // 文章标题
|
||||
link: item.link, // 文章链接
|
||||
pubDate: item.pubDate, // 发布日期
|
||||
author: item.creator ?? item.author, // 作者
|
||||
content: item.content, // 内容
|
||||
contentSnippet: item.contentSnippet, // 内容摘要
|
||||
guid: item.guid, // 全局唯一标识符
|
||||
categories: item.categories, // 分类
|
||||
}));
|
||||
// 返回解析数据
|
||||
return items;
|
||||
} catch (error) {
|
||||
logger.error("解析 RSS 内容时出错:", error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user