!!! 注意 新项目已发布 Obsidian 从本地到云端 obcsapi v3.0

下面文章属于 1.0 版本,新项目是 3.0 版本。请读者根据自身实际情况酌情选择

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

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

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

基础要求

  1. 带公网ip的服务器并装有python3环境
  2. 微信公众号的测试号
  3. 腾讯云 COS

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

准备数据

  1. 微信公众号测试号APP_ID
  2. 微信公众号测试号APP_SECRET
  3. 腾讯云 secret_id
  4. 腾讯云 secret_key
  5. 腾讯云 COS 相关信息 包括 region,Bucket 名

服务端搭建

  1. 服务器安装依赖模块 pip3 install werobot 和 pip3 install cos-python-sdk-v5
  2. 将准备的数据填写至程序 # 相关信息 中 ,如果想要改服务器端口可以在 robot.config[“PORT”] = “8008” 更改
  3. 开放 Linux 服务器8008端口 ; 开放 腾讯云安全组 8008 端口
  4. 运行程序并挂后台 ,我使用的是 宝塔面板 python 项目管理器 运行的该项目
# -*- coding=utf-8# werobot cos-python-sdk-v5from 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.contentyaml = ("---\ncontent: " + yaml_str.replace("\n", "<br>") + "\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()

基本使用

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

问题和缺点

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

相关资料

使用的框架文档

werobot说明文档

cos上传文档

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

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

【Obsidian】微信使用 Remotely Save S3 兼容 发送到 Obsidian相关推荐

  1. Obsidian 同步 Remotely Save S3 配置指南

    原文地址: https://www.ftls.xyz/posts/obsidiannote/ Obsidian 是非常优秀的笔记软件,其插件非常丰富,极大地丰富了 Obsidian 的功能.本文借助 ...

  2. Obsidian + remotely save + 坚果云:实现电脑端和手机端的同步

    写在前面:近年来某象笔记广告有增无减,不堪其扰,便转投其它笔记,Obsidian.OneNote.Notion.flomo都略有使用,本人更偏好obsidian操作简单,然其官方同步资费甚高,囊中羞涩 ...

  3. 微信分享到朋友圈、发送给朋友开发注意事项

    1.invalid url domain 当前页面所在域名与使用的appid没有绑定,请确认正确填写绑定的域名,如果使用了端口号,则配置的绑定域名也要加上端口号(一个appid可以绑定三个有效域名,见 ...

  4. 微信服务通知消息找回_第三方平台微信服务号模板消息怎么发送

    使用公众号平台模板消息功能,无法发送模板消息,如果想要发送模板消息,可以用第三方平台微号帮功能模板消息群发实现,也可自己根据公众号平台的接口开发实现,均可以为微信服务号发送模板消息,且发送模板消息不占 ...

  5. [微信开发] - 关于测试号以及消息发送及回复

    通过测试号,可以使用微信平台的全面功能. 而微信官方文档中也具体地描述了各种对接端口的参数调用和规则:https://mp.weixin.qq.com/wiki 今天小试牛刀将用户关注微信平台的事件E ...

  6. 微信小程序订阅消息定时发送消息

    微信小程序订阅消息定时发送消息 本人专注使用云开发,实现一个前端可以做后端以及整个项目的部署与上线. 如果觉得我讲的好就可以给我点个赞.也可以加我微信了解详情. 1.我们先要了解什么是订阅消息 而现在 ...

  7. php公众号批量推送,微信公众号文章如何批量发送给指定的用户

    微信公众号文章如何批量发送给指定的用户 导读:小编根据大家的需要整理了一份关于<微信公众号文章如何批量发送给指定的用户>的内容,具体内容:微信公众号的文章群发的时候,会发给所有的用户,但是 ...

  8. 微信小程序长按图片发送给好友

    问题描述 微信小程序长按图片发送给好友 解决方法 直接在<image></image>标签添加:show-menu-by-longpress="true" ...

  9. 微信小程序连接蓝牙 并分包发送 接收数据完整版

    微信小程序连接蓝牙并分包发送接收数据 初始化蓝牙 初始化蓝牙设备 搜索蓝牙设备 连接蓝牙设备 获取蓝牙设备所有service(支持读写的) 向蓝牙发送数据 断开蓝牙 停止搜索蓝牙 转16进制 Arra ...

最新文章

  1. 2022-2028年中国电力行业节能减排投资分析及前景预测报告
  2. .net core i上 K8S(四).netcore程序的pod管理,重启策略与健康检查
  3. Sentinel连接 Azure 活动日志中的数据
  4. (52)多路时钟复用FPGA如何约束一(片外时钟复用约束)
  5. Python爬虫高阶:微店混淆逆向解密
  6. 阿里云成为国内首个时序数据库标准工作组成员
  7. 6. Browser 对象 - Screen 对象(2)
  8. oracle脑裂复现,Oracle rac集群环境中的特殊问题
  9. 用VB实现自己的邮件“自己发”
  10. https://download.csdn.net/download/kuyu27537830/1322930#comment
  11. Predicting microbial interactions through computational approaches
  12. 著名的光伏系统设计——pvsyst7.2中文版
  13. 机器学习和数据挖掘(7):VC维
  14. E20170513-hm
  15. 自发光材质、panner、sin——移动的光栅
  16. 排列组合问题之捆绑法和插空法
  17. 【IntelliJ IDEA】编码设置终极版
  18. 【Java】【Lambda】东京奥运奖牌排序
  19. VC++流量监控程序源代码
  20. 使用gn创建HelloWorld工程

热门文章

  1. 条码标签软件快速生成序列号标签
  2. iOS - 苹果健康架构 基于HealthKit的健康数据的编辑
  3. Java实现两种方式 RSA签名, RSA签名校验
  4. RAC 之 RMAN 备份
  5. 巴伦变压器电路图_巴伦的功能原理_性能参数_基本类型介绍
  6. 背景橡皮擦,通道抠图
  7. mount system
  8. 在大数据中如何寻找相似的文档(shingle, minhash, LSH)(一)
  9. 熊猫阿波的故事及C++保留小数点的问题
  10. RTC Meetup | 这可能是年底最大、最有料的实时音视频开发者聚会交流