分类 制作小工具 下的文章

有很多软件像CCProxy都是可以将本机设置带代理服务器,但就是没有一个比较好用的可以用来连接代理的软件,所以自己用Python写了个。

效果:

lm4myfti.png

代码:

import os
import winreg
import tkinter as tk
from tkinter import messagebox

# 默认代理服务器和端口
default_proxy_server = "202.38.247.229:7890"

# 初始代理服务器和端口为默认值
proxy_server = default_proxy_server

# 检查系统是否已开启代理
def check_proxy_enabled():
    try:
        key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Internet Settings")
        proxy_enabled, _ = winreg.QueryValueEx(key, "ProxyEnable")
        winreg.CloseKey(key)
        return proxy_enabled == 1
    except Exception as e:
        return False

# 设置代理服务器和端口
def set_proxy():
    global proxy_server, proxy_port
    proxy_server = server_entry.get() or default_proxy_server

    try:
        # 打开注册表键
        key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Internet Settings", 0, winreg.KEY_WRITE)

        # 设置代理服务器和端口
        winreg.SetValueEx(key, "ProxyServer", 0, winreg.REG_SZ, proxy_server)

        # 启用代理
        winreg.SetValueEx(key, "ProxyEnable", 0, winreg.REG_DWORD, 1)

        winreg.CloseKey(key)

        success_label.config(text="代理已设置", fg="green")
        messagebox.showinfo("成功", "代理已设置")
    except Exception as e:
        success_label.config(text="代理设置失败", fg="red")
        messagebox.showerror("错误", f"设置代理时出错: {str(e)}")

# 关闭代理
def disable_proxy():
    try:
        # 打开注册表键
        key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Internet Settings", 0, winreg.KEY_WRITE)

        # 禁用代理
        winreg.SetValueEx(key, "ProxyEnable", 0, winreg.REG_DWORD, 0)

        winreg.CloseKey(key)

        success_label.config(text="代理已禁用", fg="red")
        messagebox.showinfo("成功", "代理已禁用")
    except Exception as e:
        success_label.config(text="代理禁用失败", fg="yellow")
        messagebox.showerror("错误", f"禁用代理时出错: {str(e)}")

# 创建关闭窗口时的确认函数
def confirm_close():
    if check_proxy_enabled():
        result = messagebox.askquestion("确认退出", "退出软件将自动禁用代理。确定要退出吗?")
        if result == "yes":
            disable_proxy()
            window.quit()  # Exit the Tkinter mainloop and close the window
    else:
        window.quit()  # Exit the Tkinter mainloop and close the window


# 创建Tkinter窗口
window = tk.Tk()
window.title("全局代理设置")

# Calculate the screen width and height
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()

# Calculate the x and y coordinates for the centered window
x = (screen_width - window.winfo_reqwidth()) / 2
y = (screen_height - window.winfo_reqheight()) / 2

# Set the window's geometry to be centered
window.geometry(f"+{int(x)}+{int(y)}")

# 标签和输入框
server_label = tk.Label(window, text="代理服务器:")
server_label.pack()
server_entry = tk.Entry(window)
server_entry.pack()
# 预填充默认代理服务器
server_entry.insert(0, default_proxy_server)

# 设置代理按钮
set_button = tk.Button(window, text="设置代理", command=set_proxy)
set_button.pack()

# 禁用代理按钮
disable_button = tk.Button(window, text="禁用代理", command=disable_proxy)
disable_button.pack()

# 代理设置结果标识
success_label = tk.Label(window, text="", fg="black")
success_label.pack()

# 检查代理设置并更新标识
if check_proxy_enabled():
    success_label.config(text="代理已开启", fg="green")
else:
    success_label.config(text="代理已禁用", fg="red")

# Register the confirm_close function to be called when the window is closed
window.protocol("WM_DELETE_WINDOW", confirm_close)

# 运行Tkinter主循环
window.mainloop()

lftv0a78.png

功能描述

1、python在桌面上显示动态的文字,不要显示窗口边框。窗口背景和标签背景都是透明的,但标签内的文字是有颜色。使用tkinter库实现,并以class的形式书写,方便用户对内容进行扩展开发。
2、窗口默认出现在屏幕的中间位置。窗口中的标签需要包含两项内容。其中一项用于实时显示当前的日期和时间,精确到毫秒。另一项从txt文件中读取显示,若没有txt文件则显示“None”。
3、在未锁定状态下,鼠标可以拖动窗口。在锁定状态下,窗口无法通过鼠标的拖动而移动。在窗口中添加一个“锁定”按钮,当鼠标移动到窗口上方时,显示“锁定”按钮,鼠标移走后,隐藏“锁定”按钮。通过“锁定”按钮,窗口进入锁定状态。在锁定状态下,当鼠标移动到窗口上方时,显示一个“解除锁定”的按钮,鼠标移走后,隐藏该“解除锁定”按钮。通过点击“解除锁定”按钮,进入未锁定状态。锁定和未锁定状态是互相切换的。
4、给窗口添加一个鼠标右键的功能,在右键菜单中,可以点击“退出”,从而退出应用。
5、窗口中的内容居中显示。
6、添加右键“修改日期”子菜单,点击后,弹出开始日期选择框和结束日期选择框,选择完毕后,更新到self.start_date和self.end_date,并立即调用update_note_label函数。
7、添加 右键窗口显示“置顶”子菜单,点击后,可以使当前窗口一直保持在最前面。在置顶状态下,再右键窗口,改为显示“取消置顶”。
8、添加 右键窗口显示“改变颜色”子菜单,点击后,弹出颜色选择框,通过选择不同的颜色,可以改变窗口的背景颜色。
9、添加 右键窗口显示“修改note”子菜单,点击后,弹出内容输入框,输入框默认显示“小锋学长生活大爆炸”。点击确认后,输入框的内容更新到self.text_label。
10、启动时获取desktop_clock.txt文件,根据内容与当前版本是否一致,若不一致则弹窗提示有更新

下载

https://xfxuezhang.lanzouo.com/b09ubrasb
密码:c9o1

代码

import tkinter as tk
import datetime
import math
import locale
import os
from tkinter.colorchooser import askcolor
import webbrowser
import tkinter.messagebox as messagebox
import tkinter.ttk as ttk
import tkcalendar
import babel.numbers
import requests
import tkinter.simpledialog
 
 
 
# Set the locale to use UTF-8 encoding
locale.setlocale(locale.LC_ALL, 'en_US.utf8')
VERSION = '20230329'
 
class TransparentWindow(tk.Tk):
    def __init__(self, text_file=None):
        super().__init__()
        self.attributes('-alpha', 1) # 设置窗口透明度
        # self.attributes('-topmost', True) # 窗口置顶
        # self.attributes('-transparentcolor', '#000000')
        self.overrideredirect(True) # 去掉窗口边框
        self.locked = False # 初始化锁定状态
        self.mouse_x = 0
        self.mouse_y = 0
        self.config(bg='#000000', highlightthickness=0, bd=0)
        self.start_date = '2023/2/20'
        self.end_date = '2023/7/9'
        
        # 获取屏幕尺寸和窗口尺寸,使窗口居中
        screen_width = self.winfo_screenwidth()
        screen_height = self.winfo_screenheight()
        window_width = 400
        window_height = 100
        x = (screen_width - window_width) // 2
        y = (screen_height - window_height) // 2
        self.geometry('{}x{}+{}+{}'.format(window_width, window_height, x, y))
 
        # 添加日期时间标签
        self.datetime_label = tk.Label(self, text='', font=('Arial', 20), fg='#FFFFFF', bg='#000000')
        self.datetime_label.place(relx=0.5, y=20, anchor='center')
 
        # 提示标签
        self.note_label = tk.Label(self, text='123', font=('Arial', 14), fg='#FFFFFF', bg='#000000')
        self.note_label.place(relx=0.5, y=50, anchor='center')
 
        # 文本标签
        self.text_label = tk.Label(self, text='', font=('Arial', 14), fg='#FFFFFF', bg='#000000')
        self.text_label.place(relx=0.5, y=80, anchor='center')
 
        # 添加锁定按钮
        self.lock_button = tk.Button(self, text='锁定', font=('Arial', 10), command=self.toggle_lock)
        self.toggle_lock_button(True)
        self.toggle_lock_button(False)
 
        # 添加解锁按钮
        self.unlock_button = tk.Button(self, text='解除锁定', font=('Arial', 10), command=self.toggle_lock)
        self.toggle_unlock_button(True)
        self.toggle_unlock_button(False)
 
        # 定时更新日期时间标签
        self.update_datetime()
        # 定时更新text标签
        self.update_text_label()
        # 定时更新note标签
        self.update_note_label()
 
        # 绑定鼠标事件
        self.bind('<Button-1>', self.on_left_button_down)
        self.bind('<ButtonRelease-1>', self.on_left_button_up)
        self.bind('<B1-Motion>', self.on_mouse_drag)
        self.bind('<Enter>', self.on_mouse_enter)
        self.bind('<Leave>', self.on_mouse_leave)
 
        # 创建右键菜单
        self.menu = tk.Menu(self, tearoff=0)
        self.menu.add_command(label="退出", command=self.quit)
        # 添加“置顶”子菜单
        self.menu.add_command(label="置顶", command=self.topmost_on)
        # 添加“改变颜色”子菜单
        self.menu.add_command(label="选择颜色", command=self.choose_color)
        # 添加“修改日期”子菜单
        self.menu.add_command(label="修改日期", command=self.modify_date)
        # 添加“修改note”子菜单
        self.menu.add_command(label='修改note', command=self.edit_note)
        # 添加“关于”子菜单
        self.menu.add_command(label="关于", command=self.about_me)
        self.bind("<Button-3>", self.show_menu)
 
        self.check_version()
    
    
    def check_version(self):
        url = 'http://xfxuezhang.cn/web/share/version/desktop_clock.txt'
        try:
            resp = requests.get(url, timeout=2).text.strip()
            if resp != VERSION:
                if messagebox.askyesno('更新提示', '发现新版本,是否前往蓝奏云下载?密码:c9o1'):
                    webbrowser.open('https://xfxuezhang.lanzouo.com/b09ubrasb')
        except:
            pass
 
    def about_me(self):
        # webbrowser.open_new_tab('http://www.xfxuezhang.cn')
        messagebox.showinfo("关于", "暂时没什么内容")
 
    # 选择日期
    def modify_date(self):
        top = tk.Toplevel(self)
        # 获取屏幕尺寸和窗口尺寸,使窗口居中
        screen_width = top.winfo_screenwidth()
        screen_height = top.winfo_screenheight()
        window_width = 175
        window_height = 100
        x = (screen_width - window_width) // 2
        y = (screen_height - window_height) // 2
        top.geometry('{}x{}+{}+{}'.format(window_width, window_height, x, y))
        top.title('选择日期')
        tk.Label(top, text='开始日期:').grid(row=0, column=0)
        start_date = tkcalendar.DateEntry(top, width=12, background='darkblue', foreground='white', date_pattern='yyyy/mm/dd', date=self.start_date, justify='center')
        start_date.grid(row=0, column=1)
        tk.Label(top, text='结束日期:').grid(row=1, column=0)
        end_date = tkcalendar.DateEntry(top, width=12, background='darkblue', foreground='white', date_pattern='yyyy/mm/dd', date=self.end_date, justify='center')
        end_date.grid(row=1, column=1)
    
        def update_dates():
            self.start_date = start_date.get_date().strftime('%Y/%m/%d')
            self.end_date = end_date.get_date().strftime('%Y/%m/%d')
            self.update_note_label()
            top.destroy()
        
        button = tk.Button(top, text="确定", command=update_dates)
        button.grid(row=2, column=0, columnspan=2, pady=10)
 
    # 窗口置顶
    def topmost_on(self):
        if self.attributes('-topmost'):
            self.attributes('-topmost', False)
            self.menu.entryconfig(1, label='置顶')
        else:
            self.attributes('-topmost', True)
            self.menu.entryconfig(1, label='取消置顶')
 
    # 改变背景色
    def choose_color(self):
        color = askcolor()[1]
        if color:
            self.config(bg=color)
            self.datetime_label.config(bg=color)
            self.note_label.config(bg=color)
            self.text_label.config(bg=color)
 
    # 锁定
    def toggle_lock_button(self, show=True):
        if show:
            self.lock_button.place(relx=1, rely=0.85, anchor='e')
        else:
            self.lock_button.place_forget()
    
    # 解除锁定
    def toggle_unlock_button(self, show=True):
        if show:
            self.unlock_button.place(relx=1, rely=0.85, anchor='e')
        else:
            self.unlock_button.place_forget()
    # 锁定和解除锁定的切换
    def toggle_lock(self):
        if self.locked:
            self.locked = False
            self.toggle_lock_button(True)
            self.toggle_unlock_button(False)
        else:
            self.locked = True
            self.toggle_lock_button(False)
            self.toggle_unlock_button(True)
 
    # 显示右键菜单
    def show_menu(self, event):
        self.menu.post(event.x_root, event.y_root)
 
    # 更新日期时间
    def update_datetime(self):
        now = datetime.datetime.now().strftime('%Y-%m-%d     \u270d     %H:%M:%S.%f')[:-4]
        msg = f'{now}'
        self.datetime_label.configure(text=msg)
        self.after(10, self.update_datetime)
 
    # 更新txt文档内容
    def update_text_label(self):
        now = ''
        if os.path.exists('config.txt'):
            now = open('config.txt', 'r', encoding='utf8').read().strip()
        now = now or '小锋学长生活大爆炸'
        self.text_label.configure(text=now)
        # self.after(1000, self.update_text_label)
 
    def edit_note(self):
        """打开文本输入框并更新内容"""
        # 创建文本输入框并显示默认内容
        note = tkinter.simpledialog.askstring('修改note', '请输入新的note', initialvalue=self.text_label['text'], parent=self)
        # 如果用户点击确认,则更新文本标签的内容
        if note:
            self.text_label['text'] = note
 
    # 更新周次
    def update_note_label(self):
        # 指定日期,格式为 年-月-日
        start_y, start_m, start_d = list(map(int, self.start_date.strip().split('/')))
        end_y, end_m, end_d = list(map(int, self.end_date.strip().split('/')))
        specified_start_date = datetime.date(start_y, start_m, start_d)
        specified_end_date = datetime.date(end_y, end_m, end_d)
        today = datetime.date.today()
        # 计算距离指定日期过了多少周
        start_delta = today - specified_start_date
        num_of_weeks = math.ceil(start_delta.days / 7)
        # 计算距离指定日期剩余多少周
        end_delta = specified_end_date - today
        remain_weeks = math.ceil(end_delta.days / 7)
 
        msg = f'当前第{num_of_weeks}周, 剩余{remain_weeks}周({end_delta.days}天)'
        self.note_label.configure(text=msg)
        self.after(1000*60, self.update_note_label)
 
 
 
    # 实现窗口拖动
    def on_left_button_down(self, event):
        self.mouse_x = event.x
        self.mouse_y = event.y
 
    # 实现窗口拖动
    def on_left_button_up(self, event):
        self.mouse_x = 0
        self.mouse_y = 0
 
    # 实现窗口拖动
    def on_mouse_drag(self, event):
        if not self.locked:
            x = self.winfo_x() + event.x - self.mouse_x
            y = self.winfo_y() + event.y - self.mouse_y
            self.geometry('+{}+{}'.format(x, y))
 
    def on_mouse_leave(self, event):
        self.lock_button.place_forget()
        self.unlock_button.place_forget()
 
    def on_mouse_enter(self, event):
        if not self.locked:
            self.toggle_lock_button(True)
            self.toggle_unlock_button(False)
        else:
            self.toggle_lock_button(False)
            self.toggle_unlock_button(True)
 
 
if __name__ == '__main__':
    app = TransparentWindow(text_file='text.txt')
    app.mainloop()
 


如果 不能用 ,或者需要 填Key ,可以看这篇:http://xfxuezhang.cn/admin/write-post.php?cid=707

ldqwddla.png

ldqwaflf.png

下载地址
{hide}
https://0436.lanzouy.com/b00w63ngb
密码:52pj

原贴:https://www.52pojie.cn/thread-1697450-1-1.html
{/hide}

注意事项:

  • 微软试用接口1分钟内不可以超过5次提交,文字内容多的建议使用Edge接口或使用微软正版接口,其他接口并没有过多测试
  • 因为软件代码量过大,1.6版本的字幕功能暂时被单独设计成一个工具。基本功能:短视频分享地址一键提取文案、本地音频视频文案字幕提取、字幕编辑、保存字幕、敏感字替换、翻译、截图识别替换字幕内容(懒人专用)、局部试听(方便查看是否有错别字)、外加了一个伪原创功能,有需要的朋友可以下载试试

ld11ll4e.png

源码与exe:https://github.com/1061700625/QQZone_AutoDownload_Album

视频教程:https://www.bilibili.com/video/BV1h8411A7GF/


貌似腾讯的登陆加密做的很复杂。所以用selenium模拟登陆的,这样就可以绕过复杂的登陆验证了,等登陆进去后,就可以随便浪啦,解析网页啥的跟普通差不多。

功能包括:

  • 下载自己空间的相册
  • 下载他人空间的公开相册
  • 更改为通用方法,导航栏无需更改为默认设置
  • 自动将webp格式转为jpg

文件说明:

  1. main.py+gui.py是界面版的。
  2. 之前的console版放到了old_file里,可以运行old_file/QQ空间相册下载-新.py

其他说明

  1. 如果是下载自己QQ号的相册,加密的相册就也可以下。因为自己进自己的相册不用密码的。
  2. 一般回车程序没了是出错了,可以在桌面按住shift键,然后右击--选择“在此处打开命令窗口”,然后松开shift,把程序拖入窗口后回车,就运行了,按照步骤重新走一遍,这样就算出错了,也会显示错误信息。然后把错误信息截图我看看。
  3. 使用前,请先解压Chrome.zip