우선 AstromyAPI 폐기를 결정했고 차선책으로 Python 라이브러리 Skyfield를 사용하자고 결정했다.
Skyfield를 사용해서 데이터를 직접 계산, 가공해서 천문 데이터를 만들고, 이를 배포할 생각이다.
Python설치- Skyfield 라이브러리 설치
- Skyfield 데이터 생상 로직
그러니까 결론은 Python으로 API를 직접 만들겠다는 내용이다.
일단 설치부터 하자.
본인은 맥 환경이라.
brew install python3
이렇게 설치했다.

잘 설치 됐군.
설치 후 Python 패키지 관리자(PIP)를 확인해보니까 설치가 되지 않아서 직접 설치해줬다.
가 아니고, 알아보니까 mac 환경에서 설치 진행을 homebrew로 진행해서 가상환경이 필요하다고 해서 가상환경을 만들어 주고 pip을 실행시켰다.
pip install skyfield
skyfield 다운!
이제 프로젝트를 생성할건데, 생성전에 나는 Python에 대한 정보가 아무것도 없다. VSCode도 다루는게 익숙하지는 않지만 한번 해보자고.
우선 생성하기전에 Python개발에 도움이 될만한 확장자들을 설치해주자.
일단은 Python개발에 앞서 필수 확장자, 당연 Python을 설치해주었고, REST API를 만드는게 목적이니, Flask Snippets을 설치해주었다.
다음으로 또 유용할 수 있는게 뭐가 있을까 살펴보고,
Prettier(코드 정렬도구)와 GitLens(깃에 대한 도구), Docker(개발 배포 환경 관리 용이)를 추가로 설치해주었다.
이제 프로젝트를 생성.

인텔리제이랑 다르게 휑한게 뭔가 잘못된 것 같다. ㅋㅋㅋㅋㅋㅋ
알아보니까 React처럼 터미널로 프로젝트를 생성한다고 한다. 오케이 절차를 따라보자.
만들었던 파일은 지우고.

이렇게 프로젝트를 생성 했다.

소소한 팁인데 code . 명령어가 듣지 않아서 알아보니까 저렇게 하면 먹는다!
프로젝트가 열렸는데

이거 뭐냐 무섭게
알아보니까 별거 아니네, 별거 아닌걸로 놀래키고 있어; 여튼 부모 폴더까지 i'm 신뢰~ 했고
이제는 본격적인 구현을... 시작하면 되나?
여튼 이건 flask로 API를 만드는게 목적이고 난 python을 모른다... 그래도 뭐 해보자.

일단 뭐 휑하니까 helloworld 출력문 쓰고 깃에 올리는 것 부터 해야겠다.

오 터미널에 출력하는구나 신기하다. 여튼 git 연결 해보자.

푸시까지 문제 없이 성공!

gitignore까지 정상적으로 올라갔는지 확인하고! 이제 진짜 준비준비는 끝!

로컬호스트 서버로 간단하게 별의 정보를 불러올 수 있게끔 해봤다.
이제 진짜 이걸 어떻게 만들어낼지 고민을 해봐야한다.
일단 필요한게 뭘까 고민을 해보자.
를 고민하다가 문득 이런 생각이 들었다. 이렇게 강력한 라이브러리가 있는데 이걸 사용한 누군가의 git이 있지 않을까?
"훔쳐오자"
난 이제 루팡이다. git 뒤져보자고?
엄... 지금 일단 여러 사람이 만들어 놓은 것을 보고 오긴 했는데 너무 무겁다. 석사 학위정도는 있는 사람들이 만든 것 같다. (그러니까 프로그래머라기 보다는 진짜 천문학 석사, 박사 과정에 있는 사람들 얘기하는거다.) 여기서 뭔가 뽑아오기는 힘들 것 같은데.
그래서 그냥 내가 생각하기로 결정했다..
일단은 어떤 정보를 제공할 것인가를 고민해야한다, 우리 프로젝트에 맞는 정보.
일단 프로젝트 목표를 정의해보자.
- 실시간 천문 예보: 미래의 특정 날짜에 일식/월식이나 별자리 등의 정보를 예측해서 제공.
- 가벼운 데이터: 복잡하거나 방대한 과학 데이터를 사용하지 않고, 필요한 정보만 간결하게 제공.
- 관측 정보: 사용자가 어디서 관측해야 가장 좋은지 같은 실용적인 정보도 제공.
- 예보 범위: 앞으로 6개월, 1년 내에 발생할 유성우, 일식/월식 등의 이벤트를 예측할 수 있다.
예시 응답:
{
"type": "solar",
"date": "2024-04-08",
"best_time": "12:35",
"location": {
"latitude": 40.7128,
"longitude": -74.0060
},
"visible": true
}
{
"date": "2024-10-10",
"location": {
"latitude": 37.5665,
"longitude": 126.9780
},
"constellations": [
{
"name": "Orion",
"visible": true,
"best_time": "22:00"
},
{
"name": "Taurus",
"visible": false
}
]
}
예시 응답:
{
"planet": "Mars",
"date": "2024-10-10",
"location": {
"latitude": 51.5074,
"longitude": -0.1278
},
"visible": true,
"best_time": "03:00",
"right_ascension": "5h 55m",
"declination": "-6° 23′"
}
{
"meteor_shower": "Perseids",
"peak_date": "2024-08-12",
"location": {
"latitude": 34.0522,
"longitude": -118.2437
},
"best_time": "02:00",
"expected_rate": "60 meteors per hour"
}
흠 일단 이렇게 정리해두자.