前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​【TDSQL-C MySQL实践】实现剪切板历史存储

​【TDSQL-C MySQL实践】实现剪切板历史存储

原创
作者头像
Vapour
发布2023-10-19 12:42:46
2800
发布2023-10-19 12:42:46
举报

前言

最近因为工作开始使用mac,但mac上没有windows上的剪切板历史功能,虽然mac有其他软件才能实现但是使用非常不习惯,本篇文章主要用python实现读取剪切板并上传到腾讯云的TDSQL-C MySQL存储起来方便日后使用DMC翻阅历史剪切板,而且特别适合多台电脑的情景方便在不同电脑上回顾其他电脑的剪切板。现在正赶上学生优惠可以超低价购入TDSQL-C MySQL,1c1g的一年仅需26元,并可以以此价格续费3次,也就是说104元可以4年,其10g的存储完全够用剪切板历史,还可以存储其他东西!!点我前往

数据库购买

如果您是学生可以通过点我前往以1年26元购买(25岁以下免认证哦),如果不是学生可以通过免费试用入口体验15天,轻量数据库和云数据库MySQL也是一样的,都可以试用!

选择离您近的地域购买即可

数据库控制台

基本介绍

购买完成后可以直接通过此链接点我前往进入数据库的管理界面。

注意选择相应的地域哦

我这边以上海为例,可以看到数据库的相关信息如下:

注意哈,这里有数据库的连接信息我们需要记住其主机和端口,后续要用到!

配置账号

如下图进入账号管理,可以修改root的密码,也可以增加用户管理不同的数据库。

修改权限可以修改用户对不同对象的权限

创建数据库

来到如图页面创建数据库

配置可以跟图所示一样

确定完成数据库的创建

查看数据库

我们可以通过DMC来查看数据库,点我前往

填入相应的信息登陆后可以按图选到刚刚创建的tdsqlnb的对象,再点击加号创建表

先填上表名

再切换到列信息,按图设置即可

Python代码

前置python库

通过pip install安装

  • pycryptodome
  • pyperclip
  • pymysql

rsa加解密

可以在这个网站生成密钥对哦:点我前往

用于解密的dec.py

代码语言:python
复制
import base64  
from Crypto.Cipher import PKCS1_v1_5  
from Crypto.PublicKey import RSA  
  
  
# 您准备的RSA私钥
private_key = '-----BEGIN RSA PRIVATE KEY-----\nMII******t5tg==\n-----END RSA PRIVATE KEY-----'  
  
  
def decrypt(text_encrypted_base64):  
    text_encrypted_base64 = text_encrypted_base64.encode('utf-8')  
    text_encrypted = base64.b64decode(text_encrypted_base64)  
    cipher_private = PKCS1_v1_5.new(RSA.importKey(private_key.encode('utf-8')))  
    return cipher_private.decrypt(text_encrypted, b'0').decode()

用于加密的enc.py

代码语言:python
复制
import base64  
from Crypto.Cipher import PKCS1_v1_5  
from Crypto.PublicKey import RSA  
  
# 您准备的RSA公钥 
public_key = '-----BEGIN PUBLIC KEY-----\nMII****QAB\n-----END PUBLIC KEY-----' 
 
 
def encrypt(text):  
    cipher_public = PKCS1_v1_5.new(RSA.importKey(public_key))  
    text_encrypted = cipher_public.encrypt(text.encode('utf-8')) # 加密(bytes)  
    return base64.b64encode(text_encrypted).decode()

实现监听

监听模块main.py

代码语言:python
复制
import pyperclip  
import time  
import upload_msg  
import uuid  
import enc  
  
  
clipboard_content = ""  
clipboard_list = []  
  
while True:  
    temp_clipboard = pyperclip.paste() # 获取剪切板内容  
    if temp_clipboard != clipboard_content: # 如果剪切板内容没有变化直接跳过  
        clipboard_content = temp_clipboard  
        clipboard_list.append(clipboard_content)  
        print(clipboard_content, upload_msg.commit_msg(enc.encrypt(clipboard_content), 'doone', uuid.uuid4()))  
    time.sleep(0.5) # 设置每次读取间隔

上传数据库

upload_msg.py

代码语言:python
复制
import pymysql as MySQLdb  
import uuid  
  
sql_url = '**.sql.tencentcdb.com' # 这里填入之前的主机
port = 2** # 这里填入之前的端口
user = 'root' # 这里以root用户为例
passwd = 'root的密码' # 这里填入您设置的root密码

  
def commit_msg(content, ip, uuid):  
    db = MySQLdb.connect(host=sql_url, user=user, passwd=passwd, charset='utf8', port=port)  
    cursor = db.cursor()  
    db.select_db('tdqslnb')  
    try:  
        cursor.execute(  
        """INSERT INTO `pasteboard` (`uuid`, `content`, `ip`) VALUES ('{0}', '{1}', '{2}');""".format(uuid, content,  
        ip))  
        db.commit()  
        db.close()  
        return True  
    except Exception as e:  
        print(e)  
        db.close()  
        return False

效果

当复制内容后,终端输出

前面显示的是复制的内容后面是提交数据库的状态

这时候我们就能在DMC里面看到我们之前提交的复制的内容了

将content的内容复制,并用dec.py的函数解密可以得到:

后续的数据库读取操作各位大佬可以随意开发了,本文仅提供剪切板数据库存储思路。

非常感谢大家能够看到这里!!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 数据库购买
  • 数据库控制台
    • 基本介绍
      • 配置账号
        • 创建数据库
          • 查看数据库
          • Python代码
            • 前置python库
              • rsa加解密
                • 实现监听
                  • 上传数据库
                    • 效果
                    相关产品与服务
                    TDSQL-C MySQL 版
                    TDSQL-C MySQL 版(TDSQL-C for MySQL)是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势,100%兼容 MySQL,为用户提供极致弹性、高性能、高可用、高可靠、安全的数据库服务。实现超百万 QPS 的高吞吐、PB 级海量分布式智能存储、Serverless 秒级伸缩,助力企业加速完成数字化转型。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档