python脚本让win10、ubuntu剪切板同步

该文章介绍了一个使用PythonFlask框架实现的剪切板同步应用,支持在Ubuntu和Windows系统间同步文本内容。应用通过监听剪切板变化,当内容改变时,通过HTTPPOST请求在两台机器之间传递更新。代码中涉及多线程、pyperclip库以及JSON数据交换。
摘要由CSDN通过智能技术生成

使用python的flask框架同步两台机器的剪切板,目前之支持文本的同步。

代码

ubuntu中的python代码

from flask import Flask, request
import pyperclip
import json
import threading
import time
import requests
import logging

TEXT = pyperclip.paste()
app = Flask(__name__)

@app.route('/shearplate', methods=['GET', 'POST'])
def shear_plate():
    global TEXT
    if request.method == 'POST':
        dd = request.data
        dd = json.loads(dd.decode())
        # dd = request.form
        logging.info(f"{dd}, {type(dd)}")
        text = dd.get("text", "")
        TEXT = text
        pyperclip.copy(text)
        return text
    else:
        return "error"


def check_shear_plate():
    global TEXT
    while True:
        time.sleep(1)
        text = pyperclip.paste()
        if text and TEXT and TEXT != text:
            logging.info(f"send data: {text}")
            TEXT = text
            try:
                response = requests.post("http://192.168.0.167:8077/shearplate", data = json.dumps({"text":text}))
                logging.info(f"return data: {response.text}")
            except:
                logging.info("send error...")


if __name__ == '__main__':
    t1 = threading.Thread(target=check_shear_plate)
    t1.setDaemon(bool)
    t1.start()
    
    app.run(host="0.0.0.0", port=8077, debug=False)

windows10中的python代码

from flask import Flask, render_template_string, request
from flask import url_for
import pyperclip
import json
import threading
import time
import requests
import logging

TEXT = pyperclip.paste()
app = Flask(__name__)

@app.route('/shearplate', methods=['GET', 'POST'])
def shear_plate():
    global TEXT
    if request.method == 'POST':
        dd = request.data
        dd = json.loads(dd.decode())
        # dd = request.form
        logging.info(f"{dd}, {type(dd)}")
        text = dd.get("text", "")
        TEXT = text
        pyperclip.copy(text)
        return text
    else:
        return "error"


def check_shear_plate():
    global TEXT
    while True:
        time.sleep(1)
        text = pyperclip.paste()
        if text and TEXT and TEXT != text:
            logging.info(f"send data: {text}")
            TEXT = text
            try:
                response = requests.post("http://192.168.0.124:8077/shearplate", data = json.dumps({"text":text}))
                logging.info(f"return data: {response.text}")
            except:
                logging.info("send error...")


if __name__ == '__main__':
    t1 = threading.Thread(target=check_shear_plate)
    t1.setDaemon(bool)
    t1.start()
    app.run(host="0.0.0.0", port=8077, debug=False)

设置开机启动

ubuntu设置开机启动

在终端输入如下命令,打开“启动应用程序首选项”

gnome-session-properties

先点击“添加”,再输入脚本启动命令,最后点击“保存”。
在这里插入图片描述

windows下flask设置开机启动

因为需要开机启动,又需要隐藏终端所以比较麻烦,尝试了很多方法都没有成功。最终方案用Nuitka打包python脚本为exe,再将exe的快捷方式放入启动目录。
先安装Nuitka

pip install Nuitka

再打包为exe

nuitka --windows-disable-console 脚本名.py
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值