Skip to content

zhhtdm/url-to-rss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

url to rss

网址转RSS文档

API

http(s)://service.domain/path?url=

url参数需要编码转义:

// js
encodeURIComponent(url)
# python
import urllib.parse
urllib.parse.quote(url, safe='')
  • 也可以再接自定义参数,如&pages=以控制抓取多少页(需要在解析函数中实现)

流程

  1. 收到请求后取得url:包含原查询参数的完整网址
  2. 根据url的域名,动态加载对应的解析函数
  3. 使用带 cookie 的浏览器模块,得到这个页面的html内容
  4. 解析html
  5. 生成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)

可在.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 认证

About

「网络服务」网址转 RSS 文档

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages