본문 바로가기

Python/파이썬 프로젝트

카카오 api 토큰 발급

1. 토큰 발급받기

import requests
import json

url = 'https://kauth.kakao.com/oauth/token'
rest_api_key = '자신의 REST API 키'
redirect_uri = 'https://example.com/oauth'
authorize_code = '-7sSp7Xxqw2QAew7-rctWJtZT4ycERTzQM_nylg8bX0OxFcgGegkA9jaVvPLEVOX_FrkxQo9dRoAAAF2qFCIsA'

data = {
    'grant_type':'authorization_code',
    'client_id':rest_api_key,
    'redirect_uri':redirect_uri,
    'code': authorize_code,
    }

response = requests.post(url, data=data)
tokens = response.json()
print(tokens)

# json 저장
with open("kakao_code.json","w") as fp:
    json.dump(tokens, fp)

 

 

2. 카카오 메시지 보내기

import requests
import json


with open("kakao_code.json","r") as fp:
    tokens = json.load(fp)

url="https://kapi.kakao.com/v2/api/talk/memo/default/send"

# kapi.kakao.com/v2/api/talk/memo/default/send 

headers={
    "Authorization" : "Bearer " + tokens["access_token"]
}

data={
    "template_object": json.dumps({
        "object_type":"text",
        "text":"Hello, world!",
        "link":{
            "web_url":"www.naver.com"
        }
    })
}

response = requests.post(url, headers=headers, data=data)
response.status_code

 

 

3. 카카오톡 500번 반복문으로 보내기

import requests
import json

숫자 = 1
with open("kakao_code.json","r") as fp:
    tokens = json.load(fp)

url="https://kapi.kakao.com/v2/api/talk/memo/default/send"

# kapi.kakao.com/v2/api/talk/memo/default/send

headers={
    "Authorization" : "Bearer " + tokens["access_token"]
}


for ii in range(500) :
    data = {
        "template_object": json.dumps({
            "object_type": "text",
            "text": '%d번째 너에 경고한다. 정신차려' % (숫자),
            "link": {
                "web_url": "www.naver.com"
            }
        })
    }
    response = requests.post(url, headers=headers, data=data)
    response.status_code
    숫자 +=1

 

 

4. 확진자 수 카카오 메시지 보내기 코드

import requests
import json
from bs4 import BeautifulSoup

중대본url = "http://ncov.mohw.go.kr/bdBoardList_Real.do?brdId=1&brdGubun=11&ncvContSeq=&contSeq=&board_id=&gubun="
covid = requests.get(중대본url)
soup = BeautifulSoup(covid.text, "html.parser")


print(soup)
### 3. 뷰리플 스프에서 원하는 정보만 골라오기
from pprint import pprint
tr정보 = soup.find_all("tr")
pprint(tr정보[25])

확진자 = tr정보[25].find_all('td')
print(확진자[2])
확진자 = str(확진자[2])
확진자 = 확진자.replace("<td>", "")
확진자 = 확진자.replace("</td>", "")
print(확진자)

from datetime import datetime
print(datetime.today().month, '월',datetime.today().day,
      '일 확진자 : ', 확진자, '명 입니다.')

with open("kakao_code.json","r") as fp:
    tokens = json.load(fp)

url="https://kapi.kakao.com/v2/api/talk/memo/default/send"

# kapi.kakao.com/v2/api/talk/memo/default/send

headers={
    "Authorization" : "Bearer " + tokens["access_token"]
}

data={
    "template_object": json.dumps({
        "object_type":"text",
        "text": '오늘 확진자 수 : %s 명이다.'%(확진자),
        "link":{
            "web_url":"www.naver.com"
        }
    })
}

response = requests.post(url, headers=headers, data=data)
response.status_code

 

 

5. 급식정보 카카오톡으로 보내기

import requests
import json
from bs4 import BeautifulSoup
import datetime               # 현재 날짜 알아오는 패키지
import re

### 2. 오늘 날짜 가져오기
현재 = str(datetime.datetime.now())
print(현재)
오늘 = 현재[:4] + 현재[5:7] + 현재[8:10]  # 데이터 슬라이스
print(오늘)

### 3. 급식정보 크롤링
급식정보 = requests.get("https://stu.sen.go.kr/sts_sci_md01_001.do?schulCode=B100000579&schulCrseScCode=4&schulKndScCode=04&schMmealScCode=2&schYmd="+오늘)
print(급식정보)

### 4. 뷰티플 스프에서 타겟 정보 얻기
스프 = BeautifulSoup(급식정보.text, "html.parser")
tr들 = 스프.find_all("tr")
#print(tr들)
타겟tr = tr들[2]
#print(타겟tr)
td들 = 타겟tr.find_all("td")
#print(td들[5])

요일 = datetime.datetime.today().weekday()
if 요일 == 0 : 타겟td = td들[1]    #월
elif 요일 == 1 : 타겟td = td들[2]  #화
elif 요일 == 2 : 타겟td = td들[3]  #수
elif 요일 == 3 : 타겟td = td들[4]  #목
elif 요일 == 4 : 타겟td = td들[5]  #금

print(타겟td)


### 5. 타겟정보 데이터 클리닝


타겟td = str(타겟td)
타겟td = 타겟td.replace('<td class="textC">', '')
타겟td = 타겟td.replace('</td>', '')
타겟td = 타겟td.replace('<br/>', '\n')
타겟td = 타겟td.replace('.', '')
타겟td = re.sub(r"\d", "", 타겟td) # 숫자(\d) 제거
print(타겟td)

with open("kakao_code.json","r") as fp:
    tokens = json.load(fp)

url="https://kapi.kakao.com/v2/api/talk/memo/default/send"

# kapi.kakao.com/v2/api/talk/memo/default/send

headers={
    "Authorization" : "Bearer " + tokens["access_token"]
}

data={
    "template_object": json.dumps({
        "object_type":"text",
        "text":"<오늘의 급식정보>\n%s"%(타겟td),
        "link":{
            "web_url":"www.naver.com"
        }
    })
}

response = requests.post(url, headers=headers, data=data)
response.status_code

 

 

6. 카카오톡 시간 예약 걸기

import requests
import json
from bs4 import BeautifulSoup
import datetime               # 현재 날짜 알아오는 패키지
import re
import time

while(1) :
    ### 2. 오늘 날짜 가져오기
    현재 = str(datetime.datetime.now())
    print(현재)
    오늘 = 현재[:4] + 현재[5:7] + 현재[8:10]  # 데이터 슬라이스
    #print(오늘)
    시간 = 현재[11:13]
    분 = 현재[14:16]
    시간 = int(시간)
    분 = int(분)
    print(시간)
    print(분)


    ### 3. 급식정보 크롤링
    급식정보 = requests.get("https://stu.sen.go.kr/sts_sci_md01_001.do?schulCode=B100000579&schulCrseScCode=4&schulKndScCode=04&schMmealScCode=2&schYmd="+오늘)
    #print(급식정보)

    ### 4. 뷰티플 스프에서 타겟 정보 얻기
    스프 = BeautifulSoup(급식정보.text, "html.parser")
    tr들 = 스프.find_all("tr")
    #print(tr들)
    타겟tr = tr들[2]
    #print(타겟tr)
    td들 = 타겟tr.find_all("td")
    #print(td들[5])

    요일 = datetime.datetime.today().weekday()
    if 요일 == 0 : 타겟td = td들[1]    #월
    elif 요일 == 1 : 타겟td = td들[2]  #화
    elif 요일 == 2 : 타겟td = td들[3]  #수
    elif 요일 == 3 : 타겟td = td들[4]  #목
    elif 요일 == 4 : 타겟td = td들[5]  #금

    #print(타겟td)


    ### 5. 타겟정보 데이터 클리닝


    타겟td = str(타겟td)
    타겟td = 타겟td.replace('<td class="textC">', '')
    타겟td = 타겟td.replace('</td>', '')
    타겟td = 타겟td.replace('<br/>', '\n')
    타겟td = 타겟td.replace('.', '')
    타겟td = re.sub(r"\d", "", 타겟td) # 숫자(\d) 제거
    #print(타겟td)

    with open("kakao_code.json","r") as fp:
        tokens = json.load(fp)

    url="https://kapi.kakao.com/v2/api/talk/memo/default/send"

    # kapi.kakao.com/v2/api/talk/memo/default/send

    headers={
        "Authorization" : "Bearer " + tokens["access_token"]
    }

    data={
        "template_object": json.dumps({
            "object_type":"text",
            "text":"<오늘의 급식정보>\n%s"%(타겟td),
            "link":{
                "web_url":"www.naver.com"
            }
        })
    }
    if 시간 == 15 and 분 == 4 :
        response = requests.post(url, headers=headers, data=data)
        response.status_code
        time.sleep(86000)

    time.sleep(1)