오늘은 정리되고 있는 자료를 타인(?)들과 공유하기 위해서... Firebase 의 Realtime Database 에 저장을 해 보도록 하겠다.
import requests
import sqlite3
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
from firebase_admin import messaging
import datetime
# 서버 운영을 위해서는 firebase 의 설정 정보를 따로 읽어올 수 있어야 함.
cred = credentials.Certificate('./services_firebase.json')
firebase_admin.initialize_app(cred,{
'databaseURL' : 'https://my-appli................ault-rtdb.asia-southeast1.firebasedatabase.app/'
})
conn = sqlite3.connect("opDeGangDB.sqlite", isolation_level=None)
rs = conn.cursor()
rs.execute('''CREATE TABLE IF NOT EXISTS chejuList1
(id integer PRIMARY KEY, url text, Name text, writeDate text)''')
rs.execute('''CREATE TABLE IF NOT EXISTS localAddr
(id integer PRIMARY KEY, url text, address text, lat float, lot float, writeDate text)''')
url = 'https://dapi.kakao.com/v2/local/search/address.json'
urlCategory = 'https://dapi.kakao.com/v2/local/search/category.json'
REST_API_KEY = '6........................................8'
headers = {'Authorization': 'KakaoAK {0}'.format(REST_API_KEY)}
address = '제주 제주시 첨단로 242'
def location_data(address):
params = {'query': '{0}'.format(address)}
resp = requests.get(url, params=params, headers=headers)
#print(resp.status_code)
data = resp.json()['documents'][0]['road_address']
return data
def category_data(y, x):
# FD6 음식점 좌표 주변 20m 검색
params = {'category_group_code': 'FD6', 'x': '{0}'.format(x), 'y': '{0}'.format(y), 'radius': 20}
resp = requests.get(urlCategory, params=params, headers=headers)
#print(resp.status_code) phone, road_address_name, x, y, distance
idx = resp.json()['meta']['total_count']
print(idx)
if idx == 0:
data = {'place_name': 'not found'}
else:
for ix in range(0, idx):
data = resp.json()['documents'][ix]
if idx > 1:
if int(resp.json()['documents'][ix]['distance']) < 10:
break;
return data
# addrStr = location_data(address)
# print(addrStr['address_name'] + ' ' + addrStr['y'] + ' ' + addrStr['x'])
rs.execute('select url, address, lat, lot from localAddr')
row = rs.fetchone()
# print(row[0] + ' ' + row[1] + ' ' + str(row[2]) + ' ' + str(row[3]))
# print(category_data(row[2], row[3]))
jejuFD6info = db.reference('jejuFD6info')
for row in rs.fetchall():
data = category_data(row[2], row[3])
print(row[0] + ' ' + row[1] + ' ' + str(data))
try:
infoData = jejuFD6info.child(data['id'])
infoData.set(data)
infoData.child('url').set(row[0])
except:
print('이미 처리')
print('JOB END')
2) 에서 보았던 소스에 추가적인 작업을 하고 있다. Firebase 의 RealtimeDatabase 와 접속을 위해서 services_firebase.json 파일을 만들어야 하는 데, 그것 이전에 작성했던 포스팅을 참고하면 된다.
https://billcoreapython.tistory.com/29
이번에 추가된 부분은 category_data(y, x) 함수 부분인데, 이건 뭘할껀가 하면 주소를 막상 받아오기는 했는데, 그 주소의 정확도(?)를 확인할 방법이 없다. 실제 주소인지도 모르겠고 그렇다고 일일이 다 방문해 보려면 하 세월일 듯 하여,
kakao api을 통해서 검증을 해 보는 것이다. kakao api 에서는 위도, 경도 주변 기준으로 검색을 해주는 서비스를 지원하고 있다. 그 중에서도 특정 카테고리를 선택하면 해당 되는 카테고리 정리를 찾아주기 때문에 그것을 이용해서 주변에 있는 식당을 찾아보는 것이다.
그래서 location_data 에서 받아온 위도, 경도와 근접한(20m 이내) 곳을 검색에서 내가 알려준 위도, 경도와 제일 근접한 곳을 이 위도, 경도의 맛집(?) 이라고 인식하게 하는 것이다. 그렇게 해서 정리를 해 두어야 데이터를 활용하는 측면에서도 유용한 자료가 되지 않을 까 하는 생각이 든다.
ㅋ~
그럼 이제 이것으로 무엇을 할 것 인가 ? 그건 역시 아직은 비밀... ㅋㅋㅋ
'파이썬 스크립트' 카테고리의 다른 글
파이썬으로 코딩 해 보기 Numpy Sort 에 대해서 자료가 있어서. (2) | 2022.01.13 |
---|---|
파이썬 으로 qrcode 만들어 보기. (2) | 2022.01.12 |
파이썬 으로 제주 맛집 주소를 찾아서 (2) (3) | 2021.12.23 |
파이썬 으로 제주맛집 스크래핑 (3) | 2021.12.22 |
파이썬으로 sqlite 테이블에 칼럼을 새로 추가 하기 (3) | 2021.12.21 |