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 平台。完成资源的获取以及发布。