文本图片文件都可以!实现最轻量跨所有平台设备剪贴板同步 您所在的位置:网站首页 哔哩哔哩图片封面 文本图片文件都可以!实现最轻量跨所有平台设备剪贴板同步

文本图片文件都可以!实现最轻量跨所有平台设备剪贴板同步

2023-06-10 21:55| 来源: 网络整理| 查看: 265

不过从标题大家也可以看出今天的文章是一种通用的解决方案,只不过 Android 的部分用到 Tasker,所以不管你现在用的是什么平台(Windows/MacOS/Linux/Android/iOS 等等),只要你现在正在寻找简洁无感,使用方便,支持所有平台和设备的剪贴板同步方案,这篇文章都可以帮到你哦。

作者的话: 其实从自动化软件入手是个很好的学习编程的入门步骤,不用一上来就被各种编程语言复杂的文档和概念劝退,能够用自己实际的需求和直观的流程学到各种基本流程和算法概念以及基本的编程思想,就像现在针对小孩子的图形化编程一样(现在的小孩子真惨......)。

多平台同步剪贴板,相信绝大部分使用超过一台设备的朋友都会有这个需求。就算我们平时在不同设备之间联动不多,甚至只是用来影音娱乐,也希望不用在不同尺寸的设备上重复输入一样的内容。千万别小看这个需求的重要性,看似脑子里记一下再在另一台设备上输入,但是就是这些「小动作」带来的精神负担积累起来也是不容小觑。没有概念的朋友可以想象一下躺在沙发上看电影时远在天边的遥控器,和睡觉时平流层上的灯开关,更别说长到我们不可能记住的文本和图片文档这些富媒体同步了。

远在天边的遥控器和在平流层上的灯开关

但多平台跨设备同步剪贴板也是个看似永远「无法解决」的需求,虽然到了 2077 年每家系统基本都自带剪贴板管理,但是出于各种原因它们犹如一座座孤岛,怎么也连不起来,还需要用户自己去头疼。就算是现在体验最好的苹果全家桶剪贴版同步,先不说只能算跨半个平台,就是同步体验现在也是一般般:通过账户同步的特性导致剪贴板经常没有同步或者等半天才能同步到其它设备,于是很多用户一上手就把这个功能关掉了。

虽然但是,苹果全家桶的剪贴板同步体验还是第一梯队的

相信大家都和我一样曾经想寻找一个一劳永逸的剪贴板同步方案,但是市面上现在大部分的方案都有各自我不能忍受的缺点:每台设备都要安装专门的客户端,占用后台消耗电量;各种会员的限制,为了一个剪贴板同步的需求还要每月订阅(更别说还需要各种验证服务在后台联网认证);大部分对平台支持也不全,并且有很多自己根本用不上的功能,也不能灵活地根据自己的需求调整。

V2EX 上面的帖子很全面地说明了自己的辛酸史

甚至 V2EX 上面还有一个「多平台剪贴板同步真的是一个世界性难题吗?搜了一圈好像没有一款合适的简单易用的解决方案」 的高楼帖子,里面有很多大家的讨论和分享自己的解决方案(如果本文的方法不适合你也可以看看这个帖子)。

不过好在经过一番摸索对比之后,我终于在万能的 Github 上找到了我认为最简洁优秀的多平台跨设备剪贴板同步解决方案 —— Clipboard-online,这个项目用一种简单优雅的方式满足了我所有的需求。

Clipboard-online 项目

Clipboard-online 同步文本的效果展示

Clipboard-online 同步图片文件的效果展示

■ 这个方案的好处

对比市面上众多的同类产品和服务,我选择 Clipboard-online 的理由主要有 3 个:

■ 轻量简洁,快速使用

Clipboard-online 采用 golang 编写并开源,它的原理非常简单,就仅仅是在系统后台开一个 http 端口监听,其它设备通过开发者提供的 API 发送 HTTP 请求来获取电脑上的剪贴板内容或者将对应的内容发送到电脑的剪贴板上。

这样的设计可谓是轻量到了极致,只开一个 http 监听端口意味着在现代一点的计算机上基本可以做到无 CPU 消耗以及 5MB 以下的内存占用。

Clipboard-online 的资源占用

至于在其它设备上占用则取决于你使用什么方法发送 HTTP 请求,Android 端用 Tasker 制作定时任务或者事件监听的话,就像我上一期提到的那样,多占用不到 1MB 的运行内存和忽略不计的电量,关屏时更是基本没有消耗。如果你像我一样更喜欢手动同步剪贴板的话,则可以直接做到 0 占用 —— 反正本来也要使用 Tasker 的,并且每次同步结束 Tasker 都会释放回收使用资源。

■ 真正多平台支持

同时在其它需要同步的设备上也不需要安装任何客户端,只要用你想到的任何方法发送 HTTP 请求就可以。比如项目里面在 iOS 端可以直接使用快捷指令,Android 这边有 HTTP Shortcuts 和 Tasker 等,另一台 Windows 设备可以使用官方的 PowerAutomate,Quicker 甚至浏览器书签等,至于 MacOS 和 Linux 等也有各种各样的方法(AppleScript/crontab + shell 等)。

因为现代系统基本都支持访问互联网(访问不了互联网也就不用谈任何同步功能了),所以 Clipboard-online 可以说得上真正跨全平台,你可以用上面不同平台的应用软件来实现手动和自动的同步,也可以按照自己的喜好弄个静态网页甚至第三方 APP。甚至 Clipboard-online 开源的性质,即使作者现在只编译了 Windows 版本的监听端,有基础的朋友也可以自己下载 golang 源码来编译 MacOS/Linux 等等系统的监听端,真正做到不分彼此随意同步。

■ 自定义程度高,灵活

开源加上 API 让 Clipboard-online 拥有最高的灵活性和无穷的自定义可能,项目本身就相当于只提供了一个接口,我们可以利用这个接口来搞各种各样的事情,比如轻松利用 Base64 编码实现图片和小文件的剪贴板同步,或者可以用自动化软件在接收到对应文本时进行对应的预处理(比如收到一个带多个数据的文本自动加上总和,收到图片自动加上水印等),这些同类应用没有或者需要付费订阅的功能用 Clipboard-online 配合自动化应用即使没有基础也可以没有难度地弄出来,甚至还可以与自己的需求紧密贴合。

学习 Tasker 网络请求的使用,享受动手乐趣前几期我们通过不同的任务学习到了不同的 Tasker 和自动化相关的知识,这期我们通过剪贴板同步的任务可以学到一些新东西 —— 如何发送网络请求到对应的地址。同时按照「沃·兹基硕德」定理,难度适中的任务也能让各位「不折腾会死」星人享受到「钓鱼(物理)」和「口红试色」同样的乐趣。

任务里发送网络请求相关的部分

■ 我基于官方 Tasker 任务的修改

虽然项目官方已经有大佬贡献了 Android 平台上的 Tasker 任务,不过目前任务仅仅是提供了最基础的拉取和上传剪贴板,并且有容易验证失败等问题。本文提供的 Tasker 任务,是我基于官方项目里面的任务修改而来,修复了容易验证失败的问题,将需要修改的内容提取成变量,方便大家使用时修改。最重要的是添加了剪贴板文件和图片的同步支持。

■ 多样的使用方法

Clipboard-online 项目里面已经提供了常见平台比较方便的使用方法和制作好的任务。比如 iOS 上就有快捷指令,Android 也提供了做好的 HTTP Shortcuts 和 Tasker 任务。

iOS 快捷指令的二维码

不过 Android 端还是推荐使用下面我修改好的 Tasker 任务,更新功能可以参考上面的内容。

■ Tasker 任务的使用

和前面的文章一样,我已经把配置文件(包括任务)分享到 Taskernet/Tasky,不过这次依然是根据需求不同分成了一个任务和一个配置文件,大家可以在安装 Tasker 后,访问:【手动任务】同步 Windows 剪贴板(上传/获取)- Taskernet 查看链接【手动任务】获取远程设备的剪贴板,需要安装上面的手动任务 - Taskernet 查看链接【配置文件】手机剪贴板改变时同步到 Windows 剪贴板 - Taskernet 查看链接【文件同步配置文件】发送文件到远程剪贴板 - Taskernet 查看链接

文件同步需要另外安装 Tasker 开发者的 AutoShare 插件,具体介绍和使用可以参考「用 Tasker 实现一键分享保存哔哩哔哩视频封面」这一期。

按照你的需求挑选其中一个导入就可以了,配置文件里面也包括了上面的手动任务。

注:记得保证 Tasker 是最新版,另外国内无法访问 Play 商店的用户现在也可以有单独的购买选项,不用去找麻烦又危险的破解版啦,捐赠开发者的 Patron 或者大量购买都可以,具体可以点击对应的 Tasker Q&A 查看链接 了解。

由于 Taskernet 需要额外的操作才能访问,这里更推荐小伙伴们直接访问我的 Github 项目 查看链接(欢迎 Star)按照你的需求把配置文件或者手动任务下回来,然后手动导入到自己的 Tasker 里。

打开你的 Tasker 主界面,切换到任意项目的配置文件 Tab 并长按「配置文件」按钮:

选择「导入配置」并在弹出的文件选择器里选中你刚刚下载好的配置文件(底下可以手动指定路径,右下角手机图标可以快速返回内置储存根目录):

导入配置文件的步骤

这样配置文件就成功导入到你的 Tasker 里面啦,配置文件里面已经包含对应的执行任务,不用我们再下载一次任务文件导入。不过除了配置文件,我们还需要导入场景文件。导入任务文件的步骤也和导入配置文件类似,在任意项目的「任务」 Tab 上长按「任务」按钮,然后选择「导入任务」,就像刚刚那样选择我们下载好的任务文件并导入,就可以将任务导入到我们自己的 Tasker 里面。

导入任务文件的步骤

导入任务文件的步骤

安装 Clipboard-online 与连接电脑

接下来我们就要安装 Clipboard-online 。步骤也非常简单,直接在 Github 项目的 Release 里面下载最新版,然后将 .exe 文件放到你喜欢的位置,接着双击运行就可以了。

第一次运行程序会在同一目录下生成 config.json 配置文件和 log.txt 日志文件,后面这个我们不用管,首次使用我们打开配置文件里面修改配置:

Clipboard-online 的配置文件

主要改的就是在 authkey 后面加上我们想要的密语提高连接安全性,如果端口和其它程序有冲突就把端口修改,比如 8087 或者 8888 啥的,其它的配置可以看 GitHub 项目的介绍(Timeout 是密语超时时间,单位秒;tempDir 是临时数据文件夹;Notify 是通知,打开就把对应的 false 改为 true,注意大小写):然后让各种设备连上我们刚刚装好 Clipboard-online 的电脑:获取电脑的局域网 IP,可以在 Windows 设置 -> 网络与 Internet -> 当前网络连接 -> 属性里面看到 IPv4 地址。地址加上我们刚刚看到或者设置好的端口就是我们电脑的连接地址(例如:192.168.1.168:8086)。

获取电脑的 IP 地址

接下来用各种任务参考项目里面的文档给这个地址发送 HTTP 请求就可以了,如果你用的是我上面提供的 Tasker 任务,只需要打开「同步 Windows 剪贴板」的任务详情,然后把变量 %url 和 %key 的值分别改为电脑的连接地址和你设置的密语就可以了。

修改任务变量

■ 自定义配置文件和任务

为了保证最小的占用和最大的自定义程度,导入手动任务的朋友需要手动执行或者自己按照需求弄一个配置文件链接到这个任务。

■ 手动执行任务

我自己就是选择手动执行任务,毕竟可以做到零占用零耗电,而且平时同步剪贴版的次数并不是很多。手动执行同步任务的方法很简单,最简单的就是直接长按任务,点击右上角的运行图标;或者点进去任务详情点击左下角的运行图标就可以。

当然每次执行任务都要进去 Tasker 是有点麻烦,所以我们也可以参考第一期来弄个桌面快捷方式,或者是把它加到通知栏下拉的快捷方式或者电源菜单快捷方式里。

■ 将任务快捷方式保存到手机桌面

在我们手机桌面长按添加小部件,选择 Tasker 的「任务快捷方式」,然后选择我们的任务,就可以把快捷方式添加到桌面。

请注意要先给任务添加一个图标(点击任务详情底下正中间),并且退出 Tasker,不然会添加失败。嫌弃任务默认图标太丑的朋友也可以在添加快捷方式之前,在任务详情里更换一个你喜欢的图标,嫌弃任务名太长的朋友也可以先长按任务重命名之后再添加到桌面。

除了桌面快捷方式,我们也可以放到电源菜单或者通知栏快捷菜单:

任务的桌面快捷方式

■ 分享图片文件等到远程设备剪贴板

在上面我也给大家分享了同步非文本数据的配置文件,除了需要安装 AutoShare 以外,我们导入配置文件之后还需要在 AutoShare 里面添加好对应的分享菜单,具体介绍和使用可以参考「用 Tasker 实现一键分享保存哔哩哔哩视频封面」这一期最后的部分。

将任务放到电源菜单和通知栏快捷菜单

■ 制作配置文件

当然想要追求无感同步或者各种特殊需求的朋友,也可以发挥自己的想象力,来制作各种各样不同的配置文件。我上面提供的配置文件,只是在手机剪贴板改变时,自动把剪贴板内容同步到 Windows,大家也可以根据自己的需求制作自己的配置文件,比如定时同步,解锁屏幕时同步,打开某个应用时同步,执行某个操作时同步等,也不仅限于把手机的剪贴板内容同步到 Windows,也可以给获取 Windows 剪贴版内容的任务做配置文件。

我在制作任务的时候,已经考虑到大家制作自己配置文件的情况。大家可以按照自己的需求随意制作配置文件,然后在链接任务时,任务名称留空,这样会自动新建一个局部任务,然后在任务详情里设置成这样:

在 AutoShare 里面添加菜单

如果你这个任务是想设置从手机同步剪贴板到电脑,就把参数 1 改为「获取」,如果这个任务是想获取电脑剪贴板上的内容,那么就把参数 1 设置为「发送」。

这样我们就能充分利用自动化软件的优势,在不同的情境下自动执行对应的发送或者获取剪贴版的任务。

就像是这个样子

■ 任务原理只想要到手即用的朋友到这里可以跳过康后面的高级玩法了,接下来就给好奇或者想要学习制作自己自动化任务的朋友一些简单说明和教程。上面也有简单提及到这个项目的基本原理,接下来我就给好奇的朋友深入讲解一下 Clipboard-online 是如何实现的。

■ HTTP 请求

不管是大项目还是小项目,不管是用什么编程语言写的程序,只要涉及到网络上两台设备之间的通信,大概率还是通过发送 HTTP/HTTPS 请求来交换数据(除非实时性要求高的会用 UDP 之类的),举个简单的概念大家都能看懂:

HTTP 请求就像是我们和一个匿名的笔友相互之间寄信,想要给他写信那么首先得知道他的收件地址把,他想回复我也得知道我的收件地址吧,这里的收件地址就是我们的 IP 地址。192.168.*.* 则是规定留给局域网的地址,局域网简单理解就是我们家里路由器下面的内部网络,不和互联网联通,只是让连上同一个路由器的设备之间可以直接相互通信,就像你和笔友都在同一个小镇,收寄信都只需要在小镇邮局(路由器/交换机)走一圈而不用送出去外面再回来,HTTPS 请求通俗讲就是给 HTTP 请求加密(信里面的内容用密语写),这里 Clipboard-online 之所以不用,是因为数据交换都是在局域网里面点对点传输,只有局域网里面的设备才能看到,没有加密的必要。

局域网和公网的概念,图片来源 @ClickSun

为了防止数据污染,比如一台设备想给电脑上的 A 程序发数据,另一台设备想给电脑上的 B 程序发数据,那么电脑如何分清哪部分数据是给 A 程序的,哪部分是给 B 的呢?所以电脑会给在自己上面运行的不同程序,只要有与外界交换数据需求的都分配不同的端口。

这样其它设备给电脑发送数据的时候,需要在 IP 地址后面加上端口,这样电脑就能轻易分辨出这个数据是发给哪个程序的了。反过来电脑发送数据给其它程序也一样,Clipboard-online 就是这样只开一个端口监听局域网里面有没有其它程序给这个端口发数据,如果有,就看看发过来的数据符不符合开发者要求的格式(也就是 API),如果符合就把里面的内容写道系统的剪贴板,这样就完成了一次把其它设备剪贴板内容同步到电脑的过程。

电脑发送剪贴板内容到其它设备也是一样,其它设备给电脑这个端口发送请求,如果符合开发者定义的 API,就把剪贴板内容通过建立的交换通道原路返回去。

■ 高级玩法

和其它同类应用服务不同,Clipboard-online 原理和 API 让它拥有极高的自定义能力和灵活度,所以我们可以在它的基础上玩出很多花样,下面简单举几个例子。

■ 字符串/图片/文件预处理

无论是 Tasker 任务,快捷指令还是其它自动化应用,利用 if 判断和自带的文字/图片/文件操作,就可以预处理剪贴板内容。

以 Tasker 为例,我们可以实现在收到剪贴板内容后对其中特定的文本进行替换然后执行操作,比如收到【短信 + 号码】短信内容 这种格式的文本自动获取里面的号码然后用短信把短信内容发出去:

也可以实现收到图片/文件后自动加水印,自动按照日期重命名或者自动移动到指定目录,它的可能性只取决于你的需求和想象力。

■ 不限局域网,公网远程剪贴板同步

现在大部分轻量简洁剪贴板同步服务都只能局域网交换数据,并且使用动态端口或者用户很难找到程序使用的端口,而 Clipboard-online 可以在配置文件里面自定义端口让我们可以实现随时随地在外边甚至用流量也能同步剪贴板。

如果你有公网 IP,进入我们电脑(也就是安装的 Clipboard-online 的设备)连接的路由器后台,找到类似「端口转发」的功能,接着新建端口转发,地址和端口就是电脑的 IP 地址和端口,方式保留默认的 TCP,其它选项默认,按下确定。之后你就可以通过你的公网 IP:端口远程同步剪贴板了。

至于如何获取公网 IP 和没有公网 IP 使用 DDNS 服务就不在本文讨论范围,大家可以在网上找到很多教程。

■ For 循环实现多设备同步

现在我们所有的操作和任务都是一台设备对一台设备,但是只要在任务里面加上自动化应用自带的 For 循环(具体可以看前几期里面的教程)就可以轻松实现一次性同步多台设备的功能。

不过目前,如果需要在两台非服务端设备之间同步剪贴板,还是需要一台安装 Clipboard-online 的设备作中转,在一台设备上发送内容到电脑,然后另一台设备从电脑上获取。

总结

在这篇文章中,我教大家利用 Clipboard-online 这个开源项目,打通不同平台设备之间的隔阂,干净利落地做好了全平台多设备同步剪贴板这件事。同时发散思维给大家参考了几种高级玩法,顺便还能让大家学到 Tasker 发送网络请求相关的知识。希望这个实用的任务能够帮到你(大家有什么需求也可以在评论区留言,我会挑选一些比较多的需求来制作分享)。

以上就是本文的所有内容啦。喜欢的朋友请务必点赞,转发,评论三连,这会让我更有动力创作更多好看的内容。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有