用三段 Python 脚本搞定接单、记工时、开票——自由开发者的真实提效流水线
🧩 第一段:自动给 Trello 卡片加任务(告别手打评论)
你不用登录 Trello 点来点去。只要告诉脚本“这张卡该干啥”,它就自动在卡片底下留一条评论,像这样:
“Implement feature X”
import requests
# Trello API 凭证(去 https://trello.com/app-key 申请,填在这里)
api_key = "your_api_key" # ← 替换成你的 Key
api_token = "your_api_token" # ← 替换成你的 Token
board_id = "your_board_id" # ← 你的项目看板 ID
list_id = "your_list_id" # ← 你的待办列表 ID(比如“进行中”)
# 把任务文字自动发到某张卡片下(就像你手动评论一样)
def assign_task(card_id, task_name):
url = f"https://api.trello.com/1/cards/{card_id}/actions/comments"
headers = {
"Authorization": f"Bearer {api_token}", # 用 Token 验证身份
"Content-Type": "application/json"
}
data = {
"text": task_name # 要写的任务内容
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print(f"✅ 任务 '{task_name}' 已成功写入卡片 {card_id}")
else:
print(f"❌ 写入失败:{response.text}") # 打印错误原因,方便调试
# ✅ 实际怎么用?填上你的卡片 ID 和任务名,运行就行:
card_id = "your_card_id" # ← 比如 'abcd1234efgh5678'
task_name = "Implement feature X"
assign_task(card_id, task_name)
💡 小技巧:把它存成 assign.py,每天早上双击运行,或用系统定时任务(Windows 任务计划程序 / macOS cron)自动执行。
⏱️ 第二段:自动记工时(不用 Excel 手动填)
再也不用翻聊天记录找“几点开始改 bug”。这个脚本把你每次干活的起止时间,自动存进一个叫 work_hours.log 的表格文件里,格式清爽,打开就能看:
| project_name | start_time | end_time | work_hours |
|---|---|---|---|
| Client X Project | 2023-03-01 09:00 | 2023-03-01 17:00 | 8:00:00 |
import datetime
import csv
# 把一次工作记录存进 CSV 文件(会自动创建表头)
def log_work_hours(project_name, start_time, end_time):
work_hours = end_time - start_time # 算出花了多久(精确到秒)
with open("work_hours.log", "a", newline="") as csvfile: # 追加模式,不覆盖旧记录
fieldnames = ["project_name", "start_time", "end_time", "work_hours"]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
if csvfile.tell() == 0: # 如果文件是空的,先写表头
writer.writeheader()
writer.writerow({
"project_name": project_name,
"start_time": start_time.strftime("%Y-%m-%d %H:%M"), # 格式化为易读时间
"end_time": end_time.strftime("%Y-%m-%d %H:%M"),
"work_hours": str(work_hours) # 直接存字符串,避免类型问题
})
# ✅ 实际怎么用?填上项目名和起止时间(秒级精度可选),运行就存好:
project_name = "Client X Project"
start_time = datetime.datetime(2023, 3, 1, 9, 0) # 3月1日 上午9点
end_time = datetime.datetime(2023, 3, 1, 17, 0) # 3月1日 下午5点
log_work_hours(project_name, start_time, end_time)
📌 提示:你可以把 start_time = datetime.datetime.now() 放在开工前运行,end_time = datetime.datetime.now() 放在收工时运行,全程零手动!
📄 第三段:自动生成发票(PDF 文件直接生成)
⚠️ 注意:原始代码只写了个 .pdf 文本文件(不是真 PDF)。我们立刻升级为真正可用的版本——用更轻量、新手友好的 fpdf2 库(一行命令就能装好):
pip install fpdf2
然后用下面这个脚本,运行后直接生成带编号、日期、金额的正式发票 PDF(打开就能发客户):
from fpdf import FPDF
import datetime
# ✅ 真·生成 PDF 发票(无需 Word 或 Excel)
def generate_invoice(project_name, client_name, work_hours, hourly_rate):
invoice_date = datetime.date.today()
invoice_number = f"INV-{invoice_date.strftime('%Y%m%d')}-{hash(project_name) % 10000:04d}" # 更靠谱的单号
invoice_amount = round(work_hours * hourly_rate, 2)
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
# 写标题
pdf.cell(200, 10, txt=f"INVOICE #{invoice_number}", ln=True, align='C')
pdf.ln(5)
# 写信息
pdf.cell(200, 10, txt=f"Date: {invoice_date}", ln=True)
pdf.cell(200, 10, txt=f"Client: {client_name}", ln=True)
pdf.cell(200, 10, txt=f"Project: {project_name}", ln=True)
pdf.ln(5)
# 写明细
pdf.cell(200, 10, txt=f"Work Hours: {work_hours} h", ln=True)
pdf.cell(200, 10, txt=f"Rate: ${hourly_rate:.2f} / hour", ln=True)
pdf.cell(200, 10, txt=f"Amount Due: ${invoice_amount:.2f}", ln=True)
pdf.ln(10)
pdf.cell(200, 10, txt="Thank you for your business!", ln=True, align='C')
# 保存为 PDF(文件名清晰好找)
filename = f"{invoice_number}_to_{client_name.replace(' ', '_')}.pdf"
pdf.output(filename)
print(f"✅ 发票已生成:{filename}")
# ✅ 实际怎么用?填上客户、项目、工时、单价,运行就出 PDF:
generate_invoice(
project_name="Client X Project",
client_name="Acme Corp",
work_hours=8.5,
hourly_rate=85.0
)
✅ 效果:运行完,当前文件夹多出一个 INV-20240520-1234_to_Acme_Corp.pdf,双击就能打开打印或微信发送。
这三段脚本,就是提米哥自己每天在用的「自由职业最小闭环」:
– 接单 → 自动同步任务到 Trello
– 干活 → 自动记下每一分时间
– 收尾 → 自动吐出专业发票
没有复杂框架,不依赖 SaaS 订阅,全开源、全本地、全可控。
你不需要成为 Python 大神——只需要改几行文字,就能把每月 10 小时的杂事,压缩成 1 分钟点击。
直达网址:https://developer.trello.com/
