UNPKG

rss-telegram-bot

Version:

RSSBot 是一个能帮你订阅 RSSHub 的 Telegram Bot

66 lines (56 loc) 1.68 kB
const fs = require('fs'); const path = require('path'); const logger = require("./utils/logger"); const config = require("./config"); let db = {}; //主数据库 let index = {}; //索引 fs.mkdirSync(path.dirname(config.unsubscribe_db_path), { recursive: true }); try { db = JSON.parse(fs.readFileSync(config.unsubscribe_db_path)); } catch (e) { logger.warn(`Cannot read database: ${e}`); } for (let url in db) { for (let feed_url in db[url]) { const feed = db[url][feed_url]; index[feed.url] = url; //构建索引 } } function write() { return fs.writeFile(config.unsubscribe_db_path, JSON.stringify(db), (e) => { if (e) logger.warn(`Cannot read database: ${e}`); }); } function putFeedToUrl(url, feed) { if (typeof db[url] !== 'object') { //如果没有记录这个url db[url] = {}; //就创建 } db[url][feed.url] = feed; //在这个URL下加入feed index[feed.url] = url; //并加索引 write(); } function delUrlByFeedurl(feedurl) { const url = index[feedurl] //索引里查url if (url) { //如果存在 const feeds = db[url]; //就读取它的feed列表 if (typeof feeds === 'object') { //如果feed列表存在 for (let furl in feeds) { delete index[furl]; //就逐个删除索引 } } delete db[url]; //最后删除数据库 } write(); } function delUrl(url) { delete db[url]; //删除数据库 write(); } function getAllUrl() { let urls = []; for (let url in db) { urls.push(url); } return urls } module.exports = { putFeedToUrl, delUrlByFeedurl, delUrl, getAllUrl }