前言
不是每个项目都需要写 README 和 CHANGELOG。有时候就是遇到一个问题,打开编辑器,半小时撸一个脚本解决掉。但这些"随手写的"小工具里,也有一些有意思的设计。
一、抖音视频解析
核心思路:捕获分享链接 → 提取视频 ID → 请求无水印视频地址。
from flask import Flask, request
app = Flask(__name__)
@app.route('/parse')
def parse():
share_url = request.args.get('url')
# 301 重定向获取真实 URL → 提取 video_id
real_url = requests.get(share_url, allow_redirects=False).headers['Location']
video_id = re.search(r'/video/(\d+)', real_url).group(1)
# 调用解析 API 获取无水印地址
# ...
return render_template('player.html', video_url=no_watermark_url)Flask 渲染一个播放页面,嵌入 video 标签直接播放。整个流程不到 100 行。
二、HTTP 中间人代理
需求:拦截某个 API 的响应,把里面的 msg 字段改成自定义内容。
import socket
def proxy_handler(client_socket, target_host, target_port):
# 转发客户端请求到目标服务器
server_socket = socket.socket()
server_socket.connect((target_host, target_port))
server_socket.send(client_request)
# 接收响应
response = server_socket.recv(4096)
# 修改 JSON 响应中的 msg 字段
body_start = response.find(b'\r\n\r\n') + 4
headers = response[:body_start]
body = json.loads(response[body_start:])
body['msg'] = '自定义消息'
modified = headers + json.dumps(body).encode()
client_socket.send(modified)纯 socket 实现,不依赖任何 HTTP 库。适合需要精细控制每个字节的场景。
三、系统资源监控仪表盘
用 Tkinter + psutil 写了个桌面小组件,圆环仪表盘显示 CPU / 内存 / 磁盘 / 网络:
class CircularGauge(tk.Canvas):
def __init__(self, parent, color='#00ffff', title='CPU'):
super().__init__(parent, width=200, height=200, bg='#1e1e1e')
self.color = color
self.title = title
# 绘制背景圆环和前景弧线
# ...
def set_value(self, value):
# 用圆弧角度表示数值
angle = (value / self.max_value) * 360
self.itemconfig(self.arc, extent=angle)深色背景 + 霓虹配色,有点赛博朋克的感觉。
四、随机数 API 服务
有时候需要一个简单的随机数接口,不想为这个单独部署服务。
from http.server import HTTPServer, BaseHTTPRequestHandler
class Random7Handler(BaseHTTPRequestHandler):
def do_GET(self):
num = f"{random.randint(0, 9999999):07d}"
self._send_json({"number": num})
HTTPServer(('0.0.0.0', 8080), Random7Handler).serve_forever()30 行代码,自带 CORS 头,部署到 VPS 上就能用。
总结
小工具的价值不在于代码量,而在于:
- 解决真实问题:不是为了写而写
- 低心智负担:不需要考虑扩展性、测试覆盖率
- 快速验证想法:半小时能跑起来比"完美设计"重要得多
如果你也有随手写工具的习惯,不妨整理一下——你会发现这些碎片里藏着很多可以深挖的 idea。