栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Obsidian】微信使用 Remotely Save S3 兼容 发送到 Obsidian

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Obsidian】微信使用 Remotely Save S3 兼容 发送到 Obsidian

微信使用 Remotely Save S3 兼容 发送到 Obsidian

原文地址:
微信使用 Remotely Save S3 兼容 发送到 Obsidian
作者: 恐咖兵糖
CC BY-NC-SA 4.0

使用微信公众号实现,发送到腾讯COS。Obsidian 获取到消息。

基础要求
    带公网ip的服务器并装有python3环境微信公众号的测试号腾讯云 COS

备注: COS 和 Obsidian 插件 Remotely Save 使用说明: Obsidian 同步 Remotely Save S3 配置指南

准备数据
    微信公众号测试号APP_ID微信公众号测试号APP_SECRET腾讯云 secret_id腾讯云 secret_key腾讯云 COS 相关信息 包括 region,Bucket 名
服务端搭建
    服务器安装依赖模块 pip3 install werobot 和 pip3 install cos-python-sdk-v5将准备的数据填写至程序 # 相关信息 中 ,如果想要改服务器端口可以在 robot.config[“PORT”] = “8008” 更改开放 Linux 服务器8008端口 ; 开放 腾讯云安全组 8008 端口运行程序并挂后台 ,我使用的是 宝塔面板 python 项目管理器 运行的该项目
# -*- coding=utf-8

# werobot cos-python-sdk-v5

from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import werobot
import time
import requests

# 相关信息

token = "token"  # 自定义
APP_ID = "wxxxxxxxxxxxxxxxxx"  # 微信公众号测试号APP_ID
APP_SECRET = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # 微信公众号测试号APP_SECRET
secret_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # 腾讯云 secret_id
secret_key = "xxxxxxxxxxxxxxxxxxxxxxxxx"  # 腾讯云 secret_key
region = "ap-nanjing"  # 腾讯云 COS
cos_token = None  # 腾讯云 COS token
scheme = "https"  # 腾讯云 COS 访问模式
bucket = "test-0123456789"  # 腾讯云 Bucket

# werobot 配置

robot = werobot.WeRoBot(token=token)
robot.config["APP_ID"] = APP_ID
robot.config["APP_SECRET"] = APP_SECRET

# cos 配置

config = CosConfig(
    Region=region,
    SecretId=secret_id,
    SecretKey=secret_key,
    Token=cos_token,
    Scheme=scheme,
)
client = CosS3Client(config)
# rob_client = robot.client
# rob_client.create_menu({
#     "button":[{
#          "type": "click",
#          "name": "用户信息",
#          "key": "info"
#     }]
# })

# 菜单点击 输入信息 这个菜单影响快速输入信息 不方便

# @robot.key_click("info")
# def music(message):
#     return '你点击了“用户信息”按钮'

# 关注回复


@robot.subscribe
def subscribe(message):
    return "这是恐咖兵糖的测试公众号"


# 文字消息回复 put_object append_object
@robot.text
def text_reply(message):
    yaml_str = message.content
    yaml = (
        "---ncontent: " + yaml_str.replace("n", "
") + "n---n" ) # 将内容存入 yaml 字段 方便 dataview 使用 替换换行防止出错 btyes = bytes(yaml + message.content, encoding="utf8") name = time.strftime("%Y%m%d%H%M%S", time.localtime()) response = client.put_object( Bucket=bucket, Body=btyes, Key="微信收藏/" + name + ".md", ) return response["ETag"] # 图片消息 @robot.image def image_reply(message): # btyes = bytes("![]("+message.img+")", encoding = "utf8") # 直接使用腾讯链接显示图片 file = requests.get(message.img) name = time.strftime("%Y%m%d%H%M%S", time.localtime()) response1 = client.put_object( Bucket=bucket, Body=file.content, Key="微信收藏/附件/" + name + ".jpg", ) conent = "![[附件/" + name + ".jpg]]" yaml = "---ncontent: " + conent + "n---n" btyes = bytes(yaml + conent, encoding="utf8") response2 = client.put_object( Bucket=bucket, Body=btyes, Key="微信收藏/" + name + ".md", ) return response1["ETag"] + response2["ETag"] @robot.error_page def make_error_page(url): return "404" @robot.handler def error_message(message): return "不支持的消息类型" robot.config["HOST"] = "0.0.0.0" robot.config["PORT"] = "8008" robot.run()
基本使用

扫码测试号二维码,然后可以看到用户列表中多了一个人。然后就可以发送消息了。

问题和缺点
    公众号毕竟有公众属性,并不是为个人服务准备的。或许可以使用鉴别用户 id 的方法防止不相干的人关注和发送消息,但是最好的解决方法是使用用户系统。上面这个程序有时候会报错,甚至有崩溃过。毕竟只是顺手写的。发送图片时,后台能获取到一个图片链接。但是图片会被压缩。接收图片以![](https://abc.com/123.jpg)形式保存至 yaml 中时是能被 dataview 显示出来的。但是上面程序选择了保存图片至本地附件文件夹并且使用的是 ![[]]的形式。关于 dataview 不会显示 md 中图片这个问题,我尝试了很久,也没解决这个问题。dataview 没有找到显示正文的函数,yaml 显示还有一点问题。如果有人解决了希望 发邮件 告诉我一声,或者通过 哔哩哔哩 联系我,我会在本文中记录。
相关资料

使用的框架文档

werobot说明文档

cos上传文档

公众号搭建可以在 哔哩哔哩网站 搜索 werobot 学习

COS 和 Obsidian 插件 Remotely Save 使用说明: Obsidian 同步 Remotely Save S3 配置指南

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739392.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号