本ページの概要
PythonでFitbitデータを取得する基本的な方法を学習します。具体的には,(1)Python実行環境であるAnacondaのインストール,(2)Fitbitデータ取得用開発環境のダウンロード,(3)Fitbitデベロッパーサイトでのテストアプリケーションの作成,(4)サンプルコードの実行,を学びます。
Anacondaのインストール
Python実行環境である、Anacondaをインストールする。Anacondaをインストールしたら,EnvironmentからFITBITを作成し,ターミナルを開く。さらに,下記サイトから,開発環境を,自分のマシンの開発用ディレクトリ(C:\FITBIT)にコピーしてくる。
GitHub – orcasgit/python-fitbit: Fitbit API Python Client Implementation
AnacondaのTerminalで,下記コマンドを実行する。
pip install -r requirements/base.txt
pip install cherrypy
Fitbitアプリケーションの用意
FitbitDevelopperサイトの,「Manage>Register APP」からアプリケーション情報を入力する。URLは全て「http://kodamalab.sakura.ne.jp/wordpress/?p=46853」で良い。RedirectURLは「http://127.0.0.1:8080/」に設定する。登録後に表示される,「OAuth 2.0 Client ID」と「Client Secret」が必要になる。




PythonでFitbitデータを取得する
下記のプログラム「fitbitTest.py」をエディタで開発ディレクトリに作成し,プログラムのUSER_ID ,CLIENT_SECRET ,DATEをセットします。ターミナル上で,
python fitbitTest.py
と入力し,実行する。正常に動作すると,
「STEP2025-10-15.csv」「HR_2025-10-15.csv」「CALO2025-10-15.csv」
などのファイルが開発ディレクトリに作成される。
#fitbitTest.py
import sys
import fitbit
import gather_keys_oauth2 as Oauth2
print('Hello FitbitAPP3')
USER_ID = "hogehoge"
CLIENT_SECRET = "hogehoge"
DATE = "2025-10-15" # 取得したい日付
server = Oauth2.OAuth2Server(USER_ID, CLIENT_SECRET)
server.browser_authorize()
ACCESS_TOKEN = str(server.fitbit.client.session.token['access_token'])
REFRESH_TOKEN = str(server.fitbit.client.session.token['refresh_token'])
#print(ACCESS_TOKEN) print('\n')
#print(REFRESH_TOKEN)print('\n')
"""Authorization"""
auth2_client = fitbit.Fitbit(USER_ID, CLIENT_SECRET, oauth2=True, access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
"""Getting data"""
#print('Getting data\n')
#fitbit_stats = auth2_client.intraday_time_series('activities/heart', DATE, detail_level='1min')
##################################################
fitbit_stats = auth2_client.intraday_time_series('activities/heart', DATE, detail_level='1min')
stats = fitbit_stats['activities-heart-intraday']['dataset']
OUTPUT_FILE = "HR_%s.csv" % DATE
csv_file = open(OUTPUT_FILE, 'w')
for var in range(0, len(stats)):
csv_file.write(stats[var]['time'])
csv_file.write(",")
csv_file.write(str(stats[var]['value']))
csv_file.write("\n")
csv_file.close()
##################################################
fitbit_stats = auth2_client.intraday_time_series('activities/steps', DATE, detail_level='1min')
stats = fitbit_stats['activities-steps-intraday']['dataset']
OUTPUT_FILE = "STEP%s.csv" % DATE
csv_file = open(OUTPUT_FILE, 'w')
for var in range(0, len(stats)):
csv_file.write(stats[var]['time'])
csv_file.write(",")
csv_file.write(str(stats[var]['value']))
csv_file.write("\n")
csv_file.close()
##################################################
fitbit_stats = auth2_client.intraday_time_series('activities/calories', DATE, detail_level='1min')
stats = fitbit_stats['activities-calories-intraday']['dataset']
OUTPUT_FILE = "CALO%s.csv" % DATE
csv_file = open(OUTPUT_FILE, 'w')
for var in range(0, len(stats)):
csv_file.write(stats[var]['time'])
csv_file.write(",")
csv_file.write(str(stats[var]['value']))
csv_file.write("\n")
csv_file.close()