Python/파이썬 웹 크롤러

파이썬(Python): 네이버 밴드(Band) API

컴닥 2021. 6. 20. 12:21
반응형

[개발자]

https://band.us/에 접속해 하단의 개발자 메뉴에 들어간다. 

 

[OPEN API]

 

[서비스 등록]

 

[내 서비스 등록]

 

[서비스 등록]

Redirect URI는 아무 거나 넣어도... 

 

[서비스 확인]

등록을 마치면 내 서비스 목록에서 서비스를 확인할 수 있다. 

 

[Access Token]

서비스를 클릭하면 자세한 정보를 알 수 있다. 
밴드 API에 접근하기 위해서는 Access Token이 필요하다. 

 

[밴드 목록 조회]

내가 속한 밴드에 접근하기 위해서는 밴드 키가 필요하다. 
밴드 키를 알기 위해서는 밴드 목록을 조회해야 한다. 
자세한 것은 아래 문서에 잘 나와 있다. 
https://developers.band.us/develop/guide/api/get_bands

# 파이썬 기본 라이브러리 urllib를 사용한 코드

import json
from pprint import pprint
from urllib import request

token = '*Access Token*'


def get_bands():
    url = f'https://openapi.band.us/v2.1/bands?access_token={token}'
    req = request.Request(url)
    res = request.urlopen(req)
    decoded = res.read().decode("utf8")
    json_dict = json.loads(decoded)
    return json_dict


pprint(get_bands())
# 결과
{'result_code': 1,
 'result_data': {'bands': [{'band_key': '*밴드 키*',
                            'cover': '*커버 주소*',
                            'member_count': 1,
                            'name': '*밴드 이름*'},]}}

GET 방식의 API들은 위의 코드를 형식에 맞춰 약간만 변형하면 된다. 

[글 쓰기]

POST 방식을 알아보자. 
위 코드에 다음 코드를 추가하자. 

from urllib import request, parse


def create_post(band_key, content, do_push=True):
    url = 'https://openapi.band.us/v2.2/band/post/create'
    req = request.Request(url)
    data = {'access_token': token, 'band_key': band_key, 'content': content, 'do_push': do_push}
    post_data = parse.urlencode(data).encode('UTF-8')
    res = request.urlopen(req, post_data)
    decoded = res.read().decode('UTF-8')
    json_dict = json.loads(decoded)
    return json_dict


pprint(create_post('*band_key*', 'TEST'))
# 결과

{'result_code': 1,
 'result_data': {'band_key': '**',
                 'post_key': '**'}}

자세한 것은 다음 문서에... 
https://developers.band.us/develop/guide/api/write_post

 

requests

외부 라이브러리인 requests를 이용하는게 더 편하다. 

import json
import requests

token = '*Access Token*'


def get_bands():
    url = f'https://openapi.band.us/v2.1/bands?access_token={token}'
    with requests.get(url) as resp:
        json_dict = json.loads(resp.text)
        return json_dict


def create_post(band_key, content, do_push=True):
    url = 'https://openapi.band.us/v2.2/band/post/create'
    data = {'access_token': token, 'band_key': band_key, 'content': content, 'do_push': do_push}
    with requests.post(url, data) as resp:
        json_dict = json.loads(resp.text)
        return json_dict

 

참고로 겟과 포스트의 차이는...
https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/

 

반응형