VK APIが、
groups.getMembersメソッドへのリクエストごとに1,000を超えないメンバーを返すことは秘密ではありません。 1秒あたりのリクエスト数の制限は3に設定されているため、1秒で最大3,000人の参加者を取得できます。このメソッドは、1秒で100,000人以上の参加者、1つのリクエストで最大25,000人の参加者を取得できる
executeメソッドによって解決されます。 この記事では、どのように実装したかを説明します。
executeメソッドを使用しない場合、4,000,000人のオーディエンスを持つグループのメンバーを取得するプロセスには約22分かかり、約4,000のAPIリクエストを完了する必要があります。
executeメソッドを使用して、このプロセスを約40秒に加速し、約160個のクエリのみを実行します。
内容:
I.実行について少し
これは、他のメソッドのシーケンスを実行し、中間結果を保存およびフィルタリングできる汎用的なメソッドです。
他のすべてのメソッドと同様に単純な要求が行われますが、パラメーターでは
VKScriptで記述された
コードを渡す必要があります。
VKScriptは何をサポートしますか?
JavaScriptまたはActionScriptに似た言語です。 アルゴリズムは、コマンドreturn%expression%で終了する必要があります。 演算子はセミコロンで区切る必要があります。
以下がサポートされています。
- 算術演算
- 論理演算
- 配列とリストの作成([X、Y])
- parseIntおよびparseDouble
- 連結(+)
- 構築する場合
- パラメーターによる配列フィルター(@。)
- APIメソッド呼び出し、長さパラメーター
- whileステートメントを使用したループ
- Javascriptメソッド:スライス、プッシュ、ポップ、シフト、シフト解除、スプライス、substr
- 削除演算子
- 配列要素への割り当て。例:row.user.action = "test";
このメソッドを使用すると、1つのAPIリクエストで複数のメソッドの結果を取得できます。
II。 Javascriptの実装
再帰が以下で説明するプロシージャexecute.getMembersをプルする単純な関数を作成します。
getMembers(group_id);
グループのメンバーを取得するには、
executeを使用
して 、1つのリクエストに対して25,000のメンバーを取得します。
実行では、
VKScript言語を使用して記述された最大25個のクエリを作成できます。
codeパラメーターでは、アルゴリズムを
VKScript言語で渡す必要があります。
getMembersプロシージャが作成されました。これは、クライアントから毎秒3回取得します。
var members = API.groups.getMembers({"group_id": Args.group_id, "v": "5.27", "sort": "id_asc", "count": "1000", "offset": Args.offset}).items;
ソースと例
VKが存在する場合、次のようになりました。

作業例:
http :
//vk.com/app4236781ソース:
github.com/romkagolovadvayha/getmembersVKAPI.git