可能性の模索
テーマ:今日から10年前の歴史を知る
使用したソースコード
1,import smtplib
2,import datetime
3,import requests
ソースコード
import smtplib
import datetime
import requests
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# 10年前の日付を計算
today = datetime.date.today()
ten_years_ago = today.replace(year=today.year - 10)
# 10年前の出来事を取得する
def get_historical_events(date):
# 'history.muffinlabs.com' API を使用して、10年前のその日の出来事を取得
url = f"https://history.muffinlabs.com/date/{date.month}/{date.day}"
response = requests.get(url)
# レスポンスが成功した場合
if response.status_code == 200:
data = response.json()
events = data.get('data', {}).get('Events', [])
return events
else:
# データを取得できなかった場合
return None
# メール送信関数
def send_email(subject, body, to_email):
# メールの送信元アドレスとパスワード
from_email = "xxx"
login_password = "xxx"
# メールのヘッダーと本文を作成
msg = MIMEMultipart()
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain')) # 本文を追加
# サーバーに接続してメールを送信
smtp_server = "smtp-mail.outlook.com"
port = 587
try:
# サーバーに接続
server = smtplib.SMTP(smtp_server, port)
server.starttls()
server.login(from_email, login_password)
# メール送信
server.sendmail(from_email, to_email, msg.as_string())
print("メールが送信されました。")
except Exception as e:
print(f"メール送信エラー: {e}")
finally:
server.quit() # サーバーを切断
# メイン処理
def main():
# 10年前の出来事を取得
events = get_historical_events(ten_years_ago)
if events:
# 出来事が取得できた場合、メール本文を作成
event_details = "\n".join([f"{event['year']}: {event['text']}" for event in events])
subject = f"10年前の今日 ({ten_years_ago}) の出来事"
body = f"10年前の{ten_years_ago}に起こった出来事:\n\n{event_details}"
else:
# 出来事が取得できなかった場合
subject = f"10年前の今日 ({ten_years_ago}) の出来事"
body = "10年前の今日の出来事は取得できませんでした。"
# 送信先メールアドレスを指定
to_email = "xxx" # ここで送信先を設定
# メールを送信
send_email(subject, body, to_email)
# メイン処理を実行
if __name__ == "__main__":
main()
感想
メールの送信をする機能を取り入れるのが大変でした。
またうまくいかなかったところもあった。本当は10年前の情報だけほしかったが、うまく組めず
その日に起きたこと全部が表示されてしまった。