POST lists/members/create_all | Twitter Developers
A comma separated list of user IDs, up to 100 are allowed in a single request.
仕様通り素直に100人直列で送ると間違いなく502エラーを返します。
TimeLine Copier – フォローしてる人をリストにコピーするツール
最初は50人で送ってたのですが、どうも不安定で使えないことこの上ない(一度に60人登録できたり10人でエラー起こしたり不定)ので、問答無用で100人ずつぶちこんだあと、自分のFollowingとリストに登録できた人の差分をとって繰り返し処理することにしました。
配列の差分をとる方法がないか調べたらList::Compareというモジュールがよさそうだったので使用しました。
List::Compare – search.cpan.org
my $lc = List::Compare->new(@array1, @array2);
my @l_only = $lc->get_Lonly; #array1にしかない要素の配列を取得
結果的に処理に時間かかるようになったのと、lists/membersエンドポイントにもアクセスしないといけなくなったのでAPI消費量があれなのですが、確実性は増したかなって気がします。
ちなみにめんどくさくてFoolowingが5000人の場合で試してないですが、確実にAPI切れ起こすと思います。
要請があったらテストするけど、そのときはベタの配列で5000人分のデータそっちで用意して欲しいなーって思います。
テストしたんですがやっぱり2600あたりでエラー起こしました。スリープさせて15分後に処理再開したら全員入れられるんだけど、そこまでする義理もないので対処しません。