最近开始使用chatgpt生成代码来编写小工具,大部分时候还算靠谱,就是每次从网页上粘贴内容到编辑器中比较麻烦,尤其是chatgpt洋洋洒洒,给了若干个程序代码,一个个的粘贴真是要了老命了。
试了试cursor,发现也只是单个文件的生成,没有种一劳永逸的生成所有文件的功能。还是不够智能。
想着写个插件,将对话里提到的文件挨个保存到本地,结果发现解析页面文件比较复杂,放弃。
想着修改网页文件,将复制代码修改为保存文件,研究了一阵发现有点复杂,js代码都做过混淆加密,比较难搞,放弃。
还是回归老本行,写python脚本来实现吧。
直接让chatgpt生成一段代码,监视剪贴板,这样,当我点击复制代码之后,按下快捷键alt+s,就能保存代码了。整个过程还算顺利,chatgpt第一次生成的代码理解错意思了,导致退出的时候勾选了不需要再次确定,程序就启动不起来了,启动就直接退出,让chatgpt修改了一稿,直接通过。
看了一下时间,整改过程用时1个小时左右,加上调试脚本的时间,还算快!~~
下面贴出来python3的源码,有需要的可以自取,我也编译成可执行的程序,放到百度云盘和阿里云盘上,可以自取。
百度云:
https://pan.baidu.com/s/1-s-UwxbGP0nCshOzNMoQdA?pwd=wrp6 提取码: wrp6
阿里云:
提取码: 89xf
源代码:
import tkinter as tk
import pyperclip
from tkinter import filedialog
import keyboard
import os
# 创建保存剪贴板内容的函数
def save_clipboard():
# 获取剪贴板内容
content = pyperclip.paste()
# 判断剪贴板是否有内容
if content:
# 弹出保存对话框,获取保存路径
file_path = filedialog.asksaveasfilename(defaultextension='.txt')
# 如果有选择保存路径则保存文件
if file_path:
with open(file_path, 'w', encoding='utf-8') as f:
f.write(content)
print('文件已保存:', file_path)
# 创建监听热键的函数
def hotkey_listener(quit_confirm_flag):
# 监听快捷键 alt+s,调用保存剪贴板内容的函数
keyboard.add_hotkey('alt+s', lambda: save_clipboard())
# 监听快捷键 alt+q,弹出提示框
keyboard.add_hotkey('alt+q', lambda: quit_confirm(quit_confirm_flag))
# 创建退出确认弹出框的函数
def quit_confirm(quit_confirm_flag):
# 如果 quit_confirm_flag 为 True,则不弹出提示框直接退出
if quit_confirm_flag:
# 取消监听热键
keyboard.unhook_all_hotkeys()
# 取消tkinter的事件循环
root.quit()
# 退出程序
os._exit(0)
# 创建提示框
confirmation = tk.Toplevel()
confirmation.title('确定退出?')
# 创建提示信息
label = tk.Label(confirmation, text='是否退出程序?')
label.pack(side='top', padx=20, pady=20)
# 创建复选框
var = tk.IntVar()
check_box = tk.Checkbutton(confirmation, text='下次不再提醒,直接退出', variable=var)
check_box.pack(side='top', padx=20, pady=20)
# 创建确认和取消按钮
button_confirm = tk.Button(confirmation, text='确认', command=lambda: confirmation_action(var))
button_confirm.pack(side='left', padx=20, pady=20)
button_cancel = tk.Button(confirmation, text='取消', command=confirmation.destroy)
button_cancel.pack(side='right', padx=20, pady=20)
# 创建退出确认弹出框的动作函数
def confirmation_action(var):
if var.get() == 1:
# 如果勾选了复选框,则创建一个名为'config'的文件,保存勾选状态
with open('config', 'w', encoding='utf-8') as f:
f.write('1')
# 取消监听热键
keyboard.unhook_all_hotkeys()
# 取消tkinter的事件循环
root.quit()
# 退出程序
os._exit(0)
if __name__ == '__main__':
# 判断是否存在'config'文件,如果存在且内容为'1',则弹窗 flag 设置为 False
quit_confirm_flag = False
if os.path.exists('config'):
with open('config', 'r', encoding='utf-8') as f:
data = f.read()
if data == '1':
quit_confirm_flag = True
# 创建窗口
root = tk.Tk()
root.title('剪贴板保存工具')
root.geometry('600x200')
# 创建文本提示信息
label = tk.Label(root, text='按Alt+S键保存剪贴板内容\n按Alt+Q键或关闭窗口程序退出', font=('微软雅黑', 24))
label.pack(expand=True)
# 监听热键
hotkey_listener(quit_confirm_flag)
# 进入消息循环
root.mainloop()
chatgpt对话过程截图