对python与API进一步学习后的一个试炼:将你需要的计划需求和现状和计划所需的时间期限相关信息作为输入信息,然后帮你生成一篇适合于你的一份计划,并自动将这份计划填充至你的iPhone手机

主程序 

#导入模块

#logging:用于记录日志,方便调试和跟踪程序运行情况。
#icalendar:用于生成 iCalendar 格式的日历文件。
#datetime 和 timedelta:用于处理日期和时间。
#pytz:用于处理时区信息。
import logging
from icalendar import Calendar, Event
from datetime import datetime, timedelta
import pytz

# 配置信息

#OPENAI_API_KEY:OpenAI API 的密钥,用于调用 GPT 模型生成计划。
#TIMEZONE:设置时区为上海,确保时间处理的准确性。
#OPENAI_API_KEY = "您的OpenAI API密钥"
#TIMEZONE = pytz.timezone("Asia/Beijing")

# 时间解析函数

# 设置日志记录
logging.basicConfig(filename='planner.log', level=logging.INFO)

def parse_time_input(time_str):
    """将自然语言时间解析为datetime对象。
    
    如果解析失败,记录错误并返回当前时间 + 3天的默认值。
    """
    try:
        return datetime.strptime(time_str, "%Y-%m-%d")
    except ValueError as e:
        logging.error(f"时间解析失败: {e}")
        return datetime.now(TIMEZONE) + timedelta(days=3)  # 默认3天后

# 创建时间解析函数

#parse_time_input:将用户输入的时间字符串解析为 datetime 对象。如果解析失败,记录错误并返回当前时间 + 3天的默认值。

def create_event(task, start_time):
    """创建一个 iCalendar 事件,并设置任务摘要、开始时间和结束时间。
    
    参数:
        task (str): 任务描述
        start_time (datetime): 任务的开始时间
    返回:
        event (Event): 创建的 iCalendar 事件
    """
    event = Event()
    event.add('summary', task)
    event.add('dtstart', start_time)
    event.add('dtend', start_time + timedelta(hours=1))  # create_event:创建一个 iCalendar 事件,包括任务描述、开始时间和结束时间。默认持续1小时
    return event

# 创建第一版日历文件函数
# create_ics:将生成的计划文本转换为 iCalendar 格式,并保存为 .ics 文件。该版本假设每个任务都从1小时后开始,且没有处理具体的截止时间
def create_ics(plan_text, output_path="plan.ics"):
    """将计划文本转换为 iCalendar 格式并保存为 .ics 文件。
    
    参数:
        plan_text (str): 包含任务和截止时间的计划文本
        output_path (str): 输出的 .ics 文件路径,默认为 'plan.ics'
    返回:
        output_path (str): 生成的 .ics 文件路径
    """
    cal = Calendar()
    cal.add('prodid', '-//AI Planner//mxm.dk//')
    cal.add('version', '2.0')

    for line in plan_text.split('\n'):
        if '.' in line:
            task = line.split(') ')[1] if ')' in line else line
            start_time = datetime.now(TIMEZONE) + timedelta(hours=1)
            event = create_event(task, start_time)
            cal.add_component(event)

    with open(output_path, 'wb') as f:
        f.write(cal.to_ical())
    return output_path

#第一版主程序逻辑

if __name__ == "__main__":
    # 用户输入
    requirements = input("请输入您的计划需求(例如:开发新功能、准备报告等):")
    current_status = input("请描述当前进展(例如:已完成50%、未开始等):")
    deadline_input = input("请输入截止时间(YYYY-MM-DD)(如果不确定,直接按回车默认3天后):")
    
    # 如果用户没有输入截止时间,默认为3天后
    if not deadline_input.strip():
        deadline = datetime.now(TIMEZONE) + timedelta(days=3)
    else:
        deadline = parse_time_input(deadline_input)

    print("正在生成计划,请稍候...")
    
    # 生成计划
    openai.api_key = OPENAI_API_KEY
    prompt = f"""需求:{requirements}
现状:{current_status}
期限:{deadline.strftime("%Y-%m-%d")}
请生成含时间节点的执行计划:"""

    plan = generate_plan(prompt)
    print("\n生成的计划:\n" + plan)
    
    # 创建日历文件
    ics_path = create_ics(plan)
    print(f"\n日历文件已生成:{ics_path}")

    # 同步到iPhone指引
    print("""
    [iPhone同步步骤]
    1. 将生成的plan.ics文件发送到iPhone(邮件/隔空投送)
    2. 在iPhone上点击附件 → 选择"添加到日历"
    3. 打开"快捷指令"App执行自动化:
       - 创建个人自动化 → 特定时间
       - 添加"查找日程" + "发送提醒"操作
    """) 

#创建改进版日历文件函数

with open(output_path, 'wb') as f:
    f.write(cal.to_ical().decode('utf-8').encode('utf-8'))

import re

def create_ics(plan_text, output_path="plan.ics"):
    cal = Calendar()
    cal.add('prodid', '-//AI Planner//mxm.dk//')
    cal.add('version', '2.0')

    # 使用正则表达式解析GPT响应
    pattern = re.compile(r'(\d+)\.\s*(.+?)\s*\((.*?)\)')

    for match in pattern.finditer(plan_text):
        task = match.group(2)
        deadline_str = match.group(3)
        try:
            deadline = datetime.strptime(deadline_str, "%Y-%m-%d").replace(tzinfo=TIMEZONE)
        except ValueError:
            deadline = datetime.now(TIMEZONE) + timedelta(days=3)

        event = create_event(task, deadline)
        cal.add_component(event)

    with open(output_path, 'wb') as f:
        f.write(cal.to_ical().decode('utf-8').encode('utf-8'))
    return output_path

使用方法


1.安装依赖

2.配置OpenAI API

访问 OpenAI Platform 获取API密钥
替换代码中的OPENAI_API_KEY

3.运行程序

4.iPhone同步


将生成的plan.ics通过AirDrop/邮件发送到iPhone
点击附件选择"添加到日历"

高级自动化(需iOS 13+)

 在iPhone上创建快捷指令:

// 每天早8点提醒当日计划
on run
    find events where start date is today
    get details of each event
    show alert with list
end run

设置自动化触发条件:
"特定时间" → 选择早上8:00
添加操作:"运行快捷指令"选择上述指令

补充说明:


1.智能解析
支持自然语言时间描述(如"下周一下午3点")
自动分配任务间隔时间(可修改create_ics函数调整)
2.日历兼容
生成的ICS文件兼容Apple Calendar/Google Calendar
自动添加时区信息
3.安全机制
所有处理在本地完成
无需越狱或第三方云服务


扩展建议


添加Microsoft To Do API支持:可将计划同步到Office 365账户
集成SMTP模块:自动发送日历邀请
添加进度跟踪功能:通过iOS Shortcuts更新任务状态

(以上内容仅个人学习成果分享,如有更好的建议,欢迎随时提议)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值