Discuss Scratch

abee
Scratcher
1000+ posts

Scratch APIに対して理解を深めるトピック

#219
「不透明な応答がニーズにお応えする場合」とはどういう意味ですか。

Last edited by abee (April 15, 2023 09:34:44)

Sky_Thunder
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

#217
そもそもの話になりますが、わざわざスクレイピングしなくてもこのAPIを使えば、json形式で取得することができます。
(結局どちらでもブロックされると思うので、意味ないかもしれませんが…。)
Catapult-
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

#222
ん、今私の環境で試してみたら普通に取得できてしまいましたよ…
APIには制限が特にかかっていないようです。
function myFunction() {
  var response = UrlFetchApp.fetch("https://clouddata.scratch.mit.edu/logs?projectid=832771060&limit=40&offset=0");
  Logger.log(response);
}
11:51:23	情報	[{"user":"ito-noizi","verb":"set_var","name":"☁ マクロに拾ってもらおう!","value":4,"timestamp":1680997699600},{"user":"ito-noizi","verb":"set_var","name":"☁ マクロに拾ってもらおう!","value":3,"timestamp":1680997699072},{"user":"ito-noizi","verb":"set_var","name":"☁ マクロに拾ってもらおう!","value":2,"timestamp":1680997698478},{"user":"ito-noizi","verb":"set_var","name":"☁ マクロに拾ってもらおう!","value":1,"timestamp":1680997697920},{"user":"ito-noizi","verb":"set_var","name":"☁ マクロに拾ってもらおう!","value":"0","timestamp":1680997697390},{"user":"ito-noizi","verb":"set_var","name":"☁ マクロに拾ってもらおう!","value":6,"timestamp":1680997674654},{"user":"ito-noizi","verb":"set_var","name":"☁ マクロに拾ってもらおう!","value":5,"timestamp":1680997673925},{"user":"ito-noizi","verb":"set_var","name":"☁ マクロに拾ってもらおう!","value":4,"timestamp":1680997673232},{"user":"ito-noizi","verb":"set_var","name":"☁ マクロに拾ってもらおう!","value":3,"timestamp":1680997672445},{"user":"ito-noizi","verb":"set_var","name":"☁ マクロに拾ってもらおう!","value":2,"timestamp":1680997671087},{"user":"ito-noizi","verb":"set_var","name":"☁ マクロに拾ってもらおう!","value":1,"timestamp":1680997669108},{"user":"ito-noizi","verb":"create_var","name":"☁ マクロに拾ってもらおう!","value":0,"timestamp":1680997540153}]

Last edited by Catapult- (April 16, 2023 02:54:07)

ito-noizi
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

yukku様、Sky_Thunder様、Catapult-様ありがとうございます。今GASでやってみたところできました。limit=の後の数字を3600くらいにすればトリガーを時間主導型にして1分刻みでほぼリアルタイムで情報を取得できそうですね。これでセーブデータをサーバーに保存したりできそうなのでちょっと頑張ってみます。
(ロードに使うためのPOSTリクエストをscratchに送れたらいい?)

Last edited by ito-noizi (April 16, 2023 05:53:50)

abee
Scratcher
1000+ posts

Scratch APIに対して理解を深めるトピック

#224
これは利用規約3.5-5の統計情報の操作に違反しているように思えます。
Scratch Teamはすべてを監視しているわけではないので、一般には報告がない限り対処されません(コミュニティーガイドラインのとおり)。
また、不適切な作品のリンクを載せること自体、「不適切なものへの反応」にあたる可能性があるので、削除することをおすすめします。
Teba_eleven
Scratcher
5 posts

Scratch APIに対して理解を深めるトピック

>> #219
エラー内容はわかっています。つまり、外部サイトからは取得できないということですか?
ito-noizi
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

abee様ありがとうございます。その関連する情報のみ削除しました。
K-Orange
Scratcher
3 posts

Scratch APIに対して理解を深めるトピック

質問です。
ユーザーが、指定したユーザーをフォローしているか調べられるAPIはありますか?
(例えば、@32_tamagoが@k1o2oをフォローしているかどうか等)
Catapult-
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

#228
https://api.scratch.mit.edu/users/<username>/following/?limit=<取得する個数><&offset=<何個目から取得するか>
で、そのユーザーがフォーローしているユーザーの情報の配列のJSONを、
https://api.scratch.mit.edu/users/<username>/followers/?limit=<取得する個数>&offset=<何個目から取得するか>
で、そのユーザーのフォロワーの情報の配列のJSONを取得できます。
ただし、limitは40以下でないと情報を返さないようになっているため、すべての情報から目的のユーザーを探す場合は40個刻みでループする必要があります。
K-Orange
Scratcher
3 posts

Scratch APIに対して理解を深めるトピック

#229
参考になりました。ありがとうございます。
kotau
Scratcher
34 posts

Scratch APIに対して理解を深めるトピック

APIを実行するときにcsrf検証に失敗してPOSTメソッドがほぼ使えないのですがcsrftokenはどうすればいいのですか?
Sky_Thunder
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

#231
csrftokenはcookieを参照すれば見つかると思います。headersに以下のように加えれば大丈夫です。
"headers": {
"x-csrftoken": "tokenID"
}
(それでも解決しなかった場合は実際に確かめたいのでそのAPIのURLをここに送ってください。)
kotau
Scratcher
34 posts

Scratch APIに対して理解を深めるトピック

POST https://scratch.mit.edu/site-api/comments/user/kotau/add/
body:{“content”:“test”,“parent_id”:“”,“commentee_id”:“”}
Sky_Thunder
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

removed by moderator - please don't discuss using scripts or bots on Scratch

Last edited by LittleGreyCells (May 21, 2023 15:21:15)

kotau
Scratcher
34 posts

Scratch APIに対して理解を深めるトピック

removed by moderator - please don't discuss using scripts or bots on Scratch
ってでてる…
Sky_Thunder
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

#235
どうやらScratch Teamによって投稿が編集されたようです。
DeepL翻訳を使って翻訳すると、
モデレーターによって削除されました - Scratchでスクリプトやボットを使うことについて議論しないでください。
とのことです。
一応javascriptの知識がある人にしか動かせないようにメゾッド部分を削除して投稿したのですが….
それでも駄目みたいですね
taNup0n
Scratcher
500+ posts

Scratch APIに対して理解を深めるトピック

調べてワからなかったから聞くが、
https://scratch.mit.edu/projects/417561335/
みたいな
APIから情報を読み込むようなプログラムはどうやってつくるんだ??
端的に教えていただきたい
ito-noizi
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

taNup0n wrote:

調べてワからなかったから聞くが、
https://scratch.mit.edu/projects/417561335/
みたいな
APIから情報を読み込むようなプログラムはどうやってつくるんだ??
端的に教えていただきたい

クラウド変数を外部で(JavaScriptなどの言語)リアルタイムで取得し、サーバーに保存していると考えられます。似たようなものを作るなら☁将棋オンラインも多分同じシステムでかなりわかりやすいのでこっちを参考にしたらどうでしょう?
ちなみにプログラムは
1 https://clouddata.scratch.mit.edu/logs?projectid=プロジェクトID&limit=40&offset=0からJson形式でデータを取得
2 セッションIDなどクッキーの取得
3 PUTリクエストによるproject.jsonの書き換え
4 タスクスケジューラのようなものを使い、リアルタイムで行う
のような形で行います。2が一番難しいと思います。

P.S.
今回の場合はクラウド変数を外部から変更するという形でした。すみません。project.jsonの書き換えは再読み込みしないとできませんでした。
似てるのはこっちですね。

Last edited by ito-noizi (May 28, 2023 13:14:26)

oligami
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

#237

taNup0n wrote:

調べてワからなかったから聞くが、
https://scratch.mit.edu/projects/417561335/
みたいな
APIから情報を読み込むようなプログラムはどうやってつくるんだ??
端的に教えていただきたい

鯖立ててクラウド変数で通信するだけだと思う

#238 を呼んでの追記
githubにいい感じにscratchのAPIにアクセスするpythonのやつがある。scratchattachとか。定期的に動かすなら定番のcronとか使う(別にpythonのコードでいいと思うが)
ここら辺を鯖で実行して、クラウド変数で通信する。なお、クラウド変数ならかなり簡単に実装できると思う(実際にログインしているブラウザからはコード丸パクで直ぐに操作も取得もできた)(Puppeteerという単語にピンとこない人は素直にscratchattachとかを利用してください)

Last edited by oligami (May 28, 2023 13:09:57)

ito-noizi
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

質問です。
あるプロジェクトのお気に入り、好きを押している人を取得する方法を教えて下さい。一応セッションIDなどcookieの発行や、Node.jsでGET、POSTリクエストなどを送る方法は知っています。

Last edited by ito-noizi (June 11, 2023 07:35:29)

Powered by DjangoBB