-
使用雨云对象储存,备份宝塔数据
宝塔面板相信是给位朋友经常使用的面板,可以极大简化建站的流程,小白也可以轻松上手。 为了数据的安全,定期对于数据备份很有必要,宝塔面板也提供了一系列的备份插件,但是对于非大厂的对象储存并不友好,因此我们需要对宝塔的插件进行修改。 1.下载s3插件 你可以在 软件商店 — 免费应用 中,找到亚马逊s3云存储,请下载和安装这个插件 2.找到 aws_s3.py 文件 s3插件默认是对接到亚马逊的s3,因此需要对插件进行修改,添加雨云的 Endpoint 我们需要需要修改 “/www/server/panel/plugin/aws_s3/s3lib/client/aws_s3.py” 这个文件 3.修改 aws_s3.py 文件 请使用 Ctrl + F ,搜索 build_auth 找到如下图的位置,并在箭头所示位置添加代码 endpoint_url="https://cn-sy1.rains3.com", xxxx 应当替换为在雨云对象存储中所显示的 API 端点 (目前只有一个区,可以直接填写 endpoint_url=xxxx 4) 修改完成后,请不要忘记保存!! 4.在插件中填写 Access Key 和 Secret Key 5.在计划任务中配置备份 TIPS: 为了确保数据的安全,最好采取异地备份,如雨云当前提供的对象储存部署在十堰地区,十堰地区的用户最好还是不要往这个区备份了,等待后续区域开放之后再使用。... -
检查是否还存在统计鸟的JS代码
主域名国内经常打不开,有跳灰产,建议检查一下所有的业务网站,是否还存在统计鸟的JS代码。 尽快清除统计鸟相关的所有代码。 暂停使用统计鸟统计。... -
Firefox Addon 踩坑指南
抄录一下该推文。 background.service_worker is currently disabled 这是因为在manifestV3中,Firefox与Chrome针对后台程序的处理有差异导致的。其实Firefox也是能使用后台程序的,但是不能直接写成service_worker。直接用service_worker,Firefox将会报错。 正确的写法应该是使用”scripts”代替”service_worker”,Firefox的后台程序变成了background_script。 The extension ID is required in Manifest Version 3 and above 上传产物压缩包到AMO的时候,可能会遇到这个问题,这个是因为Firefox在mainfestV3及以上版本中要求增加一个插件ID号和最低版本限制导致的,需要在manifest.json中增加该字段才可以。 最低版本号可以参考你所用的浏览器API限制来决定,id一般使用<插件名>+@+<个人域名>就可以了(只要保证ID唯一即可)。... -
视频转GIF小工具
Python写的,一个很简单的小工具,闲来无事做了一个玩玩。 代码部分: import tkinter as tk from tkinter import filedialog, messagebox, ttk from moviepy.editor import VideoFileClip import threading import os def video_to_gif(input_video_path, output_gif_path, start_time=None, end_time=None, progress_var=None): """ 将视频转换为GIF。 参数: - input_video_path: 输入视频文件路径 - output_gif_path: 输出GIF文件路径 - start_time: GIF的开始时间(以秒为单位),默认为视频开头 - end_time: GIF的结束时间(以秒为单位),默认为视频结尾 - progress_var: 用于显示进度的 tk.IntVar 对象 """ try: # 加载视频文件 video_clip = VideoFileClip(input_video_path) # 裁剪视频到指定时间段 if start_time is not None and end_time is not None: video_clip = video_clip.subclip(start_time, end_time) # 将视频转换为GIF并保存 video_clip.write_gif(output_gif_path) # 更新进度为100% if progress_var: progress_var.set(100) messagebox.showinfo("完成", f"GIF已成功保存为 {output_gif_path}") except Exception as e: messagebox.showerror("错误", f"转换过程中出现错误: {e}") def convert_to_gif(files): start = start_time.get() end = end_time.get() try: start = float(start) if start else None end = float(end) if end else None except ValueError: messagebox.showerror("错误", "请输入有效的起始和结束时间。") return # 为每个文件创建线程 for file_path in files: output_path = os.path.splitext(file_path)[0] + ".gif" # 创建一个进度条 progress_var = tk.IntVar() progress_bar = ttk.Progressbar(root, orient="horizontal", length=300, mode="determinate", variable=progress_var) progress_bar.pack(pady=5) progress_bar_label = tk.Label(root, text=f"转换中: {os.path.basename(file_path)}") progress_bar_label.pack() # 启动转换线程 conversion_thread = threading.Thread(target=video_to_gif, args=(file_path, output_path, start, end, progress_var)) conversion_thread.start() def select_files(): file_paths = filedialog.askopenfilenames(filetypes=[("Video files", "*.mp4;*.avi;*.mov;*.mkv")]) if file_paths: # 将选中的文件路径显示在上方框内 file_list.set('\n'.join(file_paths)) convert_button.config(state=tk.NORMAL) # 创建主窗口 root = tk.Tk() root.title("批量视频转GIF工具") root.geometry("600x400") # 视频路径显示 file_list = tk.StringVar() video_label = tk.Label(root, textvariable=file_list, width=60, height=4, relief="sunken", anchor="w", justify="left") video_label.pack(pady=10) # 文件选择按钮 select_button = tk.Button(root, text="选择文件", command=select_files) select_button.pack(pady=10) #…... -
GoEdge CDN v1.3.9 纯净开心版一键部署脚本 2分钟极速搭建你的专属CDN系统
本脚本安装的是 v1.3.9 安全版本,感谢DV老板提供的老包存档。安装完毕后不建议更新,防止新版本投毒。 管理平台(主控端)一键部署脚本 国际源(Cloudflare) sudo curl -s https://static-file-global.353355.xyz/goedge/edge-admin-install.sh | bash 国内源(阿里云/腾讯云CDN) sudo curl -s https://static-file-global.353355.xyz/goedge/edge-admin-install-cn.sh | bash X86/ARM架构机器通用 *国内源不保证可用性,可能随时失效,请勿依赖 执行完毕后,使用浏览器访问IP地址:7788即可进入管理平台,填写数据库信息并设置管理密码即可完成安装。 MySQL数据库一键安装脚本 sudo curl -s https://static-file-global.353355.xyz/goedge/mysql/install-mysql.sh | bash 此MySQL一键脚本仅限X86_64机器使用,Arm机器或自动安装失败请手动安装。安装成功后会输出root账密信息及安装位置。 开心版激活 浏览器访问管理平台,依次点击「系统设置」,「商业版本」,「激活」,直接粘贴下方提供的旗舰版注册码即可完成离线激活,终身有效: F4BuVYEKSDWV+I13ISd5NUyBcWOlH0af4/ow9obzYBS3XvYC9IsK86k5UDyyBv9vqJWN2/FQTDbPyuAO0zxYlkLDC0c8rrShs+7PAkqM0O8wBIGknzForgidDZahky5Lo/ZWaPZ1dVFUxmV29ykb0I0b4tv7Q3OtnTylOuzf//MYrlvyw6VJQMGnsttmeHzsNL/r0yDONOEXZoGoLZsuBKnkfXt+qt6bZF+kM1ncbh+sY42BrPTWQ12sXqJS3qHlzU0FFl9lTNzLGYYhq5vi/4sJuPVE50/uLCtslTJdb9zOGR915hnM+jHYsR+jUk0QxOqtreaHpsvNuLkexXbkmA== 边缘节点安装 浏览器访问管理平台,依次点击「边缘节点」,「创建节点」,按要求填入节点名称、节点公网IP地址、SSH端口号,添加SSH登录信息,点击「远程安装」,即可一键完成边缘节点安装部署。 由于上面的一键脚本已经替换过/deploy目录下的边缘节点包,故此处一键安装的边缘节点程序版本都是安全版本,无需担忧。 安装成功后,建议前往已安装的节点修改hosts屏蔽与官方域名的通信! echo "127.0.0.1 goedge.cloud" | sudo tee -a /etc/hosts > /dev/null echo "127.0.0.1 goedge.cn" | sudo tee -a /etc/hosts > /dev/null echo "127.0.0.1 dl.goedge.cloud" | sudo tee -a /etc/hosts > /dev/null echo "127.0.0.1 dl.goedge.cn" | sudo tee -a /etc/hosts > /dev/null echo "127.0.0.1 global.dl.goedge.cloud" | sudo tee -a /etc/hosts > /dev/null echo "127.0.0.1 global.dl.goedge.cn" | sudo tee -a /etc/hosts > /dev/null cat /etc/hosts 其它非必要组件安装 商业版专享,不安装不影响主要功能的正常使用请参考此文档进行手动部署:https://www.nodeseek.com/post-139661-1 仅做记录。... -
视频转GIF小工具
使用Python,支持常见的视频格式转换。 开箱即用的软件放在文末了,有能力者请自行改进。 如果需要使用该工具,务必安装FFmpeg框架支持,可以从 FFmpeg 官网 下载适用于操作系统的版本。 代码: import tkinter as tk from tkinter import filedialog, messagebox from moviepy.editor import VideoFileClip import threading import os def video_to_gif(input_video_path, output_gif_path, start_time=None, end_time=None): """ 将视频转换为GIF。 参数: - input_video_path: 输入视频文件路径 - output_gif_path: 输出GIF文件路径 - start_time: GIF的开始时间(以秒为单位),默认为视频开头 - end_time: GIF的结束时间(以秒为单位),默认为视频结尾 """ try: # 加载视频文件 video_clip = VideoFileClip(input_video_path) # 裁剪视频到指定时间段 if start_time is not None and end_time is not None: video_clip = video_clip.subclip(start_time, end_time) # 更新状态为“处理中” status_var.set("GIF转换中,请稍候...") # 将视频转换为GIF并保存 if output_gif_path: # 确保路径有效 video_clip.write_gif(output_gif_path) # 更新状态为“完成” status_var.set(f"GIF已成功保存为 {output_gif_path}") messagebox.showinfo("完成", f"GIF已成功保存为 {output_gif_path}") else: status_var.set("转换取消") messagebox.showwarning("取消", "转换已取消,无效的保存路径。") except Exception as e: status_var.set("转换失败") messagebox.showerror("错误", f"出现错误: {e}") finally: # 重新启用转换按钮 convert_button.config(state=tk.NORMAL) def convert_to_gif(): if not video_path.get(): messagebox.showerror("错误", "请先选择一个视频文件。") return start = start_time.get() end = end_time.get() try: start = float(start) if start else None end = float(end) if end else None except ValueError: messagebox.showerror("错误", "请输入有效的起始和结束时间。") return output_path = filedialog.asksaveasfilename(defaultextension=".gif", filetypes=[("GIF files", "*.gif")]) # 如果用户取消保存文件操作 if not output_path: status_var.set("转换取消") return # 禁用转换按钮 convert_button.config(state=tk.DISABLED) def do_conversion(): video_to_gif(video_path.get(), output_path, start_time=start, end_time=end) # 启动转换线程 conversion_thread = threading.Thread(target=do_conversion) conversion_thread.start() def select_file(): file_path = filedialog.askopenfilename(filetypes=[("Video files", "*.mp4;*.avi;*.mov;*.mkv")]) if file_path: video_path.set(file_path) video_label.config(text="文件已加载:" + os.path.basename(file_path)) # 创建主窗口 root = tk.Tk() root.title("视频转GIF工具") root.geometry("500x350") # 视频路径显示 video_path = tk.StringVar() video_label = tk.Label(root, text="点击下方按钮选择视频文件:", width=60, height=4, relief="sunken") video_label.pack(pady=10) # 文件选择按钮 select_button = tk.Button(root,…... -
拿手搓了一个AI对话,虽然…emm
手搓的屎山,代码就不公开了,我参考支持openaiSDK的讯飞和deepseek写的。 支持上下文,但....经常出错,可以娱乐。 如何使用请关注公众号,我会在空闲的时间更新一篇关于这个的内容。 我暂且叫Ta:未开智的小助理……... -
使用Python写了一个bing壁纸下载
这是第一个版本,算是1.0版本,实现了选择日期,然后自动批量下载4K的壁纸,图片全部来源必应。 这里我会将代码全部公开,然后包括软件的下载等,后续会更新,也会更新新版本的代码,你可以根据代码自行打包exe软件。 开箱即用的版本请看文末下载区域。 代码:(接口来源网络) import requests import os from datetime import datetime, timedelta import tkinter as tk from tkinter import messagebox from tkcalendar import DateEntry from requests.packages.urllib3.exceptions import InsecureRequestWarning import threading # 忽略不安全请求警告 requests.packages.urllib3.disable_warnings(InsecureRequestWarning) def download_bing_wallpapers(start_date, end_date): base_url = "https://bing.ee123.net/img/" size = "UHD" output_dir = "bing_wallpapers" # 创建保存壁纸的文件夹 if not os.path.exists(output_dir): os.makedirs(output_dir) session = requests.Session() session.verify = False current_date = start_date while current_date <= end_date: date_str = current_date.strftime('%Y%m%d') params = { 'date': date_str, 'size': size, 'type': 'json' } response = session.get(base_url, params=params) # 检查请求是否成功 if response.status_code == 200: try: data = response.json() image_url = data.get('imgurl') # 使用 'imgurl' 获取图片URL if image_url: image_name = f"{date_str}.jpg" image_path = os.path.join(output_dir, image_name) # 下载图片 img_response = session.get(image_url) if img_response.status_code == 200: with open(image_path, 'wb') as img_file: img_file.write(img_response.content) print(f"Downloaded: {image_name}") else: print(f"Failed to download image from {image_url}") else: print(f"No 'imgurl' found in the response for {date_str}") except ValueError: print(f"Failed to decode JSON response for {date_str}") else: print(f"Failed to retrieve data for {date_str}, status code: {response.status_code}") current_date += timedelta(days=1) messagebox.showinfo("完成", "壁纸下载完成!") def start_download(): start_date = start_date_entry.get_date() end_date = end_date_entry.get_date() if start_date > end_date: messagebox.showerror("错误", "开始日期不能晚于结束日期") return # 使用线程来运行下载任务,避免阻塞主线程 download_thread = threading.Thread(target=download_bing_wallpapers, args=(start_date, end_date)) download_thread.start() # 创建主窗口 root = tk.Tk() root.title("Bing 壁纸下载器") # 日期选择框 tk.Label(root, text="选择开始日期:").grid(row=0, column=0,…... -
用Cloudflare CDN服务,上传超过100MB文件失败
登入你的Cloudflare帐号,导览至Page Rules页面建立规则 新增yourdomain.com/* 設定Cache Level為Bypass,然後保存 切换至Cache Rules页面建立规则 依图片示例新增yourdomain.com/*设定Cache Status为Bypass cache,然后保存。... -
火车头采集器采集获取文章链接URL地址
1、在采集字段中添加链接字段 2、数据获取方式设置“从源码中获取数据” 3、数据来源设置:“从默认页》网页地址中” 4、提取方式:设置“正则提取”,正则表达式: ^(?<content>[\s\S]*?)$...








