67 lines
1.8 KiB
Bash
67 lines
1.8 KiB
Bash
#!/bin/bash
|
|
# Kakao Calendar 일정 조회 스크립트
|
|
|
|
set -e
|
|
|
|
# 환경변수 체크
|
|
if [ -z "$KAKAO_ACCESS_TOKEN" ]; then
|
|
echo "❌ KAKAO_ACCESS_TOKEN 환경변수가 필요합니다."
|
|
exit 1
|
|
fi
|
|
|
|
# 파라미터: today | week | month
|
|
RANGE="${1:-today}"
|
|
|
|
# 날짜 계산 (KST → UTC 변환)
|
|
case "$RANGE" in
|
|
today)
|
|
# 오늘 00:00 ~ 23:59 (KST → UTC: -9시간)
|
|
FROM=$(date -u -v-9H -v0H -v0M -v0S +"%Y-%m-%dT%H:%M:%SZ")
|
|
TO=$(date -u -v-9H -v23H -v59M -v59S +"%Y-%m-%dT%H:%M:%SZ")
|
|
;;
|
|
week)
|
|
# 이번 주 (월~일)
|
|
FROM=$(date -u -v-9H -v-mon -v0H -v0M -v0S +"%Y-%m-%dT%H:%M:%SZ")
|
|
TO=$(date -u -v-9H -v+6d -v23H -v59M -v59S +"%Y-%m-%dT%H:%M:%SZ")
|
|
;;
|
|
month)
|
|
# 이번 달
|
|
FROM=$(date -u -v-9H -v1d -v0H -v0M -v0S +"%Y-%m-%dT%H:%M:%SZ")
|
|
TO=$(date -u -v-9H -v+1m -v1d -v-1d -v23H -v59M -v59S +"%Y-%m-%dT%H:%M:%SZ")
|
|
;;
|
|
*)
|
|
echo "❌ 사용법: $0 [today|week|month]"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# API 호출
|
|
RESPONSE=$(curl -s -X GET "https://kapi.kakao.com/v2/api/calendar/events" \
|
|
-H "Authorization: Bearer $KAKAO_ACCESS_TOKEN" \
|
|
-G \
|
|
--data-urlencode "calendar_id=primary" \
|
|
--data-urlencode "from=$FROM" \
|
|
--data-urlencode "to=$TO" \
|
|
--data-urlencode "limit=100")
|
|
|
|
# 결과 확인
|
|
if echo "$RESPONSE" | jq -e '.events' > /dev/null 2>&1; then
|
|
EVENT_COUNT=$(echo "$RESPONSE" | jq '.events | length')
|
|
|
|
if [ "$EVENT_COUNT" -eq 0 ]; then
|
|
echo "📅 일정이 없습니다."
|
|
exit 0
|
|
fi
|
|
|
|
echo "📅 일정 $EVENT_COUNT개 조회됨"
|
|
echo ""
|
|
|
|
# 일정 출력
|
|
echo "$RESPONSE" | jq -r '.events[] |
|
|
"제목: \(.title)\n시작: \(.time.start_at)\n종료: \(.time.end_at)\n---"'
|
|
else
|
|
echo "❌ 일정 조회 실패"
|
|
echo "$RESPONSE" | jq '.'
|
|
exit 1
|
|
fi
|