Telegram-wordpress自动发布机器人

Telegram-wordpress自动发布机器人

www 资源站开了有一段时间,但是内容上感觉还是可以的。但是苦于自己没有引流的渠道。流量一直上不来。

为了涨流量,想办法进行资源的分享和搬运。所以搞了个 TG-wordpress 的自动发布机器人。来实现TG 上的资源到 WordPress 的自动转发。

这里大体的实现上是使用telegram的消息监听,加上n8n的自动化 工作流的实现。因为本身不需要性能上的要求,所以本着快速输出,不重复造轮子的思想。

Telegram 机器人功能

这里贴一下核心代码,具体思路是监听 Tg 的固定的频道。获取新消息之后进行判断以及解析。

如果需要进行二次访问,那么是用接口继续进行二次访问来获取 bot 的消息。最终拿到拿到全部资源

@client.on(events.NewMessage(from_users=user_list))
async def event_handler(event):
    message = event.message
    logging.info(msg=message.peer_id)
    if DEBUG:
        bot_id = "xxx"
    else:
        bot_id = "xxx"
    global src_output
    if message.peer_id == PeerChannel(channel["阿里盘盘盘"]):
        logging.info("get target message, check if msg is valid")
        if "资源名称" in message.message and "点击获取" in message.message:
            if message.media is not None:
                logging.info("发现媒体")
                resource_pic = await download_image(message)
            text = message.message
            resource_name = re.search(r"资源名称:(.+)\n", text).group(1)
            resource_desc = re.search(r"资源简介:(.+)\n", text).group(1)
            keywords = re.findall(r"#\w+", text)
            src_output = {
                "resource_name": resource_name,
                "resource_desc": resource_desc,
                "resource_pic": resource_pic,
                "keywords": keywords,
                **src_output
            }
            link_url = list(message.entities)[0].url
            src_id = re.search(r"start=(.+)", link_url).group(1)
            src_msg = await client.send_message(entity=bot_id, message=f"/start {src_id}")
    if message.peer_id == PeerUser(bots[bot_id]):
        if "您所获取的链接" in message.message:
            resource_link = re.search(r"(?P<url>https?://[^\s]+)", message.message).group("url")
            logging.info(f"get resource link {resource_link}")
            src_output = {
                "resource_link": resource_link,
                **src_output
            }
            logging.info(msg=src_output)
            def post_json(url, data):
                with requests.post(url, data=data) as response:
                    logging.info(response.json())
            post_json(os.environ.get("N8N_API_URL"), src_output)


通过上面的功能,最终可以拿到资源对应的 JSON 消息。之后进行后面的发布流程

    {
        "resource_link": "https://www.aliyundrive.com/s/X5iPaT5FFr5",
        "resource_name": "闪电侠 The Flash (2023) 1080p 高码 内封简英 & 繁英双语 【双语合并已校对】【4K HDR & DV 内封稍后】",
        "resource_desc": "巴里(埃兹拉·米勒 Ezra Miller 饰)用自己的超能力重返过去,想要改变历史、拯救自己的家人,然而他的所作所为,也在无意间改变了未来。在这个新的未来里,佐德将军(迈克尔·珊农 Michael Shannon 饰)回归,并威胁要毁灭世界。巴里孤立无援,除非他能劝动一位非常不同且已隐退的蝙蝠侠(迈克尔·基顿 Michael Keaton 饰)重出江湖,并拯救被囚禁的氪星人——尽管这位并不是他所熟悉的超人。最终,为了拯救他身处这个世界,并回到他熟知的未来,巴里惟一的希望就是为命运而极速狂奔。不过,即使巴里做出最终极的牺牲……他真的能让整个宇宙都重归正轨吗?",
        "resource_pic": "https://xxx.com/www/media/asxiiwjsxk-33-09.jpg",
        "keywords": [
            "#DC宇宙",
            "#闪电侠",
            "#科幻",
            "#动作",
            "#1080p",
            "#DDP"
        ]
    }

N8N 工作流部分

N8n对我来说,的确算得上一个神器。对于一些小的功能,不是自己没有能力写轮子。总是懒的驱动。而且重复的流程代码维护性不是很强。

而N8n算是一个维护性强,而且基于流程的可视化界面。还支持webhook等。的确算得上神器。

下吗就是最终实现发布的 work flow的流程,提供一个webhook来进行触发。通过预定的 GPT 输入模板来对文本进行处理。最终发布到 WordPress 平台。完成资源的获取以及发布。

image-20230717145831972

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注