Skip to main content
Glama

HRFCO Service

download-stations.js3.87 kB
#!/usr/bin/env node const fs = require('fs'); const path = require('path'); // HRFCO API 키 const API_KEY = 'FE18B23B-A81B-4246-9674-E8D641902A42'; // 데이터 저장 디렉토리 생성 const dataDir = path.join(__dirname, 'netlify', 'functions', 'data'); if (!fs.existsSync(dataDir)) { fs.mkdirSync(dataDir, { recursive: true }); } // API 호출 함수 async function fetchStationData(dataType) { try { const endpoint = `${dataType}/info.json`; const url = `http://api.hrfco.go.kr/${API_KEY}/${endpoint}`; console.log(`🔍 ${dataType} API 호출: ${url}`); const response = await fetch(url); if (!response.ok) { throw new Error(`${dataType} API 호출 실패: ${response.status}`); } const data = await response.json(); console.log(`📊 ${dataType} API 응답 코드: ${data.code || 'N/A'}`); // API 응답에 code 필드가 없는 경우도 있으므로 content 존재 여부로 판단 if (!data.content) { throw new Error(`${dataType} API 오류: content가 없습니다`); } // 데이터 타입별로 다른 응답 형식 처리 let stations = []; if (data.content) { stations = data.content .filter(station => station && (station.dmobscd || station.damcd || station.wlobscd || station.rfobscd)) .map((station) => ({ obs_code: station.dmobscd || station.damcd || station.wlobscd || station.rfobscd || '', obs_name: station.damnm || station.obsnm || '', river_name: station.rivnm || station.river_name, location: station.addr || station.location, address: station.addr, agency: station.agcnm || station.agency, latitude: station.lat ? parseFloat(station.lat) : undefined, longitude: station.lon ? parseFloat(station.lon) : undefined, data_type: dataType })); // 댐 데이터의 경우 추가 정보 포함 if (dataType === 'dam') { const validDamData = data.content.filter(station => station && (station.dmobscd || station.damcd)); stations = stations.map((station, index) => ({ ...station, dam_type: validDamData[index]?.damtp || '', dam_height: validDamData[index]?.damht || '', dam_length: validDamData[index]?.damln || '', storage_capacity: validDamData[index]?.stcap || '', flood_control_capacity: validDamData[index]?.flwcap || '' })); } } console.log(`✅ ${dataType} 관측소 ${stations.length}개 다운로드 완료`); return stations; } catch (error) { console.error(`❌ ${dataType} 다운로드 실패:`, error.message); return []; } } // 메인 실행 함수 async function main() { console.log('🚀 HRFCO 관측소 데이터 다운로드 시작...'); const dataTypes = ['dam', 'waterlevel', 'rainfall']; for (const dataType of dataTypes) { const stations = await fetchStationData(dataType); if (stations.length > 0) { const fileName = `${dataType}-stations.json`; const filePath = path.join(dataDir, fileName); fs.writeFileSync(filePath, JSON.stringify(stations, null, 2), 'utf8'); console.log(`💾 ${dataType} 데이터 저장 완료: ${filePath}`); // 문경시 관련 관측소 찾기 const mungyeongStations = stations.filter(station => station.obs_name && station.obs_name.includes('문경') ); if (mungyeongStations.length > 0) { console.log(`📍 문경시 관련 ${dataType} 관측소:`); mungyeongStations.forEach(station => { console.log(` - ${station.obs_name}: ${station.obs_code}`); }); } } } console.log('🎉 모든 관측소 데이터 다운로드 완료!'); } // 실행 main().catch(console.error);

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/kwenhwang/hrfco-service'

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