見出し画像

Scratchで使われているapiとかを可能な限りまとめる。

scratchのapiはあまり検索しても出てこないことが多い。開発者ツールからいちいち掘るのも面倒だから、ここにscratch wikiに載っているものも含めて知っているものを全てまとめてみる。


GETメソッドを使うもの一覧


*1 ブラウザ上でテストしたいならリンクを直接貼るのではなく、開発者ツールでfetchなりxhrなりを使って取得しないといけない。

トップページとかで使われているもの一覧

言うまでもない。

GET https://api.scratch.mit.edu

サーバーの状態を取得する。

GET https://api.scratch.mit.edu/health

トップページに載っている作品を取得する。

GET https://api.scratch.mit.edu/proxy/featured/

scratch全体のプロジェクトの合計を取得する。結構取得に時間がかかるのでたまにタイムアウトする。

GET https://api.scratch.mit.edu/projects/count/all

scratchのトップページに載っているもの全て(注目のプロジェクト、コミュ好きなど)を取得する。

GET https://api.scratch.mit.edu/proxy/featured

最新の情報を取得する。

GET http://scratch.mit.edu/messages/ajax/friends-activity/?max=<取得する個数

自分のログイン情報など(ユーザー名とか)を取得する。*1

GET https://scratch.mit.edu/session

メッセージを取得する。*1


https://api.scratch.mit.edu/users/<username>messages?limit=<取得する個数><&offset=<何個目から取得するか>

ユーザー系列

ユーザーの私が行ったことを取得する。

GET https://scratch.mit.edu/messages/ajax/user-activity/?user=<username>&max=<取得する個数>

アカウントの基本情報を取得する。

GET https://api.scratch.mit.edu/users/<username>/

未読メッセージ数を取得する。

GET https://api.scratch.mit.edu/users/<username>/messages/count

今ログインしているアカウントの未読メッセージ数を取得する。↑のでいい気もするが

GET https://scratch.mit.edu/messages/ajax/get-message-count/

ユーザーのお気に入りを取得する。

GET https://api.scratch.mit.edu/users/<username>/favorites/?limit=<取得する個数><&offset=<何個目から取得するか>

ユーザーがフォローしているユーザーを取得する。

GET https://api.scratch.mit.edu/users/<username>/following/?limit=<取得する個数><&offset=<何個目から取得するか>

ユーザーがフォローされているユーザーを取得する。

GET https://api.scratch.mit.edu/users/<username>/followers/?limit=<取得する個数><&offset=<何個目から取得するか>

ユーザーがキュレーションしているスタジオの情報を取得する。

GET https://api.scratch.mit.edu/users/<username>/studios/curate/?limit=<取得する個数>&offset=<何個目から取得するか>

ユーザーが共有しているプロジェクトの情報を取得する。

GET https://api.scratch.mit.edu/users/<username>/projects/?limit=<取得する個数>&offset=<何個目から取得するか>

ユーザーのプロフィールのコメントを取得する。

GET https://scratch.mit.edu/site-api/comments/user/<username>/?page=<pagenumber>

ユーザーの注目のプロジェクトを取得する。

GET https://scratch.mit.edu/site-api/users/all/<username>/

ユーザーが共有したものを取得する。おそらく注目のプロジェクトを変更するときに使われる。

GET https://scratch.mit.edu/site-api/projects/shared/<username>/

(なぜかフォローされたスタジオを取得するapiが存在しないか見つけられない。)

プロジェクト系列

プロジェクトの基本情報を取得する。

GET https://api.scratch.mit.edu/projects/<project id>

プロジェクトのJSONファイルを取得する。

GET https://projects.scratch.mit.edu/<project id>?token=<token>

プロジェクトのコメントを取得する。

GET https://scratch.mit.edu/site-api/comments/project/<username>/?page=<pagenumber>
それか
GET https://api.scratch.mit.edu/users/<プロジェクトを公開した人のユーザー名>/projects/<project id>/comments?limit=<取得する個数>&offset=<何個目から取得するか>
下にあるほうを使うのがおすすめ。

プロジェクトのコメント欄にあるコメントの返信を取得する。

GET https://api.scratch.mit.edu/users/<プロジェクトを公開した人のユーザー名>/projects/<project id>/comments/<comment id>/replies?offset=<何個目から取得するか>&limit=<取得する数の上限>

プロジェクトのリミックスを取得する。

GET https://api.scratch.mit.edu/projects/<project id>/remixes/?limit=<取得する個数>&offset=<何個目から取得するか>

プロジェクトが入れられているスタジオを取得する。

GET https://api.scratch.mit.edu/users/<プロジェクトを公開した人のユーザー名>/projects/<project id>/studios/?limit=<取得する個数>&offset=<何個目から取得するか>

プロジェクトのサムネイルを取得する。

GET https://uploads.scratch.mit.edu/projects/thumbnails/<projectid>.png

プロジェクトのコスチュームや音楽などを取得する。アセットのコスチュームのidなどを調べるのは困難なのであまり使い物にならない。

GET https://assets.scratch.mit.edu/internalapi/asset/<asset id>/get/

リミックスツリーで使われている?api

https://scratch.mit.edu/projects/<project id>/remixtree/bare/


スタジオ系列

スタジオの基本情報を取得する。

GET https://api.scratch.mit.edu/studios/<studio id>/

スタジオに入れられているプロジェクトを取得する。

GET https://api.scratch.mit.edu/studios/<studio id>/projects/

スタジオのコメントを取得する。

GET https://api.scratch.mit.edu/studios/<studio id>/comments?limit=<取得する個数>&offset=<何個目から取得するか>

スタジオのコメントの返信を取得する。

GET https://api.scratch.mit.edu/studios/<studio id>/comments/<comment id>/replies?limit=<取得する個数>&offset=<何個目から取得するか>

スタジオのマネージャーを取得する。

GET https://api.scratch.mit.edu/studios/<studio id>/managers/?limit=<取得する個数>&offset=<何個目から取得するか>

スタジオのキュレーターを取得する。

GET https://api.scratch.mit.edu/studios/<studio id>/curators/?limit=<取得する個数>&offset=<何個目から取得するか>

スタジオのアクティビティを取得する。

GET https://api.scratch.mit.edu/studios/<studio id>/activity/?limit=<取得する個数>&?limit=20&dateLimit=<時間>
時間はどういう書き方を使っているんだ?知っている人がいたら教えてくれ。開発者ツールを掘れば書き方を見つけられるはず。

傾向系統

傾向を取得する。

GET https://api.scratch.mit.edu/explore/<projectsかstudios>?limit=<取得する個数>&offset=<何個目から取得するか>&language=<言語>&mode=<mode>&q=<種類>
種類のところに*を入れると全てを検索できる。アニメーションとかはそのまま英語で書けば行ける。
modeのところはPopular,trending,recentから一つ選ぶ。

検索する。

GET https://api.scratch.mit.edu/search/<projectsかstudios>?<取得する個数>&offset=<何個目から取得するか>&language=<言語>&mode=<mode>&q=<検索ワード>

ディスカッションフォーラム系統

開発者ツールを掘ってみたけどディスカッションフォーラムで使われているapiが見つからないか存在しない。あったら教えてくれ。

なにこれ

GET https://scratch.mit.edu/jsi18n/


POSTメソッドを使うもの一覧

POSTメソッドを使うapi一覧。サーバーにデータを送信するものだと思ってくれればいい。なのでGETメソッドみたいにリンクを貼り付けるだけで使えるものではない。使い方は別記事で説明する。

コメント系列

どんなコメントをするのかやコメントの内容はbodyに情報を入れる。URLでは指定できない。
コメントを投稿するときに使うbodyの内容:

body : {"content":<内容>,"parent_id":<親コメントのid>,"commentee_id":<返信する相手のid>}:
親コメントのidはコメントのリンクをコピーすると出てくるあのid。
返信する相手のidはユーザーの基本情報を取得するapiから取得できる。
返信をしないときはparent_idなどは空にすればいい。

削除するとき:

body : {"id":<coomment id>}:

プロフィール欄でコメントを投稿する。

POST https://scratch.mit.edu/site-api/comments/user/<username>/add/

プロフィールのコメントを削除する。

POST https://scratch.mit.edu/site-api/comments/user/<username>/del/

プロジェクトでコメント投稿

POST https://api.scratch.mit.edu/proxy/comments/project/<project id>

スタジオでコメント投稿

POST https://api.scratch.mit.edu/proxy/comments/studio/<studio id>

プロジェクト、スタジオでコメント削除するときはPOSTの代わりにDELETEメソッドを使えばいける。

ログイン

POST https://scratch.mit.edu/accounts/login/
body : {username: <username>, password: <password>, useMessages: true}

ログアウト

POST https://scratch.mit.edu/accounts/logout/
body : 不明


フォロー(or解除)

POST https://scratch.mit.edu/site-api/users/followers/<フォローするユーザーの名前>/<addかremove>/?usernames=<自分のユーザー名>
body : {id: <フォローするユーザーの名前>, userId: <フォローするユーザーのid>, username: <フォローするユーザーの名前>} 

スタジオをフォロー(or解除)

POST https://scratch.mit.edu/site-api/users/bookmarkers/<studio id>/<addかremove>/?usernames=<username>
body : 特になし?

プロジェクト系列

プロジェクトを上書き保存

PUT https://projects.scratch.mit.edu/<project id>
body : プロジェクトのjsonファイル?

プロジェクトを共有

PUT https://api.scratch.mit.edu/proxy/projects/<project id>/share
body : {is_published:"true"}

非共有についてはよくわからない。

サムネイルを設定する。

POST https://scratch.mit.edu/internalapi/project/thumbnail/<projectId>/set/
body : 写真のファイル

好きかお気に入りをつける。

POST https://api.scratch.mit.edu/proxy/projects/<project id>/<lovesかfavorites>/user/<username>
body : {projectId: <project id>, <userLoveかuserFavorite>: true, statusChanged: true}
外すならPOSTの代わりにDELETEを使い、userLoveをfalseにする。

説明(クレジット)を書き換える

PUT https://api.scratch.mit.edu/projects/<project id>
body : 説明欄なら {instructions: <内容>}、クレジットなら{description: <内容>}

スタジオ系列

スタジオを作成する。

POST https://scratch.mit.edu/studios/create/
body : 不明

スタジオの説明欄を変更する。

PUT https://scratch.mit.edu/site-api/galleries/all/<studio id>/
body :{description: <内容>}

スタジオのサムネイルを変更する。

POST https://scratch.mit.edu/site-api/galleries/all/<studio id>/
body : 写真

スタジオに作品を入れる。

POST https://api.scratch.mit.edu/studios/<studioid>/project/<projectid>
body : なし
削除するときはDELETEメソッドを使えばいい

スタジオにキュレーターを招待する。招待された側の場合はスタジオに入る。

POST https://scratch.mit.edu/site-api/users/curators-in/<studio id>/invite_curator/?usernames=<username>
body : なし

マネージャーに昇格


PUT https://scratch.mit.edu/site-api/users/curators-in/<studio id>/promote/?usernames=<username>
body : なし

キュレーターを削除

PUT https://scratch.mit.edu/site-api/users/curators-in/<studio id>/<remove>/?usernames=<username>
body : なし

オーナーを移行

https://api.scratch.mit.edu/studios/<studio id>/transfer/<username>
body : {password : password}

クラウド変数のapi(?)について

クラウド変数の履歴を取得したいだけならhttprequestを使って取得できたりもする。まあ、一応できる程度に思った方がいい。

GET https://clouddata.scratch.mit.edu/logs?projectid=<project id>&limit=<取得する個数>&offset=<何個目から取得するか>

確かにこのapiは存在するが、基本的にクラウド変数はapiではなくwebsocketで操作するものだ。どうやってクラウド変数を操作するかを書いていると長くなるのでこの記事で説明する。


Apiの使い方

この記事ではあくまで知っているapiをまとめることが目的であって、ここで使い方をコードを書いて説明しているとかなり長くなるのでこの記事で説明する。

apiを使うときの注意点とか

コメントを取得するときなどのlimitは、40を超えるとエラーが返ってくることがほとんど。1~40までに設定しよう。



一応思い当たるところは書いたつもり。まだあったら書く。間違いあったら指摘してくれい

関連記事


いいなと思ったら応援しよう!