乐趣区

关于python:基于Liuli构建纯净的RSS公众号信息流

首先介绍下,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 liuli
cd liuli
# 寄存调度工作配置,默认命名为 default.json
mkdir 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=0
LL_HOST="0.0.0.0"
LL_HTTP_PORT=8765
LL_WORKERS=1
# 下面这么多配置不必改,上面的才须要各自配置
# 请填写你的理论 IP
LL_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 主动同步到这个我的项目,如果大家都用 LiuliGitHub备份器,一起将备份后果联合起来的话,那将会是一股十分宏大的力量,能够期待下。

展现

Liuli启动胜利后,对于使用者来说,次要感知在散发订阅这一层。

微信散发终端效果图:

订阅成果如下图:

阐明

本我的项目还属于十分稚嫩的晚期阶段,如果大家感觉有用的话,心愿快点用起来,趁早提点意见,让 Liuli 成长得更加迅速。

如果感觉这个我的项目不错,麻烦在 GitHubLiuli一个 Star,我的项目地址点这里👉liuli-io/liuli。

如果你在搭建 & 应用过程中有任何问题或者意见,你能够间接在 GitHubIssue或者间接进群咱们详聊(如果过期,公众号外面有我微信,拉你进群)。

附录

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-network

networks:
  liuli-network:
    driver: bridge
退出移动版