PART 1 - 트위치 API [트위치 방송 알림]

항상 트위치를 보면서 알림이 늦게와서 따로 받아오는 앱을 제작해보고자 했습니다.

 

이를 위해서 twitch api를 연동하여 내가 받기를 원하는 스트리머의 방송 상태 정보를 받아옵니다.

방송 알림은 24시간 알림이 되어야하므로 별도의 서버에 올려서 24시간 구동을 합니다. -> azure 사용

어플이 실행중이지 않더라도 방송이 시작되면 알림이 와야합니다. -> pendingIntent와 fcm 사용

 

1. 트위치 등록하기 

 

트위치 개발자 콘솔 (https://dev.twitch.tv/console)에 접속하여 등록한다.

 

2. 응용 프로그램 등록

3. 토큰 발급 받기

import requests
import json
req = requests.post(f'https://id.twitch.tv/oauth2/token?client_id={사용자_id}&client_secret={시크릿코드}&grant_type=client_credentials')
print(req.text)

위의 코드를 실행하면, accesstoken 값과 , 만료기간, 토큰 타입이 나온다.  저장해주세요.

 

4. live 상태인지 확인

import requests
access_token = 발급받은 토큰
client_id = 발급 아이디
headers = {"Client-Id":client_id , "Authorization" : f"Bearer {access_token}"}
req = requests.get('https://api.twitch.tv/helix/streams?user_login=유저 아이디',headers=headers)
print(req.text)

있는 사용자면은 정상적으로 출력이 된다.

라이브가 아닌 사용자는 빈 리스트 형태로 출력이 된다. 

 

5초 간격으로 반복 실행 코드

import requests
from apscheduler.schedulers.background import BlockingScheduler

headers = {"Client-Id":client_id , "Authorization" : f"Bearer {access_token}"}

def job():
    req = requests.get('https://api.twitch.tv/helix/streams?user_login=woowakgood',headers=headers)
    print(req.text)

def main():
    sched = BlockingScheduler(timezone='Asia/Seoul')
    sched.add_job(job,'interval',seconds=5)
    sched.start()

if __name__ == "__main__":
    main()

part2에서는 이를 통해 생방송시 알림을 보내겠습니다.