如何使用谷歌日历API将事件添加到日历

问题描述 投票:0回答:1

例如;我在 12 月 8 日 2 点开会,我正在尝试制作一个 python 语音助手,当我发出语音命令时,它将在日历中添加适当的日期作为事件,但它会在当前创建一个事件通过将我作为事件给出的命令添加到日历标题来获取时间和日期,我该如何解决这个问题?

def parse_command(command):

  date=datetime.now()
  summary = ""

  parts = command.split(" ")
  for i in range(len(parts)):
      if parts[i] == "saat" and i+1 < len(parts):
          time = parts[i+1]
      elif parts[i] == "tarihinde" and i+1 < len(parts):
          try:
              date = datetime.strptime(parts[i], "%d/%m/%Y")
          except ValueError:
              print("Geçersiz tarih formatı. Lütfen gün/ay/yıl formatında girin.")
              pass
      elif parts[i] != "toplantı":
          summary += parts[i] + " "

  if date is None or time is None:
      return "Tarih veya saat belirtilmedi", None, None

  # Zamanı oluştururken, başlangıç ve bitiş zamanları aynı formatta ve tipinde olmalı
  start_time = date.strftime("%Y-%m-%dT%H:%M:%S") + "+00:00"
  end_time = (date + timedelta(hours=1)).strftime("%Y-%m-%dT%H:%M:%S") + "+00:00"

  return summary.strip(), start_time, end_time
python google-calendar-api datetime-format voice-recognition
1个回答
0
投票

您的代码中似乎存在一些问题。首先,您没有正确处理时间部分,其次,您在解析命令时没有更新日期和时间。 示例:

from datetime import datetime, timedelta

def parse_command(command):
    current_date = datetime.now()
    summary = ""
    time = None

    parts = command.split(" ")
    for i in range(len(parts)):
        if parts[i] == "saat" and i + 1 < len(parts):
            time = parts[i + 1]
        elif parts[i] == "tarihinde" and i + 1 < len(parts):
            try:
                current_date = datetime.strptime(parts[i + 1], "%d/%m/%Y")
            except ValueError:
                print("Geçersiz tarih formatı. Lütfen gün/ay/yıl formatında girin.")
                pass
        elif parts[i] != "toplantı":
            summary += parts[i] + " "

    if time is None:
        return "Saat belirtilmedi", None, None

    # Combine the updated date with the specified time
    meeting_datetime = datetime.combine(current_date, datetime.strptime(time, "%H:%M").time())

    # Zamanı oluştururken, başlangıç ve bitiş zamanları aynı formatta ve tipinde olmalı
    start_time = meeting_datetime.strftime("%Y-%m-%dT%H:%M:%S") + "+00:00"
    end_time = (meeting_datetime + timedelta(hours=1)).strftime("%Y-%m-%dT%H:%M:%S") + "+00:00"

    return summary.strip(), start_time, end_time

# Example usage:
command = "toplantı saat 14:00 tarihinde"
summary, start_time, end_time = parse_command(command)
print(f"Summary: {summary}\nStart Time: {start_time}\nEnd Time: {end_time}")

© www.soinside.com 2019 - 2024. All rights reserved.