import os
import subprocess
from Quartz import (
NSPasteboard,
NSPasteboardTypePNG,
NSPasteboardTypeTIFF,
NSPasteboardTypeString,
)
# 获取剪贴板中的数据
pasteboard = NSPasteboard.generalPasteboard()
image_data = None
text_data = None
if pasteboard.availableTypeFromArray_([NSPasteboardTypePNG]):
image_data = pasteboard.dataForType_(NSPasteboardTypePNG)
elif pasteboard.availableTypeFromArray_([NSPasteboardTypeTIFF]):
image_data = pasteboard.dataForType_(NSPasteboardTypeTIFF)
# 如果剪贴板中没有图像数据,尝试获取文本数据
if not image_data:
text_data = pasteboard.stringForType_(NSPasteboardTypeString)
if image_data:
# 指定保存路径
save_directory = "/Users/shaun/Documents/clipboard/"
# 列出目标文件夹中的所有文件
existing_files = os.listdir(save_directory)
# 查找已存在文件名中的最大序号
max_number = 0
for file_name in existing_files:
if file_name.endswith(".png"):
try:
number = int(file_name.split(".")[0])
max_number = max(max_number, number)
except ValueError:
pass
# 下一个文件名序号
next_number = max_number + 1
# 构建新文件名
file_name = f"{next_number}.png"
save_path = os.path.join(save_directory, file_name)
# 保存图像数据到文件
with open(save_path, "wb") as f:
f.write(image_data)
# 通知用户图像已保存
print(f"Image saved as {file_name}")
# 打开资源目录
subprocess.Popen(["open", save_directory])
elif text_data:
# 指定保存路径
save_directory = "/Users/shaun/Documents/clipboard/"
# 列出目标文件夹中的所有文件
existing_files = os.listdir(save_directory)
# 查找已存在文件名中的最大序号
max_number = 0
for file_name in existing_files:
if file_name.endswith(".txt"):
try:
number = int(file_name.split(".")[0])
max_number = max(max_number, number)
except ValueError:
pass
# 下一个文件名序号
next_number = max_number + 1
# 构建新文件名
file_name = f"{next_number}.txt"
save_path = os.path.join(save_directory, file_name)
# 保存文本数据到文件
with open(save_path, "w") as f:
f.write(text_data)
# 通知用户文本文件已保存
# print(f"Text file saved as {file_name}")
# 打开资源目录
subprocess.Popen(["open", save_directory])
# else:
# # 剪切板中既没有图像数据也没有文本数据时,通知用户
# print("No image or text found on the clipboard")