크롤러 프로토타입 모듈 - Twitch 크리에이터 id 가져오기

prj008

Sat, 16 Nov 2019

크롤러 프로토타입 모듈

  • 우선적으로 크롤러 프로토타입 모듈을 만들어 어떠한 데이터들이 어떻게 받아지는지를 알아야 합니다.
  • 이전 프로젝트 때 아프리카tv와 트위치는 api로 데이터를 받아 왔습니다.
  • 이번에는 리팩토링을 하면서 각각을 OOP에 입각하여 만드려고 하겠습니다.

Twitch 크리에이터 Login ID로 Twitch id 받아오기

  • Twitch에서는 크리에이터 Login ID와 Twitch api에서 사용하는 id가 다르므로 Login ID를 통해 Twitch API 에서 사용하는 id를 받아와야 한다.
import requests
from clientID import client_id 
# 나의 Twitch Client ID가 있는곳에서 Client ID를 받아 온다.
from http_data import url, headers 
# http_data는 Twitch API를 받아오는 기본 주소와 header값이 저장되어 있다.
from twitch_bj_name_data import bj_names_datas
# 크리에이터의 이름이 list로 저장된 파일에서 크리에이터의 Login ID를 가져온다.

def get_user_id(names = bj_names_datas): 
#매개변수에 기본값을 정의하고 싶을 경우 '='을 사용하여 기본값을 정해준다.
    bj_ids = []
    if isinstance(names, list): 
    # 인자가 list인지 아닌지 판별하여 list 이면 반복문을 실행한다.
        for name in names:
            r = requests.get(url + 'users?login=' + name, headers=headers)
            bj_id = r.json()
            # print(name) 반복문이 제대로 실행 되고 있는지 확인하고 싶다면 주석을 제거
            if bj_id == {'data': []} or bj_id is None:
            # 받아온 데이터가 없을 경우 'none'을 입력한다. 추후에는 'none'인 크리에이터는 list에서도 삭제해야 할듯 하다
                bj_ids.append('none')
            else:
                id = bj_id['data'][0]['id']
                bj_ids.append(id)
    else:
    # 인자가 list가 아니라 개별 Login id가 들어올 경우 하나만 처리해준다.
        r = requests.get(url + 'users?login=' + names, headers=headers)
        bj_id = r.json()
        if bj_id == {'data': []} or bj_id is None:
            pass # if문에서 아무것도 안 하고 싶을 경우 pass를 사용한다.
        else:
            id = bj_id['data'][0]['id']
            bj_ids.append(id)
    print(bj_ids) # 저장된 id를 본다.




get_user_id()
  • 크리에이터의 Login ID를 python script로 저장했지만 DB에 저장을 해야 하나?
  • ID도 DB에 저장 아니면 script로 저장?
if bj_id == {'data': []} or bj_id is None:
            pass # if문에서 아무것도 안 하고 싶을 경우 pass를 사용한다.
        else:
            id = bj_id['data'][0]['id']
            bj_ids.append(id)
  • 이 부분이 반복되므로 모듈화 시키는 것을 생각해 보기!!
Loading...
Upati Sariputa

Upati Sariputa

  • React.js, Node.js, Django
  • 아직 블로그가 완벽하지 않습니다.