7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

筋トレ系APIの探し方&使ってみた

Last updated at Posted at 2020-12-05

筋トレ Advent Calendar 2020という文字を見つけて何か書きたくなったので、無理やりネタをみつけてきました!

フィットネス系のパブリックデータかAPIが公開されてれば、それ使ってみるのありかな〜と思ってググったらいいの発見。

ProgrammableWebというAPIの情報をあつめたサイトにフィットネスAPIを集約しているページが!
https://www.programmableweb.com/category/fitness/api
(2020/12/05時点で登録API数:119)

ウェアラブルデバイスで集積した情報を扱ったり、サイトにヘルスケア情報などを登録するものからいろいろあって楽しそうです。

使ってみる

数あるAPIの中から適当に wger Workout Manager REST API というのに目をつけたので使ってみます。

Wger Workout Manager is an open source web application for tracking your fitness and managing your exercises.

準備

登録

まずWger Workout Manager自体にユーザー登録します。

Register.png

適当に入力して登録します(すみません本当はちゃんと入力しました)

APIキーの発行

登録後にREST APIのページの「Generate API KEY」を押すと発行できます。
1回エラーみたいなのが出たけど、もう1回やったらいけました。

API_key.png

有効なAPIキーはユーザーあたり1つのように見えました。
「Delete current API key and generate new one」すると現在のキーを破棄し新しいキーを発行することができます。

(オプション)ウェブの画面から何かしら入力

Add_weight_entry.png

ワークアウト履歴やスケジュールを登録する画面もありましたが、使い方がよくわからなかったので体重だけ登録しました。

APIを叩く

Example with curl

APIキー発行時に提示されたcurlをとりあえず叩きます。

$ curl -X GET https://wger.de/api/v2/workout/ -H 'Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

{"count":1,"next":null,"previous":null,"results":[{"id":xxxxxx,"creation_date":"2020-12-05","comment":""}]}

なんか返ってきたんでたぶんいけてる。

一覧

https://wger.de/api/v2/
ルートのエンドポイントを開くと、一覧が表示されて便利。ブラウザで開くリンクはさっき発行したAPIキーが適用されているようで、リンクたたけば結果が表示される。

REST_API_-_Api_Root.png

weightentry(体重の履歴)

GET


{
    "count": 1,
    "next": null
    "previous": null,
    "results": [
        {
            "id": 000000,
            "user": 111111,
            "date": "2020-12-05",
            "weight": "81.50"
        }
    ]
}

さっき入力した体重が表示されてしまいました。恥ずかしいです。

POST

APIから体重を追記してみます。使い慣れているPostmanから打ってみます。

ヘッダこんな感じで入れて
Postman.png

覚えているいちばん昔の自分の体重を入れて打ってみます。

Postman_と_codeseries-serverless-tutorial.png

Postman.png

怒られました。体重30kg以上じゃないとダメらしいです。

仕方ないので測ってないけど適当に最近の体重を打ってみます。

Postman.png

Postman.png

いけました!

GETしてみると反映されています
https://wger.de/api/v2/weightentry/

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 222222,
            "user": 111111,
            "date": "2020-12-01",
            "weight": "81.75"
        },
        {
            "id": 000000,
            "user": 111111,
            "date": "2020-12-05",
            "weight": "81.50"
        }
    ]
}

exercise(エクササイズ情報)

さっきはユーザーに紐づいた情報をとってみましたが、提供されているエクササイズデータを取得してみます。

{
    "count": 409,
    "next": "https://wger.de/api/v2/exercise/?limit=20&offset=20",
    "previous": null,
    "results": [
        {
            "id": 345,
            "license_author": "deusinvictus",
            "status": "2",
            "description": "
Two Handed Russian Style Kettlebell swing",
            "name": "2 Handed Kettlebell Swing",
            "name_original": "2 Handed Kettlebell swing",
            "creation_date": "2015-08-03",
            "uuid": "c788d643-150a-4ac7-97ef-84643c6419bf",
            "license": 2,
            "category": 10,
            "language": 2,
            "muscles": [],
            "muscles_secondary": [],
            "equipment": [
                10
            ]
        },
        {
            "id": 174,
            "license_author": "flori",
            "status": "2",
            "description": "
\n
in eine aufrechte Position setzen, bei der die Beine hüftbreit geöffnet sind\n
den Rücken, die Knie und die Oberschenkelaußenseite an die jeweiligen Polster pressen\n
mit den Händen an den Griffen festhalten\n
die Oberschenkel bis zum Anschlagpunkt der Hebelarme auseinander drücken\n
danach die Beine wieder zusammen führen\n
das Gesäß nicht vom Sitz abheben\n
beim Auseinanderdrücken der Hebelarme aus- und beim Zusammenführen einatmen\n",
            "name": "Abduktoren-Maschine",
            "name_original": "Abduktoren-Maschine",
            "creation_date": "2013-07-19",
            "uuid": "99881bdd-43d7-4c3b-82ed-9c187d0455b7",
            "license": 1,
            "category": 9,
            "language": 1,
            "muscles": [
                8,
                6
            ],
            "muscles_secondary": [
                11
            ],
            "equipment": []
        }
...

こんな感じでいっぱいでてきます。今現在409あって、ページのデフォだと20個ずつ取ってるようで次ページurlもnextで返ってきてますね。

対象筋の情報や

"muscles": [
    8,
    6
]

使用器具など

 "equipment": [
   10
]

属性もいろいろ載っています。この番号が何に対応しているかは
https://wger.de/api/v2/muscle/
https://wger.de/api/v2/equipment/
で確認ができます。

パスにmuscleって入ってるのいいですね。
equipmentのほうも叩くとBarbell、Bench、Kettlebellなんかが返ってきてAPI叩くだけで筋肥大しそうです。

けっこうおもしろかったので、気が向いたら是非:lifter:

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?