网址转RSS
文档
http(s)://service.domain/path?url=
url
参数需要编码转义:
// js
encodeURIComponent(url)
# python
import urllib.parse
urllib.parse.quote(url, safe='')
- 也可以再接自定义参数,如
&pages=
以控制抓取多少页(需要在解析函数中实现)
- 收到请求后取得
url
:包含原查询参数的完整网址 - 根据
url
的域名,动态加载对应的解析函数 - 使用带 cookie 的浏览器模块,得到这个页面的
html
内容 - 解析
html
- 生成
RSS
文档返回
- 主函数是固定的,解析函数根据业务需求增加,为每个需要生成
RSS
的网址域名编写一个与域名同名的.py
解析函数文件放在目录/parsers/
下 - 解析函数文件中需要定义一个名为
parse()
的函数做为入口,同步异步均可 parse()
函数接收request
,返回如下格式统一的字典给主函数,主函数由此生成RSS
文档info={} info['link'] info['title'] info['description'] info['lastBuildDate'] info['image']={} info['image']['ul'] info['image']['title'] info['image']['link'] info['item']={} #下面子字典中 [''] 内的空缺没填的是每个条目的 key,每加一个条目加一个这样的子字典 info['item']['']={} info['item']['']['title'] info['item']['']['link'] info['item']['']['description'] info['item']['']['pubDate']
可在.env文件中配置的项和其默认值
HOST = os.getenv("HOST", '127.0.0.1')
APP_PATH = os.getenv("APP_PATH", "")
PORT = int(os.getenv("PORT", 8000))
B_PROXY_SERVER = os.getenv("B_PROXY_SERVER", "socks5://127.0.0.1:1080")
B_MAX_PAGES = int(os.getenv("B_MAX_PAGES", 4))
RSS_BASE_URL = os.getenv("RSS_BASE_URL", '')
RETRIES = int(os.getenv("RETRIES", 2))
USERNAME = os.getenv("USERNAME", None)
PASSWORD = os.getenv("PASSWORD", None)
JANDANRSS_DB_CONNECTION_STRING = os.getenv('JANDANRSS_DB_CONNECTION_STRING', None)
JANDANRSS_FETCH_FULL_PAGE: bool = os.getenv('JANDANRSS_FETCH_FULL_PAGE', 'False') == 'True'
FILE_CACHE_BASE_URL = os.getenv('FILE_CACHE_BASE_URL', None)
FILE_CACHE_TOKEN = os.getenv('FILE_CACHE_TOKEN', None)
USERNAME
: 如果非空,则开启 http 认证