ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬(Python): 네이버 밴드(Band) API
    Python/파이썬 웹 크롤러 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/

     

    반응형
Designed by Tistory.