wechatsync / Wechatsync

一键同步文章到多个内容平台,支持今日头条、WordPress、知乎、简书、掘金、CSDN、typecho各大平台,一次发布,多平台同步发布。解放个人生产力
https://www.wechatsync.com?utm_source=github_info
GNU General Public License v3.0
3.77k stars 568 forks source link

feature:程序化调用 #33

Open linonetwo opened 3 years ago

linonetwo commented 3 years ago

我希望能在我的开源 Electron 笔记工具里,暴露一个把 markdown 内容传给 wechatsync 的 API,调用后显示现有的账号添加等界面,这需要对现有代码做哪些修改呢?

不方便直接嵌入扩展,因为Electron应用上没有一个栏用来放扩展,而且唤起扩展的按钮可能是自定义的。

我在想是不是得把现有写在扩展里的 UI 部分重构出来?不过这是 vue 写的,要嵌入 react 应用也不是很方便…

lljxx1 commented 3 years ago

可以本地提供内容库API,Web端读取本地库然后再使用Chrome扩展提供的API来同步

具体可以参考: https://github.com/wechatsync/Wechatsync/blob/master/packages/markdown-editor/src/Main.vue https://www.wechatsync.com/md/

插件会向页面注入window.$syncerAPI

除此之外就是插件和本地应用通过websocket建立通讯,插件把账号信息推送给本地应用并且接送同步任务的推送。

lljxx1 commented 3 years ago

正在计划把发布API抽出一个包来,但是需要开发者自己注入各个平台登陆后的Cookie

linonetwo commented 3 years ago

我感觉我可以在我的APP里加上这个插件,只要我写个在electron里嵌入浏览器插件的功能就好。 不过在electron里怎么调用你的插件还是个问题

linonetwo commented 2 years ago

我最近发现 wecatalog 增加了导入 chrome 插件的功能,我研究一下或许能把 wechatsync 带到 electron 里,这样就方便用你注入到 window 上的 api 了,通过你新发布的那个 SDK 来调用你的 API,不需要把实际功能单独抽出来发 npm 了。

说来惭愧,因为我一整年没写过任何文章了,所以还没用过你的插件。到时候是不是electron里点一下登录按钮,就可以在electron里弹出一个窗口登录第三方网站?

在 electron 里登录各个第三方网站好像也有点麻烦,不过这样的话也插件就不需要支持火狐了,让火狐用户也能用 electron 版文章编辑器来发布东西。

linonetwo commented 2 years ago

可以本地提供内容库API,Web端读取本地库然后再使用Chrome扩展提供的API来同步

其实这个想法不错,能不能加一个填本地 CMS 地址的框,然后我填 localhost:xxxx ,你和它建立 websocket 通信之后,它可以以规定格式向你推送文章草稿?

或者更麻烦点儿,像 webclipper 一样加插件系统适配不同CMS,但是一是写插件麻烦你还得补充文档(webclippper 的插件我至今还没写出来…因为文档不清楚,代码有点没精力读),二是其实要求CMS那边写插件提供websocket接口插件跟你对接就行了。

curly210102 commented 2 years ago

哇,很丰富的想法

不知道我的理解是否有误?

linonetwo commented 2 years ago

没错的,各有取舍吧。

为了方便用户不用每个网站在electron里都重新登录一遍,我觉得还是 websocket 的思路比较好,但是火狐用户就用不了了。

lljxx1 commented 2 years ago

走Websocket的话, 需要CMS跑个WS Server, 插件支持设置推送端WS URL

通讯流程(草稿)

接口

插件端

通过设置的WS URL和CMS端建立链接

linonetwo commented 2 years ago

setSyncAccounts 是为了在 CMS 那边显示出平台列表,方便用户点选某一个来发布吗?

选择平台+文章之后,通过 broadcastSyncTask 调用