Discuss Scratch

sei6sei
Scratcher
500+ posts

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

ありません。
探しましたが見当たらなかったです。
GETリクエストをユーザーページに送信して404か判別すれば擬似的にはできます

Last edited by sei6sei (March 16, 2025 10:23:22)

tomato_curry
Scratcher
66 posts

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

#415 へ 返信

URL:https://api.scratch.mit.edu/users/ USER get
たとえば,昔いたら
{"id":148984868,"username":"(USER)","scratchteam":false,"history":{"joined":"2025-01-09T10:25:39.000Z"}, 省略   
ってなる。
もしなかったら
{"code":"NotFound","message":""}
こーなる 以上
ioqj
Scratcher
500+ posts

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

tomato_curry wrote:

(#422)
#415 へ 返信

~省略~

それは「アカウントが削除されているか削除されていないか」を確認できるリクエストではありません。
そこから調べることが出来るのは、「ユーザー名がサーバーに登録されているか」と、「ユーザーに関する詳しい情報」です。
#415 に対する返信としては不適当です。

Last edited by ioqj (March 17, 2025 11:47:29)

ito-noizi
Scratcher
100+ posts

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

もしかして、また開発者ツールを使えない状況ということでしょうか……。
その状況は元の質問を読んだだけではわかりません。また次からは何のためにAPIを知りたいのかを教えてもらいたいです。どれくらいの情報について説明すれば良いのかわかりませんから。

さて、#421~423について読んで気づいたので、この情報を追加します。
1. フォロワー欄の存在が確かめられる(アカウントが存在している・たことを確認)
→フォロワー欄のURLにアクセス(リクエストを送る)して404にならないかを見る
2. プロフィールにアクセスする(アカウントが今も存在していることを確認)
→プロフィールのURLにアクセス(リクエストを送る)して404にならないかを見る

この二つを調べることでできます。削除されたかの情報のみを単体で返すAPIは私の知る限りありません。ですがそれを知ろうとする理由は好奇心くらいしかないでしょう。
3023TOMO
Scratcher
31 posts

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

なんか他の人の作品が見れなくなっています。開発者モードでちょっとみたところ、スクラッチapiからデータをもらうときにエラーが出ていました。ネットワークはちょっと知識がないので、スクラッチapiの状況、他の人の作品が皆さんは見れるか教えてほしいです。(これは更新した時に追加した文字です。五時間ぐらい経った後直りました。)

Last edited by 3023TOMO (May 3, 2025 03:30:55)

hi-ro951
Scratcher
29 posts

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

上にあったため削除

Last edited by hi-ro951 (May 3, 2025 04:52:14)

TNTSuperMan
Scratcher
100+ posts

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

現在ScratchのAPIを再現しようとしていて、scratch.mit.edu側の/csrf_token/というAPIを分析しているのですが、
このAPIのURLをブラウザに入れて開くと特殊な404エラーになるのに、
fetchやXMLHttpRequest等で開くと200で正常になるのが非常に疑問です。

ヘッダーを分析してロジックを調べようとしましたが、それでも良くわからなかったので、
これについて誰かわかるでしょうか。
kyokyoro
Scratcher
100+ posts

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

Catapult- wrote:

他にも注意すべき点として、ヘッダーに
X-Requested-With: XMLHttpRequest
Referer: https://scratch.mit.edu/
などを含めなければブロックされる場合があります。
(#343より引用)
恐らくこれですね。

Last edited by kyokyoro (June 14, 2025 07:26:36)

TNTSuperMan
Scratcher
100+ posts

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

#428
そこについて、X-Requested-WithやRefererのヘッダーを送らないようにしても200になり、
ブラウザで開いた時だけ404になりました。なので違うと思います。
minepra
Scratcher
25 posts

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

api でフォロワーのusernameを調べられないでしょうか?
YU1000
Scratcher
12 posts

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

#430
できます。
 https://api.scratch.mit.edu/users/minepra/followers/?limit=1
limitのところは、取得する個数を設定できます。
JSON形式で返ってくるので、usernameのところを取得すればいいと思います。

Last edited by YU1000 (Sept. 21, 2025 05:08:23)

mashu_Official
Scratcher
100+ posts

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

(botは規約上良くないので実際にはやらないですけど…)
スタジオにコメントされるとキュレーターに招待するということって自動化できますか?
ito-noizi
Scratcher
100+ posts

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

技術上可能で、とても難しいものではありません。
KRTSD0823
Scratcher
100+ posts

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

#432
APIに存在するかという話は一旦置いておきます。
スタジオのコメントを10秒おきに取得、そのたびに最新のコメントを保存するようにして、最新のコメントが保存されているコメントではないならユーザーをキュレーターに招待するというようなものを作ればできるとは思います。
最初に書いたように、そのようなAPIはScratchに存在しないかもしれません。
mashu_Official
Scratcher
100+ posts

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

KRTSD0823 wrote:

#432
APIに存在するかという話は一旦置いておきます。
スタジオのコメントを10秒おきに取得、そのたびに最新のコメントを保存するようにして、最新のコメントが保存されているコメントではないならユーザーをキュレーターに招待するというようなものを作ればできるとは思います。
最初に書いたように、そのようなAPIはScratchに存在しないかもしれません。
分かりました!ありがとうございます!
YU1000
Scratcher
12 posts

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

フォロワー数を、scratchAPIから正確に取得する方法を教えて欲しいです。
40個ずつ取得することをループするpythonコードを書いたのですが、数が実際と違うんです。
書いたコードは、パソコンを開いた時にまた追加します。

Last edited by YU1000 (Sept. 21, 2025 05:06:21)

KRTSD0823
Scratcher
100+ posts

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

#436
途中で40から少なくなるのか、最初から40ではないのかは分かりますか?とりあえず、APIを取得するコードと結果を表示するコードを教えてほしいです。
Pythonはクラウド変数の操作で少し触ったくらいなのでであまり知識はないのですが、答えられる範囲で答えてみます。
pura314
Scratcher
100+ posts

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

一応僕の場合のコードを書きました。
ちなみに出力は期待されてない値になります。
import requests
import time
def Followers_counts(username):
    count = 0
    if40 = True
    i = 0
    while if40: #if40がFalseになるまで繰り返す。
        k = False
        while not k:
            request = requests.get(f"https://api.scratch.mit.edu/users/{username}/followers/?limit=40&offset={40*i}") #取得
            if request.status_code == 200:
                k = True
            else:
                time.sleep(0.1)
        print(len(request.json()))
        count = count + len(request.json())
        if40 = len(request.json()) == 40
        i = i + 1
        time.sleep(0.1)
    return count
print(Followers_counts("pura314")) #2025年9月21日時点でフォロワーは378人だが出力は416人

Last edited by pura314 (Sept. 21, 2025 12:22:40)

kouryou118103
Scratcher
1000+ posts

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

アカウント削除ページ(https://scratch.mit.edu/accounts/settings/delete_account_confirmation/ )の値と一致するのでもしかしたら解除した人もカウントしているのかもしれません。

print以外でもf-stringsって使えるんだ…

Last edited by kouryou118103 (Sept. 21, 2025 11:49:33)

YU1000
Scratcher
12 posts

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

KRTSD0823さん、pura314さん、kouryou118103さん、ありがとうございます。
#439
たしかに、そうですね。正確に取得するためには、スクレイピングかなんかしないとダメそうですね…

Powered by DjangoBB