파이썬/파이썬(python) 중급

[38-1 파이썬] 구글시트 이용해서 운동 기록 남기기

Olivia-BlackCherry 2022. 10. 2. 07:11

최종 결과물

 

1단계 구글 스프레드 시트 준비하기

링크로 들어가서 구글 스프레드 시트에 구글 계정으로 로그인하여,

사본을 만들어 저장한다.

----> 클릭

 

 

 

2단계 뉴트리셔닉스 API 웹사이트에서 API key 얻기

회원 가입 후, 인증 메일 확인할 것(verify)

APP ID와 API Key 확인하고

파이참에 저장하기

(환경 변수 저장도 가능)

 

 

 

3단계 어떤 API인지 확인하고, endpoint 저장하기

내가 한 운동을 입력했을 때, 

그 운동이 얼마 만큼의 칼로리를 소비하는지 등을 알려주는 데이터 가져오기

데모(demo) 사이트---->클릭 

\

공식 문서 사이트 ----> 클릭

 

endpoint  주소 얻기

https://trackapi.nutritionix.com/v2/natural/exercise

예시 깃허브 ---->클릭

 

import requests
APIKEY= "API key입력하기"
APPID="아이디 입력하기"
exercise_endpoint = "https://trackapi.nutritionix.com/v2/natural/exercise"

headers={
    "x-app-id":APPID,
    "x-app-key":APIKEY,
    "Content-Type": "application/json"
    
response = requests.post(url=exercise_endpoint, headers=headers, json=parameters)

 

 

 

4단계 Sheety 사이트에 로그인하고 구글 시트와 연결하기

sheety 사이트 ---> 클릭

제일 처음 구글시트에서 로그인했던 구글 계정과 똑같아야 한다.

프로젝트> 뉴 프로젝트> from google sheet

 

아까 만들었던 구글 시트 url을 넣는다.

API endpoint를 받는다.

https://api.sheety.co/25e3d9f314ce322eded8665f26131f5f/oliviaWorkouts/workouts

 

 

 

5단계 운동 칼로리 데이터를 구글시트에 기록 남기기

Date Time Exercise Duration Calories 열에 데이터 기록되도록 만든다.

1) 파라미터?

sheety API 사용할 때 파라미터 적을 때 유의사항

   1. 파라미터는 소문자를 적는다.

   2. 파라미터를 적을 때 sheety endpoint의 마지막에 오는 단어를 키 값으로 꼭!!! 넣어야 한다.

https://api.sheety.co/25e3d9f314ce322eded8665f26131f5f/oliviaWorkouts/workouts

위의 endpoint의 마지막 단어가 workouts인데, 여기서 s를 뺀 workout이 파라미터의 키값으로 시작해야 하는 것이다.

sheet_input = {
    "workout":{
        "date": date,
        "time": time,
        "exercise":exercise['user_input'].title(),
        "duration": exercise['duration_min'],
        "calories": exercise['nf_calories']
    }

 

2) datetime 모듈로 date, time기록하기

import datetime
today = datetime.datetime.now()
date = today.strftime("%Y/%m/%d")
time = today.strftime("%H:%M:%S")

 

3) 인증키

인증키가 없으면 누구나 내 구글시트에 접근하여 읽고 쓸 수 있다. 

나의 endpoint를 보호하려면 authentication인증을 활성화 해야한다.

방법은 두 가지이다.

 

첫 번째, Basic 인증

두 번째, Bearer 인증

basic인증과 똑같은 절차로 생성하면 되는데, 단지 다른 것은 username과 password 대신 암호화된 토큰을 이용한다는 것이다.

관련 문서 ---> 클릭

 

post_endpoint = "https://api.sheety.co/25e3d9caeded8665f26131f5f/oliviaWorkouts/workouts"


result=response.json()['exercises']
headers = {"Authorization": "Bearer 본인의 인증토큰을 입력하세요"}
for exercise in result:
    sheet_input = {
        "workout":{
            "date": date,
            "time": time,
            "exercise":exercise['user_input'].title(),
            "duration": exercise['duration_min'],
            "calories": exercise['nf_calories']
        }
    }
    print(sheet_input)
    post_response = requests.post(url = post_endpoint, headers=headers, json =sheet_input)
    print(post_response.text)