PART 3 - PYTHON 파일을 AZURE에 올리기

PART 1에서 만든 파일을 기반으로 FCM으로 메세지를 보내는 작업을 추가로 하겠습니다.

 

import requests
import json
from apscheduler.schedulers.background import BlockingScheduler
from pyfcm import FCMNotification


APIKEY = "your api key"
push_service = FCMNotification(APIKEY)

access_token = "your access_token"
client_id = 'your_client_id'
headers = {"Client-Id":client_id , "Authorization" : f"Bearer {access_token}"}
status = {"우왁굳" : False, "비챤_" : False, "아이네_" : False, "징버거" : False, "주르르" : False, "릴파_" : False, "고세구___": False}
topic = {"우왁굳" : "wak", "비챤_": "viichan", "아이네_" : "ine", "징버거" : "burger", "주르르" : "cotton", "릴파_" : "lilpa", "고세구___": "gosegu"}
req = requests.get('https://api.twitch.tv/helix/streams?user_login=viichan6&user_login=woowakgood&user_login=vo_ine&user_login=jingburger&user_login=lilpaaaaaa&user_login=gosegugosegu',headers=headers)
req_text = json.loads(req.text)
live_length = len(req_text.get('data'))
req_data = req_text.get('data')

def job():
    # 매번 받아와야함
    req = requests.get('https://api.twitch.tv/helix/streams?user_login=viichan6&user_login=woowakgood&user_login=vo_ine&user_login=jingburger&user_login=lilpaaaaaa&user_login=gosegugosegu',headers=headers)
    req_text = json.loads(req.text)
    live_length = len(req_text.get('data'))
    req_data = req_text.get('data')

    live = []
    for i in range(live_length):
        name = req_data[i]['user_name']
        if status[name] is False:
            print(f'{name}뱅온')
            sendMessage(name,"뱅온",topic[name])
            status[name] = True
            live.append(name)
        elif status[name]:
            live.append(name)

    for k,v in status.items():
        if v and k not in live:
            print(f'{k} 뱅종')
            sendMessage(name,"뱅종",topic[name])
            status[k] = False

def sendMessage(body, title,topic_name):
    data_message = {
        "body" : body,
        "title" : title
    }
    # 알림 보내기
    result = push_service.notify_topic_subscribers(topic_name=topic_name,data_message=data_message)
    print(result)

def main():
    # 처음 설정 지금 방송중인거 다 상태값 true 로 해놓기
    for i in range(live_length):
        name = req_data[i]['user_name']
        if status[name] is False:
            status[name] = True

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

if __name__ == "__main__":
    main()

 

이렇게 만든 파일을 AZURE에 올립니다.

 

가장먼저 가상 머신을 만들어줍니다

사용자 이름과 암호를 기억해주세요 나중에 사용합니다.

 

생성을 완료했으면 리소스에 들어가서 공용IP주소를 저장해둡니다. 

 

Putty를 통해 우분투 서버와 연결을 해줍니다

Host Name에 저장해둔 공용 ip주소를 입력합니다.

아까 저장해둔 이름과 암호를 입력합니다.

sudo apt install python3-pip <- pip 설치

pip install apscheduler

pip install pyfcm 

 

이후에 window에 있는 python 파일을 우분투 서버로 옮겨야 합니다.

 

powershell을 키고

전송하고자 하는 파일이 있는 위치로 이동합니다.

scp [보내고자 하는 파일명] [아까 저장한 파일]@[ip 주소]:

이후에 우분투 서버에서 잘 받았는지 ls로 확인하고 실행하면 됩니다.

 

결과 방송알림 잘옵니다.. 그래도 방송 키고 약 5~10초뒤에 알림이 옵니다.. 흠..

 

다음에는 방송제목 변경 알림이나 다양한 기능 추가하고 ui도 꾸며보겠습니다