Skip to main content
Glama
core_logic.py3.01 kB
# core_logic.py import os from dotenv import load_dotenv import requests import xml.etree.ElementTree as ET load_dotenv() KOPIS_API_KEY = os.getenv("KOPIS_API_KEY") BASE_URL = "http://www.kopis.or.kr/openApi/restful" # API 키가 없을 때 적절한 에러 처리 if not KOPIS_API_KEY: print("Warning: KOPIS_API_KEY not found in environment variables") def get_performance_list(stdate, eddate, **kwargs): """KOPIS API에서 공연 목록을 가져옵니다.""" return _fetch_kopis_data("/pblprfr", stdate=stdate, eddate=eddate, **kwargs) def get_festival_list(stdate, eddate, **kwargs): """KOPIS API에서 축제 목록을 가져옵니다. (장르 필터 추가)""" # KOPIS API에서 '축제'에 해당하는 장르 코드는 'I000' 입니다. kwargs['shcate'] = 'I000' return _fetch_kopis_data("/pblprfr", stdate=stdate, eddate=eddate, **kwargs) def get_performance_detail(performance_id, **kwargs): """KOPIS API에서 특정 공연/축제의 상세 정보를 가져옵니다.""" url = f"{BASE_URL}/pblprfr/{performance_id}" params = {'service': KOPIS_API_KEY} try: response = requests.get(url, params=params) response.raise_for_status() root = ET.fromstring(response.content) item = root.find('.//db') if item: # 상세 정보에 필요한 필드를 여기에 추가할 수 있습니다. return { 'id': item.find('mt20id').text, 'name': item.find('prfnm').text, 'startDate': item.find('prfpdfrom').text, 'endDate': item.find('prfpdto').text, 'venue': item.find('fcltynm').text, 'poster': item.find('poster').text, 'genre': item.find('genrenm').text, 'state': item.find('prfstate').text, 'story': item.find('sty').text # 줄거리 추가 } return {} except Exception as e: print(f"Error in core_logic detail: {e}") return {} def _fetch_kopis_data(endpoint, **params): """KOPIS API 호출을 위한 공통 함수""" url = f"{BASE_URL}{endpoint}" full_params = { 'service': KOPIS_API_KEY, 'cpage': 1, 'rows': 10, **params } try: response = requests.get(url, params=full_params) response.raise_for_status() root = ET.fromstring(response.content) items = [] for item in root.findall('.//db'): items.append({ 'id': item.find('mt20id').text, 'name': item.find('prfnm').text, 'startDate': item.find('prfpdfrom').text, 'endDate': item.find('prfpdto').text, 'venue': item.find('fcltynm').text, 'poster': item.find('poster').text, 'genre': item.find('genrenm').text }) return items except Exception as e: print(f"Error in core_logic fetch: {e}") return []

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JunoJunHyun/Festival-Finder-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server