Skip to content

Commit ac01338

Browse files
committed
update
1 parent 18db4ec commit ac01338

File tree

3 files changed

+998
-262
lines changed

3 files changed

+998
-262
lines changed

PyKakao/config/info.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
__version__ = "0.0.2"
33
__author__ = "정우일(Wooil Jeong)"
44
__contact__ = "wooil@kakao.com"
5-
__github__ = "https://github.com/WooilJeong/PyKakao"
5+
__github__ = "https://github.com/WooilJeong/PyKakao"

README.md

Lines changed: 90 additions & 195 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<div align="center">
22

3-
<b>카카오 데이터 조회를 위한 오픈소스 로우코드 파이썬 라이브러리</b><br>
3+
<b>카카오 API를 사용하기 위한 오픈소스 로우코드 파이썬 라이브러리</b><br>
44
<b>🚀`pip install PyKakao --upgrade`</b>
55

66
[![PyPI Latest Release](https://img.shields.io/pypi/v/pykakao.svg)](https://pypi.org/project/pykakao/)
@@ -15,243 +15,138 @@
1515

1616
## PyKakao
1717

18-
PyKakao는 [kakao developers](https://developers.kakao.com/)에서 제공하는 [로컬(Local) API](https://developers.kakao.com/docs/latest/ko/local/common)를 이용할 수 있는 Python Client 입니다. PyKakao를 정상적으로 이용하기 위해서는 kakao developers 애플리케이션 추가를 통해 발급되는 REST API 키가 필요합니다.
18+
**PyKakao** 라이브러리를 사용하면 [Kakao Developers](https://developers.kakao.com/)에서 제공하는 여러 종류의 카카오 API를 파이썬으로 쉽게 사용할 수 있습니다. 예를 들어, [Daum 검색 API](https://developers.kakao.com/docs/latest/ko/daum-search/dev-guide)를 이용해서 웹에서 정보를 검색할 수 있고, [메시지 API](https://developers.kakao.com/docs/latest/ko/message/rest-api)를 사용해서 카카오톡 메시지를 전송할 수 있습니다. 또한, [로컬 API](https://developers.kakao.com/docs/latest/ko/local/dev-guide)를 통해 주변 정보를 조회할 수 있고, [KoGPT API](https://developers.kakao.com/docs/latest/ko/kogpt/rest-api)를 이용해서 자연어 처리를 할 수 있습니다.
19+
1920

2021
<br>
2122

2223
## 설치 방법
2324

24-
- Windows: CMD(명령 프롬프트)를 열어 아래 Shell 명령어를 입력
25-
- Mac: Terminal(터미널)을 열어 아래 Shell 명령어를 입력
25+
1. 운영체제(OS)에 따라 아래 중 하나를 선택합니다.
26+
27+
- Windows: CMD(명령 프롬프트) 실행
28+
- Mac: Terminal(터미널) 실행
29+
30+
2. 아래 Shell 명령어를 입력 후 실행합니다.
2631

2732
```bash
28-
pip install PyKakao
33+
pip install PyKakao --upgrade
2934
```
3035

36+
<br>
37+
38+
## REST API 키 발급 방법
39+
40+
PyKakao 라이브러리로 카카오 API를 사용하기 위해서는 [Kakao Developers](https://developers.kakao.com/)에 가입해야 합니다. 가입 후 로그인한 상태에서 상단 메뉴의 [내 애플리케이션](https://developers.kakao.com/console/app)을 선택합니다. '애플리케이션 추가하기'를 눌러 팝업창이 뜨면 '앱 이름', '사업자명'을 입력하고, 운영정책에 동의 후 '저장'을 선택합니다. 추가한 애플리케이션을 선택하면 '앱 키' 아래에 '**REST API 키**'가 생성된 것을 확인할 수 있습니다.
41+
42+
3143
<br>
3244

3345
## 사용 방법
3446

35-
### 카카오 로컬 API 기능 불러오기
47+
### Daum 검색 API
3648

3749
```python
38-
from PyKakao import KakaoLocal
50+
from PyKakao import DaumSearch
3951

40-
# kakao developers에서 발급받은 REST API
41-
service_key = "REST API 키"
52+
# Daum 검색 API 인스턴스 생성
53+
DAUM = DaumSearch(service_key = "REST API 키")
4254

43-
# kakao local API 세션 정의
44-
KL = KakaoLocal(service_key)
45-
```
55+
# 웹문서 검색
56+
df = DAUM.search_web("파이썬", dataframe=True)
4657

47-
### 1. 주소 검색하기
58+
# 동영상 검색
59+
df = DAUM.search_vclip("파이썬", dataframe=True)
4860

49-
```python
50-
# 1. 주소 검색하기
51-
address = "백현동 541"
52-
result = KL.search_address(address)
53-
result
54-
```
61+
# 이미지 검색
62+
df = DAUM.search_image("파이썬", dataframe=True)
5563

56-
```
57-
{'documents': [{'address': {'address_name': '경기 성남시 분당구 백현동 541',
58-
'b_code': '4113511000',
59-
'h_code': '4113565700',
60-
'main_address_no': '541',
61-
'mountain_yn': 'N',
62-
'region_1depth_name': '경기',
63-
'region_2depth_name': '성남시 분당구',
64-
'region_3depth_h_name': '백현동',
65-
'region_3depth_name': '백현동',
66-
'sub_address_no': '',
67-
'x': '127.112037135835',
68-
'y': '37.3926536571583'},
69-
'address_name': '경기 성남시 분당구 백현동 541',
70-
'address_type': 'REGION_ADDR',
71-
'road_address': {'address_name': '경기 성남시 분당구 판교역로146번길 20',
72-
'building_name': '현대백화점 판교점',
73-
'main_building_no': '20',
74-
'region_1depth_name': '경기',
75-
'region_2depth_name': '성남시 분당구',
76-
'region_3depth_name': '백현동',
77-
'road_name': '판교역로146번길',
78-
'sub_building_no': '',
79-
'underground_yn': 'N',
80-
'x': '127.112017130086',
81-
'y': '37.39279369494',
82-
'zone_no': '13529'},
83-
'x': '127.112037135835',
84-
'y': '37.3926536571583'}],
85-
'meta': {'is_end': True, 'pageable_count': 1, 'total_count': 1}}
86-
```
64+
# 블로그 검색
65+
df = DAUM.search_blog("파이썬", dataframe=True)
8766

88-
### 2. 좌표로 행정구역정보 받기
67+
# 책 검색
68+
df = DAUM.search_book("파이썬", dataframe=True)
8969

90-
```python
91-
# 2. 좌표로 행정구역정보 받기
92-
x, y = 127.11198669812507, 37.392627919703536
93-
result = KL.geo_coord2regioncode(x, y)
94-
result
70+
# 카페 검색
71+
df = DAUM.search_cafe("파이썬", dataframe=True)
9572
```
9673

97-
```
98-
{'meta': {'total_count': 2},
99-
'documents': [{'region_type': 'B',
100-
'code': '4113511000',
101-
'address_name': '경기도 성남시 분당구 백현동',
102-
'region_1depth_name': '경기도',
103-
'region_2depth_name': '성남시 분당구',
104-
'region_3depth_name': '백현동',
105-
'region_4depth_name': '',
106-
'x': 127.11087131921613,
107-
'y': 37.388549067217625},
108-
{'region_type': 'H',
109-
'code': '4113565700',
110-
'address_name': '경기도 성남시 분당구 백현동',
111-
'region_1depth_name': '경기도',
112-
'region_2depth_name': '성남시 분당구',
113-
'region_3depth_name': '백현동',
114-
'region_4depth_name': '',
115-
'x': 127.11087131921613,
116-
'y': 37.388549067217625}]}
117-
```
11874

119-
### 3. 좌표로 주소 변환하기
75+
### 메시지 API
12076

12177
```python
122-
# 3. 좌표로 주소 변환하기
123-
x, y = 127.11198669812507, 37.392627919703536
124-
result = KL.geo_coord2address(x, y)
125-
result
126-
```
78+
from PyKakao import Message
12779

128-
```
129-
{'meta': {'total_count': 1},
130-
'documents': [{'road_address': {'address_name': '경기도 성남시 분당구 판교역로146번길 20',
131-
'region_1depth_name': '경기',
132-
'region_2depth_name': '성남시 분당구',
133-
'region_3depth_name': '',
134-
'road_name': '판교역로146번길',
135-
'underground_yn': 'N',
136-
'main_building_no': '20',
137-
'sub_building_no': '',
138-
'building_name': '현대백화점 판교점',
139-
'zone_no': '13529'},
140-
'address': {'address_name': '경기 성남시 분당구 백현동 541',
141-
'region_1depth_name': '경기',
142-
'region_2depth_name': '성남시 분당구',
143-
'region_3depth_name': '백현동',
144-
'mountain_yn': 'N',
145-
'main_address_no': '541',
146-
'sub_address_no': '',
147-
'zip_code': ''}}]}
148-
```
80+
# 메시지 API 인스턴스 생성
81+
MSG = Message(service_key = "REST API 키")
14982

150-
### 4. 좌표계 변환하기
83+
# 카카오 인증코드 발급 URL 생성
84+
auth_url = MSG.get_url_for_generatiing_code()
85+
print(auth_url)
15186

152-
```python
153-
# 4. 좌표계 변환하기
154-
x, y = 127.11198669812507, 37.392627919703536
155-
output_coord = "WTM"
156-
input_coord = "WGS84"
157-
result = KL.geo_transcoord(x, y, output_coord, input_coord)
158-
result
159-
```
87+
# 카카오 인증코드 발급 URL 접속 후 리다이렉트된 URL
88+
url = ""
16089

90+
# 위 URL로 액세스 토큰 추출
91+
access_token = MSG.get_access_token_by_redirected_url(url)
92+
93+
# 액세스 토큰 설정
94+
MSG.set_access_token(access_token)
95+
96+
# 텍스트 메시지 전송
97+
text = "텍스트 영역입니다. 최대 200자 표시 가능합니다."
98+
link = {
99+
"web_url": "https://developers.kakao.com",
100+
"mobile_web_url": "https://developers.kakao.com"
101+
}
102+
button_title = "바로 확인"
103+
104+
MSG.send_text(text=text, link={}, button_title=button_title)
161105
```
162-
{'meta': {'total_count': 1},
163-
'documents': [{'x': 209916.63703445005, 'y': 432593.2082232768}]}
164-
```
165106

166-
### 5. 키워드로 장소 검색하기
107+
108+
### 로컬 API
167109

168110
```python
169-
# 5. 키워드로 장소 검색하기
170-
query = "스타벅스"
171-
category_group_code = "CE7" # 카페
172-
x, y = 127.11198669812507, 37.392627919703536 # 중심 좌표
173-
radius = 500 # 반경거리(m)
174-
175-
result = KL.search_keyword(query, category_group_code, x, y, radius)
176-
result
177-
```
111+
from PyKakao import Local
178112

179-
```
180-
{'documents': [{'address_name': '경기 성남시 분당구 백현동 537',
181-
'category_group_code': 'CE7',
182-
'category_group_name': '카페',
183-
'category_name': '음식점 > 카페 > 커피전문점 > 스타벅스',
184-
'distance': '231',
185-
'id': '382618195',
186-
'phone': '1522-3232',
187-
'place_name': '스타벅스 판교알파돔타워',
188-
'place_url': 'http://place.map.kakao.com/382618195',
189-
'road_address_name': '경기 성남시 분당구 판교역로 152',
190-
'x': '127.110364770136',
191-
'y': '37.3942620223016'},
192-
{'address_name': '경기 성남시 분당구 백현동 531',
193-
'category_group_code': 'CE7',
194-
'category_group_name': '카페',
195-
'category_name': '음식점 > 카페 > 커피전문점 > 스타벅스',
196-
'distance': '309',
197-
'id': '27528340',
198-
'phone': '1522-3232',
199-
'place_name': '스타벅스 판교알파돔시티점',
200-
'place_url': 'http://place.map.kakao.com/27528340',
201-
'road_address_name': '경기 성남시 분당구 대왕판교로606번길 10',
202-
'x': '127.109353202048',
203-
'y': '37.3944611869007'}],
204-
'meta': {'is_end': True,
205-
'pageable_count': 2,
206-
'same_name': {'keyword': '스타벅스', 'region': [], 'selected_region': ''},
207-
'total_count': 2}}
113+
# 로컬 API 인스턴스 생성
114+
LOCAL = Local(service_key = "REST API 키")
115+
116+
# 주소 검색하기
117+
df = LOCAL.search_address("백현동", dataframe=True)
118+
119+
# 좌표로 행정구역정보 받기
120+
df = LOCAL.geo_coord2regioncode(127.110871319215, 37.3885490672089, dataframe=True)
121+
122+
# 좌표로 주소 변환하기
123+
df = LOCAL.geo_coord2address(127.110871319215, 37.3885490672089, dataframe=True)
124+
125+
# 좌표계 변환하기
126+
df = LOCAL.geo_transcoord(127.110871319215, 37.3885490672089, "WCONGNAMUL", dataframe=True)
127+
128+
# 키워드로 장소 검색하기
129+
df = LOCAL.search_keyword("판교역", dataframe=True)
130+
131+
# 카테고리로 장소 검색하기
132+
df = LOCAL.search_category("MT1", x=127.110871319215, y=37.3885490672089, radius=500, dataframe=True)
208133
```
209134

210-
### 6. 카테고리로 장소 검색하기
135+
136+
### KoGPT API
211137

212138
```python
213-
# 6. 카테고리로 장소 검색하기
214-
category_group_code = "CE7" # 카페
215-
x, y = 127.11198669812507, 37.392627919703536 # 중심 좌표
216-
radius = 50 # 반경거리(m)
139+
from PyKako import KoGPT
217140

218-
result = KL.search_category(category_group_code, x, y, radius)
219-
result
220-
```
141+
# KoGPT API 인스턴스 생성
142+
GPT = KoGPT(service_key = "REST API 키")
221143

144+
# 다음 문장 만들기
145+
prompt = "인간처럼 생각하고, 행동하는 '지능'을 통해 인류가 이제까지 풀지 못했던"
146+
max_tokens = 64
147+
result = GPT.generate(prompt, max_tokens, temperature=0.7, top_p=0.8)
222148
```
223-
{'documents': [{'address_name': '경기 성남시 분당구 백현동 541',
224-
'category_group_code': 'CE7',
225-
'category_group_name': '카페',
226-
'category_name': '음식점 > 카페',
227-
'distance': '4',
228-
'id': '1513310698',
229-
'phone': '031-5170-1354',
230-
'place_name': '메종키츠네카페',
231-
'place_url': 'http://place.map.kakao.com/1513310698',
232-
'road_address_name': '경기 성남시 분당구 판교역로146번길 20',
233-
'x': '127.11195356152',
234-
'y': '37.3926486004944'},
235-
{'address_name': '경기 성남시 분당구 백현동 541',
236-
'category_group_code': 'CE7',
237-
'category_group_name': '카페',
238-
'category_name': '음식점 > 카페 > 커피전문점',
239-
'distance': '20',
240-
'id': '768523904',
241-
'phone': '031-5170-3259',
242-
'place_name': '카멜커피',
243-
'place_url': 'http://place.map.kakao.com/768523904',
244-
'road_address_name': '경기 성남시 분당구 판교역로146번길 20',
245-
'x': '127.11208816176',
246-
'y': '37.3927935375378'},
247-
{'address_name': '경기 성남시 분당구 백현동 541',
248-
'x': '127.112029412303',
249-
'y': '37.3927755727699'}],
250-
'meta': {'is_end': False,
251-
'pageable_count': 32,
252-
'same_name': None,
253-
'total_count': 32}}
254-
```
149+
255150

256151
<br>
257152

0 commit comments

Comments
 (0)