开源一款剪贴板跨设备共享工具

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。
个人IP:shigen

昨天遇到了一个很棘手的问题:我的手机剪贴板需要同步到另外的两台设备上。遗憾的是手机上并没有安装相同的通讯软件。用网上免费的剪贴板共享工具吧,方便是方便,但是觉得还是不安全,关键是不能实现特定的需求。我很享受DIY的过程,于是思索一下,我觉得我可以自己做出来,还能做到局域网下的剪贴板跨设备共享,毕竟我也曾有过成功的案例:开源一个局域网文件共享工具。于是说干就干。

起名字

项目总得有个名字吧。哎,想了好久,还是觉得没有合适的,最后问了GPT,选用了cpoyhub这个名字。

确认需求

我的需求就是很简单,像极了【蜂巢】的设计,我随用随取。输入剪贴板内容,拿到取件码;输入取件码,获得剪贴板内容。再简单不过了!所以,我也不用考虑那么多复杂的东西,什么认证、安全、高并发……小脑袋要爆炸!

确认架构

这是一个小工具,用不着我动不动Spring Boot那一套,而且Spring boot本身就很重!还是拿起了拿手的Flask框架,外加一个Redis,搞定!

前端的话,别搞Vue项目了,直接原生的来一套!关键是时间就那么一丢丢,能用魔法尽量用魔法。需要注意的是:前端的js文件,能用CDN就用CDN,给服务器节省一点流量。

代码设计

算起来逻辑还是很简单的,shigen直接开干了!

项目的整体结构

项目的整体结构如图所示:

项目结构

算得上是一个简简单单的小demo了。

后端代码

这里只展示核心的代码:

from datetime import datetime
from app import app, redis_client
from flask import jsonify, render_template, requestREDIS_KEY_PREFIX = 'clip:'
REDIS_KEY_EXPIRE_SES = 3600 * 10def format_current_time(format='%m%d%H%M%S'):"""默认格式化当前时间为 'MMDDhhmmss':return: 格式化后的时间字符串"""current_time = datetime.now()formatted_time = current_time.strftime(format)return formatted_time@app.route('/')
def index():return render_template('index.html')@app.route('/new', methods=['POST'])
def clipboard():data = request.form['data']# 将数据存储到 Redis 中tms = format_current_time()key = REDIS_KEY_PREFIX + tmsredis_client.set(key, data, REDIS_KEY_EXPIRE_SES)return jsonify({'data': tms, 'success': True})@app.route('/get', methods=['GET'])
def get():tms = request.args.get('code')key = REDIS_KEY_PREFIX + tmsvalue = redis_client.get(key)if not value:return jsonify({'data': None, 'success': False})else:return jsonify({'data': value, 'success': True})
前端代码
    <script>$(document).ready(function() {// 保存剪贴板内容$('#save-btn').click(function() {var data = $('#new-data').val();$.post('/new', {data: data}, function(response) {console.log(response);showSuccessMessage('Your clipboard saved successfully');$('#new-data').val(response.data);$('#save-btn').attr('disabled', true);});});// 提取剪贴板内容$('#extract-code').change(function() {var code = $(this).val();$.get('/get', {code: code}, function(response) {$('#extracted-data').val(response.data);});});// 复制剪贴板内容$('#copy-btn').click(function() {var textarea = document.getElementById('extracted-data');textarea.select();document.execCommand('copy');showSuccessMessage('Copied to clipboard!');});// 显示复制成功提示消息function showSuccessMessage(text) {var message = $('#alert-message');message.text(text).fadeIn(300).delay(1500).fadeOut(400);}});</script>

完整的代码,可参考shigen的GitHub。

服务部署

最后就是服务的部署了,shigen部署在了自己的腾讯云服务器上。一切很是顺利,基本山没有遇到大的问题:

nohup python3 run.py > app.log 2>&1 &

服务部署

整个过程也放在了shigen的哔哩哔哩上,感兴趣的伙伴,欢迎体验。

与shigen一起,每天不一样!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/784099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gitconfig区分工作和个人账号

用git&#xff0c;一般会有个人账号比如github的账号&#xff0c;也会有工作上的gitlab等的账号。如果不做一下区分&#xff0c;容易出现工作项目一些commit记录的是自己github的账号&#xff0c;显得很奇怪。 一般~/.gitconfig 会有git账号和邮箱配置&#xff0c;这个一般就是…

HarmonyOS实战开发-一次开发,多端部署-音乐专辑

简介 基于自适应和响应式布局&#xff0c;实现一次开发、多端部署音乐专辑页面。 相关概念 一次开发&#xff0c;多端部署&#xff1a;一套代码工程&#xff0c;一次开发上架&#xff0c;多端按需部署。支撑开发者快速高效的开发支持多种终端设备形态的应用&#xff0c;实现对…

Chatgpt掘金之旅—有爱AI商业实战篇(二)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、前言&#xff1a; 成为一名商业作者是一个蕴含着无限可能的职业选择。在当下数字化的时代&#xff0c;作家们有着众多的平台可以展示和推广自己的作品。无论您是对写书、文…

什么时候使用静态方法,面向对象编程,设计模式,php编程

静态方法在编程中有多种适用情况&#xff0c;以下是一些常见的使用场景&#xff1a; 1. **工具类或辅助函数**&#xff1a;当你需要创建一个类来提供一些与类本身的实例无关的工具方法或辅助函数时&#xff0c;静态方法是很合适的。这些方法可以直接通过类名来调用&#xff0c…

centos7安装单机模式kafka 2.12-3.5.2

一、目标 在centos7上安装kafka的单机模式,而且仅仅使用kafka一个包来安装(不单独安装zookeeper,而采用kafka自带的zookeeper)。 二、准备工作 1、下载kafka、openjdk-17 貌似新版本的最好使用OpenJDK 17 及以上版本效果才好。 Oracle的JDK官方下载页面:Java Downloa…

华为鲲鹏云认证考试内容有哪些?华为鲲鹏云认证考试报名条件

华为鲲鹏云认证考试是华为公司为了验证IT专业人士在鲲鹏计算及云计算领域的专业能力而设立的一项认证考试。以下是关于华为鲲鹏云认证考试的一些详细信息&#xff1a; 考试内容&#xff1a;华为鲲鹏云认证考试的内容主要包括理论考核和实践考核两大部分。理论考核涉及云计算、…

商业开源MES+源码+可拖拽式数据大屏

商业开源的一套超有价值的JAVA制造执行MES系统源码 带本地部署搭建教程 教你如何在本地运行运行起来。 开发环境&#xff1a;jdk11tomcatmysql8springbootmaven 需要源码&#xff0c;私信我付费获取。 一、系统概述&#xff1a; 万界星空科技免费试用MES、开源MES、商业开…

PP-YOLOE: An evolved version of YOLO

摘要 我们在之前 PP-YOLOv2 的基础上进行了优化&#xff0c;使用 无锚 范式&#xff0c;更强大的主干和颈部配备了 CSPRepResStage 。 ET-head 和动态标签分配算法 TAL 。 1 、介绍 受 YOLOX 的启发&#xff0c;我们进一步优化了之前的工作 PP-YOLOv2 。 PP-YOLOv2 是一款高…

JS的入口函数,并讲解入口函数的作用

windowonload function window.addEventListener (“load”&#xff0c;function ()) document.addEventListener (“DOMContentLoaded”&#xff0c; function ()) 作用&#xff1a; DOMContentLoaded DOM加载完毕&#xff0c;不包含图片fash css等就可以执行&#xff0c;加…

pytorch之model.eval()、model.fuse()及model.fuse.eval()介绍

在 PyTorch 中&#xff0c;model.eval() 是用于将模型设置为评估模式的方法&#xff0c;而 model.fuse() 是用于量化模型中的融合操作的方法。下面是它们的详细介绍&#xff1a; 1. model.eval()方法介绍 当涉及到 PyTorch 中的模型评估时&#xff0c;model.eval() 是一个非常…

2.灌水..

2.灌水 - 蓝桥云课 (lanqiao.cn) 问题描述 小蓝有一个01矩阵。他打算将第一行第一列的0变为2。变化过程有传染性&#xff0c;每次2的上下左右四个相邻的位置中的0都会变成2。直到最后每个2的周围都是1或2结束 请问&#xff0c;最终矩阵中有多少个 2? 以下是小蓝的矩阵&#xf…

PHP在线客服系统源码修复版

源码简介 在线客服系统网站源码https://www.888host.cn/330.html 新增消息预知&#xff0c;消息撤回&#xff0c;消息已读未读&#xff0c; 修复需要刷新才能收到消息 修复客户来源地址 修复消息提示音 修复桌面推送提醒 搭建环境 宝塔面板 &#xff0c;Nginx1.16-1.18 …

C语言程序10题

第81题 &#xff08;10.0分&#xff09; 难度:易 第2章 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能&#xff1a;打印出如下图案&#xff08;菱形&#xff0…

MySQL 之 数据库操作 及 表操作

&#x1f389;欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ &#x1f389;感谢各位读者在百忙之中抽出时间来垂阅我的文章&#xff0c;我会尽我所能向的大家分享我的知识和经验&#x1f4d6; &#x1f389;希望我们在一篇篇的文章中能够共同进步&#xff01;&#xff01;&…

Qt QWebSocket讲解

QWebSocket 是 Qt 框架中用于处理 WebSocket 通信的类。WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。这使得客户端和服务器之间可以进行实时交互&#xff0c;而无需频繁地建立和关闭连接。 QWebSocket 的基本使用 创建 QWebSocket 对象&#xff1a; 你可以创建一个…

2024.03.21校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招&实习 | 易控智驾 2024春季校园招聘&#xff08;内推&#xff09; 校招&实习 | 易控智驾 2024春季校园招聘&#xff08;内推&#xff09; 2、校招 | 中国机械总院集团2024…

cesium 加载gltf并实时改变位置

业务描述&#xff1a;在场景中添加一个车辆&#xff0c;并实时改变车辆的位置&#xff0c;可选方案比较多&#xff0c;根据实际情况有不同的实现方式。 1、知道车辆所有轨迹的点坐标&#xff0c;用entity方式添加模型&#xff0c;position用SampledPositionProperty记录每个点的…

【跟着CHATGPT学习硬件外设 | 01】SPI

文章目录 &#x1f680; 概念揭秘关键精华&#x1f31f; 秒懂案例生活类比实战演练 &#x1f50d; 原理与工作流程探秘步骤1&#xff1a;初始化SPI接口步骤2&#xff1a;主设备启动通信步骤3&#xff1a;主设备发送数据步骤4&#xff1a;从设备接收数据步骤5&#xff1a;从设备…

一文彻底搞懂 TSL 流程

文章目录 1. 什么是 TSL2. TSL 流程3. CA 签发流程 1. 什么是 TSL HTTPS&#xff08;Hyper Text Transfer Protocol Secure&#xff09;是基于 HTTP 协议之上的安全通信协议&#xff0c;它使用 TLS 或 SSL 加密协议来保护网络通信的安全性和隐私性。 TLS&#xff08;Transpor…

模拟游戏《幸福工厂》好玩吗?《幸福工厂》怎么在mac电脑上打开?

关于《幸福工厂》这款游戏是否好玩&#xff0c;普遍的玩家反馈和评价表明&#xff0c;《幸福工厂》&#xff08;Satisfactory&#xff09;因其深度的工厂建造模拟、自由度极高的探索以及精美的图形表现而受到许多玩家的喜爱。它允许玩家在一个开放的世界中规划并建立复杂的生产…