본문 바로가기
데이터&AI/기타개발

Python으로 주말 or 공휴일 체크하는 로직 만들기 (with 공공 API)

by 일등박사 2024. 10. 14.
728x90

 

자동으로 돌아가는 코드를 만드는데,

주말과 공휴일은 빼고 돌아야한다면 어떨까요??

 

크론텝으로 월-금은 설정이 가능하지만,, 공휴일 정보는 어떡하죠!?

 

그래서 준비했습니다!!!

 

공공API의 공휴일 정보!!!

 

ㅁ 공공 API : https://www.data.go.kr/data/15012690/openapi.do

 

한국천문연구원_특일 정보

(천문우주정보)국경일정보, 공휴일정보, 기념일정보, 24절기정보, 잡절정보를 조회하는 서비스 입니다. 활용시 날짜, 순번, 특일정보의 분류, 공공기관 휴일 여부, 명칭을 확인할 수 있습니다.

www.data.go.kr

 

빠르게 코드로 알아보겠습니다!!

import requests
import datetime
import xmltodict
import json

url = 'http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo'
params ={'serviceKey' : 'FFtJr1LXUzBzUV2+A7MaYJc7fxDLjWwV+/ENOUgE7eATUYnxBJMY6FZ1BtDkpkzIJ73/NFEQiLsuIhw01cZAOg=='
         , 'solYear' : datetime.datetime.now().strftime('%Y')  #'2015'
         , 'solMonth' : datetime.datetime.now().strftime('%m') }

response = requests.get(url, params=params)
# 바이트 데이터를 UTF-8로 디코딩
decoded_xml = response.content.decode('utf-8')

# XML을 Python 딕셔너리로 변환
xml_dict = xmltodict.parse(decoded_xml)

# Python 딕셔너리를 JSON 형식으로 변환
json_data = json.loads(json.dumps(xml_dict, ensure_ascii=False, indent=4))

 

API에서 다 처리해주기에 그냥 호출하고 json으로 만듬

위와 같이 간단히 만들어주는데요~~

 

이에!! 아래와 같이해서

 

import requests
import datetime
import xmltodict
import json
import sys

url = 'http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo'
params ={'serviceKey' : '{내가 신청하고받은 KEY}'
         , 'solYear' : datetime.datetime.now().strftime('%Y')  #'2015' 와같이 연도 입력
         , 'solMonth' : datetime.datetime.now().strftime('%m') }

response = requests.get(url, params=params)
# 바이트 데이터를 UTF-8로 디코딩
decoded_xml = response.content.decode('utf-8')

# XML을 Python 딕셔너리로 변환
xml_dict = xmltodict.parse(decoded_xml)

# Python 딕셔너리를 JSON 형식으로 변환
json_data = json.loads(json.dumps(xml_dict, ensure_ascii=False, indent=4))

# 결과 출력
print(json_data)
## 공휴일인지!!
skip_YN = 'N'
for holiday in json_data['response']['body']['items']['item']:
    if datetime.datetime.now().strftime('%Y%m%d')  in holiday['locdate']:
        skip_YN = 'Y'
        
## 휴일인지 판단!!
if datetime.datetime.today().weekday() in [6,7]:
    skip_YN = 'Y'
skip_YN


if skip_Y[:1] =='Y':
    print(f"오늘{datetime.datetime.now().strftime('%Y%m%d')} 은 {skip_YN} 쉬는날로 스킵!!")
    sys.exit()

 

휴일이라면 바로 스킵되게 할수 있습니다~~~

 

참 쉽죠!!!

 

728x90

댓글