OpenWeatherMap
API로 현재 위치의 날씨 데이터를 가져 오려면 위도, 경도 데이터가 필요하다. 예전에 React Native로 날씨 정보 샘플 앱을 만들었을 땐 Expo
의 expo-location
라이브러리로 쉽게 가져올 수 있었는데, Python에서는 아무리 찾아도 비슷한 라이브러리가 없는 듯 하다.
돌고 돌아 Google Maps의 Geolocation
API의 힘을 빌려 시도해보기로 했다.
https://developers.google.com/maps/documentation/geolocation/intro
API 키를 발급 받기 위해 Google Cloud Platform Console의 문서를 따라 진행한다.
새 프로젝트를 생성해서 진행했다.
Google Cloud Platform에서 사용자 인증 정보
상단의 사용자 인증 정보 만들기 - API 키
일단 지금 몹시 당황스럽다. API 키를 URL에 분명히 잘 넣어서 요청을 보냈음에도 불구하고 404 에러가 뜨길래 이것저것 바꿔가며 계속 요청했더니 429 에러가 뜨기 시작했다.
{
"error": {
"code": 429,
"message": "Quota exceeded for quota group 'default' and limit 'Requests per day' of service 'geolocation.googleapis.com' for consumer 'project_number:203791520321'.",
"errors": [
{
"message": "Quota exceeded for quota group 'default' and limit 'Requests per day' of service 'geolocation.googleapis.com' for consumer 'project_number:203791520321'.",
"domain": "global",
"reason": "rateLimitExceeded"
}
],
"status": "RESOURCE_EXHAUSTED"
}
}
분명 10번? 10번 내외?밖에 하질 않았는데 하루 할당량 초과란다.
뭔가 좀 이상하다.
지난 주 첫 테스트 때는 Requests per 100 seconds
로 책정이 되었던 것 같은데, 이번엔 Requests per day
로 책정된 것으로 보인다. 아니 근데, 하루에 한도가 1인 게 말이 되나?
대시보드를 조금 더 찾아보다가 우측 상단 메뉴에 선물 상자 아이콘의 무료 평가판 상태
알림이 뜨는 걸 발견했다. 프리 티어를 아예 시작도 안하고 있던 것이었다. 그래서 하루에 하나...
아래처럼 Google Cloud Platform 무료로 사용해 보기
를 쉽게 신청한다.
잠시 텀을 두고 대시보드로 다시 들어가면 일당 요청량이 무제한
으로 바뀐 것을 확인할 수 있다.
자 이제 성공적으로 결과값을 받아 오고 있다. 소스코드와 결과값은 아래에 있다.
다음엔 Telegram 봇과 어떻게 위치 데이터를 상호작용할지 고민해볼 예정이다.
# location_getter.py
import os
import requests
from dotenv import load_dotenv
load_dotenv(verbose=True)
LOCATION_API_KEY = os.getenv('LOCATION_API_KEY')
url = f'https://www.googleapis.com/geolocation/v1/geolocate?key={LOCATION_API_KEY}'
data = {
'considerIp': True,
}
result = requests.post(url, data)
print(result.text)
{
"location": {
"lat": 37.4734848,
"lng": 126.9202944
},
"accuracy": 1968
}
안녕하세요. api 초보자 입니다. 도움을 제발 받고싶어서 댓글 남깁니다...
위의 코드에 제 키를 넣고 돌려봤는데 404에러가 뜨더라구요. 찾아보니까 cellTowers, wifiAccessPoints 속성 중 1개를 반드시 적어야 한다고 봤는데, 혹시 딱 저 코드만으로 현재 위치 좌표값을 얻으신 건가요...?