vk.comコミュニティメンバーを数秒で取得

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%で終了する必要があります。 演算子はセミコロンで区切る必要があります。



以下がサポートされています。





このメソッドを使用すると、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; //       var offset = 1000; //      while (offset < 25000 && (offset + Args.offset) < Args.total_count) //    20000       { members = members + "," + API.groups.getMembers({"group_id": Args.group_id, "v": "5.27", "sort": "id_asc", "count": "1000", "offset": (Args.offset + offset)}).items; //    offset +   offset = offset + 1000; //    1000 }; return members;
      
      







ソースと例



VKが存在する場合、次のようになりました。

画像



作業例: http : //vk.com/app4236781

ソース: github.com/romkagolovadvayha/getmembersVKAPI.git



All Articles