首先介绍下,Liuli
是什么?这是我最近开发的一个开源我的项目,次要目标是为了让有浏览习惯的敌人疾速构建一个多源、洁净、个性化的浏览环境。
为什么叫Liuli
?
Liuli
原来命名为2C
,前面交换群的敌人提供了琉璃这个名字,取自梅尧臣《缑山子晋祠 会善寺》中的琉璃开净界,薜荔启禅关,其寓意也很合乎我的项目的立意:
为用户构建一方浏览净土如西方琉璃净世界
间隔上次公布曾经过来了一个月(我切实是太拖了,检查),明天很快乐地和大家发表Liuli
又有一大波更新了!具体见v0.2.0工作看板。
接下来我将依据Liuli
最新版本V0.1.5
来给大家介绍下如何基于Liuli构建污浊的RSS公众号信息流,最终订阅成果展现如下:
开始
首先从需要谈起,目前我有三点诉求:
- 聚合目前订阅的公众号,通过RSS输入而后别离订阅
- 对订阅的文章做广告辨认
- 对文章做一个疾速备份
以上诉求正好就是本篇文章的主题构建污浊的RSS公众号信息流,具体实现这里不详谈,有趣味能够在交换群外面交换,本篇文章只说怎么用。
如果你浏览过我之前写的那篇打造一个洁净且个性化的公众号浏览环境,那么你对采集器、处理器、散发器等概念可能有些理解,但这里为了浏览的连贯性,所以再次介绍下,首先看架构图:
简略解释一下:
- 采集器:监控各自关注的公众号或者博客等自定义浏览源,以统一标准格局流入
Liuli
作为输出源; - 处理器:对指标内容进行自定义解决,如基于历史广告数据,利用机器学习实现一个广告分类器主动打标签,或者引入钩子函数在相干节点执行等;
- 散发器:依附接口层进行数据申请&响应,为使用者提供个性化配置,而后依据配置主动进行散发,将洁净的文章流向微信、钉钉、TG甚至自建网站;
- 备份器:将解决后的文章进行备份,如长久化到数据库或者GitHub等。
其实不理解流程也没关系,晓得怎么用就行了,接下来请具体跟着教程一步一步来,最好有台电脑跟着操作。
应用
好,正戏开始。Liuli
的部署应用还是很不便的,举荐大家应用Docker
进行部署,所以开始前大家手头的设施须要装置好Docker
,如果没装置,点击这里进行装置即可。
配置
以后Liuli
的配置次要分两大块:
- 全局配置:就是全局环境变量,相干阐明见Liuli 环境变量
- 工作配置:此配置针对用户须要解决的问题而造成,比方本文就会生成一个将公众号采集、解决、输入成RSS的配置(诸位应用时候将我的配置复制过来即可应用)
全局配置
首先说说全局配置,其实默认提供的配置也能让大家跑起来,然而如果你须要将文章散发到微信或者钉钉等,那就须要填写相干配置,好了,让咱们开始吧,请关上终端或者用你相熟的形式,建设一些文件夹或者文件。
mkdir liulicd liuli# 寄存调度工作配置,默认命名为default.jsonmkdir liuli_config# 数据库mkdir mongodb_data# 下拉 docker-compose 配置# 如果网络不好请手动填写,内容见附录wget https://raw.githubusercontent.com/howie6879/liuli/main/docker-compose.yaml# 配置 pro.env 具体查看全局配置处的Liuli 环境变量vim pro.env
对于pro.env
,想理解详情的话倡议查看全局配置处的Liuli
环境变量,当然你不想看也没关系,跟着此教程填即可,首先请将以下配置复制到pro.env
:
PYTHONPATH=${PYTHONPATH}:${PWD}LL_M_USER="liuli"LL_M_PASS="liuli"LL_M_HOST="liuli_mongodb"LL_M_PORT="27017"LL_M_DB="admin"LL_M_OP_DB="liuli"LL_FLASK_DEBUG=0LL_HOST="0.0.0.0"LL_HTTP_PORT=8765LL_WORKERS=1# 下面这么多配置不必改,上面的才须要各自配置# 请填写你的理论IPLL_DOMAIN="http://{real_ip}:8765"# 请填写微信散发配置LL_WECOM_ID=""LL_WECOM_AGENT_ID="-1"LL_WECOM_SECRET=""
假如你和我一样应用微信作为散发终端,只须要通过以下步骤获取以下参数即可:
- LL_WECOM_ID
- LL_WECOM_AGENT_ID
- LL_WECOM_SECRET
获取流程如下,请先轻易用手机号注册一个企业微信。
首先发明利用:
获取相干ID:
企业ID在我的企业->企业信息->企业ID
。
为了不便能够在微信上接管音讯,记得开启微信插件,进入下图所在位置,扫码关注你的二维码即可:
当初你获取了以下三个参数,请到对应配置填写秘钥即可。
工作配置
工作配置次要是让使用者能够更加个性化地应用Liuli
,从而满足用户各种需要,以后Liuli
还只能反对公众号采集、过滤、散发、备份操作,也就是本文的外围目标,大家将以下内容复制到liuli_config/default.json
即可:
{ "name": "default", "author": "liuli_team", "collector": { "wechat_sougou": { "wechat_list": [ "老胡的储物柜" ], "delta_time": 5, "spider_type": "playwright" } }, "processor": { "before_collect": [], "after_collect": [{ "func": "ad_marker", "cos_value": 0.6 }, { "func": "to_rss", "link_source": "github" }] }, "sender": { "sender_list": ["wecom"], "query_days": 7, "delta_time": 3 }, "backup": { "backup_list": ["mongodb"], "query_days": 7, "delta_time": 3, "init_config": {}, "after_get_content": [{ "func": "str_replace", "before_str": "data-src=\"", "after_str": "src=\"https://images.weserv.nl/?url=" }] }, "schedule": { "period_list": [ "00:10", "12:10", "21:10" ] }}
留神下面的wechat_list
字段,你只须要将本人想订阅的公众号输出进去即可,前面这块会做界面进行配置,先将就着用用吧。
启动
感激你能看到这里,当初间隔胜利就只有一行命令了,请先查看liuli
目录下文件树是否是上面这个样子:
(base) [liuli] tree -L 1 ├── docker-compose.yaml├── liuli_config├────default.json├── mongodb_data└── pro.env
确认没问题后,执行:
docker-compose up -d
不出意外,会看到Docker
启动了这三个容器:
查看liuli_schedule
,会有日志如下:
输入日志如下:
Loading .env environment variables...[2022:01:26 23:09:24] INFO Liuli Schedule(v0.1.5) started successfully :)[2022:01:26 23:09:24] INFO Liuli Schedule time: 00:10 12:10 21:10[2022:01:26 23:09:36] INFO Liuli playwright 匹配公众号 老胡的储物柜(howie_locker) 胜利! 正在提取最新文章: 我的周刊(第023期)[2022:01:26 23:09:39] INFO Liuli 公众号文章长久化胜利! 老胡的储物柜[2022:01:26 23:09:40] INFO Liuli 微信公众号文章更新结束(1/1)...[2022:01:26 23:09:45] INFO Liuli 备份器执行结束!
执行结束后,你能够进入MongoDB数据库,会呈现如下collection
:
- liuli_articles: 获取的文章元信息
- liuli_backup: 文章全副备份
- liuli_rss: 生成的RSS
- liuli_send_list: 散发状态
- liuli_backup_list: 备份状态
假如你公众号源有老胡的储物柜
,那么启动结束,你能够拜访老胡的储物柜
的RSS
订阅地址http://ip:8765/rss/liuli_wechat/老胡的储物柜/
,成果如下:
留神红框局部,因为我应用的是GitHub
备份器,所以地址显示的是GitHub
地址,大家如果也想用这个,能够参考教程备份器配置,我应用GitHub
备份器成果如下如:
每日更新的文章都会被Liuli
主动同步到这个我的项目,如果大家都用Liuli
的GitHub
备份器,一起将备份后果联合起来的话,那将会是一股十分宏大的力量,能够期待下。
展现
Liuli
启动胜利后,对于使用者来说,次要感知在散发订阅这一层。
微信散发终端效果图:
订阅成果如下图:
阐明
本我的项目还属于十分稚嫩的晚期阶段,如果大家感觉有用的话,心愿快点用起来,趁早提点意见,让Liuli
成长得更加迅速。
如果感觉这个我的项目不错,麻烦在GitHub
给Liuli
一个Star,我的项目地址点这里liuli-io/liuli。
如果你在搭建&应用过程中有任何问题或者意见,你能够间接在GitHub
提Issue
或者间接进群咱们详聊(如果过期,公众号外面有我微信,拉你进群)。
附录
docker-compose.yaml
配置如下:
version: "3"services: liuli_api: image: liuliio/api:v0.1.1 restart: always container_name: liuli_api ports: - "8765:8765" volumes: - ./pro.env:/data/code/pro.env links: - liuli_mongodb depends_on: - liuli_mongodb networks: - liuli-network liuli_schedule: image: liuliio/schedule:v0.1.5 restart: always container_name: liuli_schedule volumes: - ./pro.env:/data/code/pro.env - ./liuli_config:/data/code/liuli_config links: - liuli_mongodb depends_on: - liuli_mongodb networks: - liuli-network liuli_mongodb: image: mongo:3.6 restart: always container_name: liuli_mongodb environment: - MONGO_INITDB_ROOT_USERNAME=liuli - MONGO_INITDB_ROOT_PASSWORD=liuli ports: - "27027:27017" volumes: - ./mongodb_data:/data/db command: mongod networks: - liuli-networknetworks: liuli-network: driver: bridge