TwitterとInstagramをやっているFANZA女優を一覧で表示するページを作った

この記事は [驚異のFANZA女優検索](https://fanza-actress-bust-search.azurewebsites.net/) Advent Calendar 2021 の 7 日目の記事です。

# TwitterとInstagramをやっているFANZA女優を一覧で表示する
[TwitterをやっているFANZA女優一覧](https://fanza-actress-bust-search.azurewebsites.net/twitter)と[InstagramをやっているFANZA女優一覧](https://fanza-actress-bust-search.azurewebsites.net/instagram)ページを作った。人数がちょっと多いのでこれ以上増えたらレイアウトを変えるかもしれないが、現状はインパクト重視でページ式ではなく全員を1Pで出るようにしている。このためにこのページだけレイアウトから空白もなくして画面の横幅全部に描くようにした。アイコンどうしようかなと思ったら、どっちも[Font Awesome](https://fontawesome.com/v4.7/)に含まれていたのでそれを使った。

# FANZA女優のTwitterとInstagramの情報を探す
特定の女優がTwitterやInstagramをやっているかどうかを自動で取得するのはなかなか難しい。最も確実な方法は一人ずつ実際にTwitterやInstagramでやっているかを目で確認してユーザー名をDBに登録していく方法だが、プログラマとしてそれは絶対にやりたくなかった。自動化は大前提であり絶対条件だ。そうなると確実性が高いのはTwitterで検索することだが、本人の名前で検索しても必ずしもヒットするかは分からない。ヒットしても本人でないケースもある。複数該当する人が居て先頭ではないケースもある。正直どんな方法でも絶対に確実な方法というのはないと思うが、それでもある程度それっぽい情報になるような方法はないかと考えた。

# FANZA女優のWikipediaの情報を探す
本人の名前でググった場合に割と上位に来ることが多いのがWikipediaだ。Wikipediaに書かれている情報は勿論全てが正確ではないが、まあある程度は信じて良い気もする、Wikipediaで有名人を調べると、TwitterとInstagramの情報が書いてある確率は結構高い。これを取得してくるのが良いかと思った。個人的にはこれぐらいが一番**それっぽい**と思った。公式にAPIが提供されているのでそこはかなり簡単に使えた。WikipediaのAPIは[API:メイン ページ](https://www.mediawiki.org/wiki/API:Main_page/ja)の一番下に書かれている[例](https://ja.wikipedia.org/w/api.php?action=query&prop=info&titles=%E5%9C%B0%E7%90%83)を見ると大体分かると思う。ただ、[公式](https://ja.wikipedia.org/w/api.php)を見てもパラメータの説明が分かりにくい上に全網羅されてないように見える（例えばtitlesやpropの説明がないとか。。）。[MediaWiki APIを使ってWikipediaの情報を取得](https://qiita.com/yubessy/items/16d2a074be84ee67c01f)が一番参考になった。

# Wikipediaから5000人ぐらいは取得出来た
基本でこれで取得出来るのがだが、色々問題もある。女優の名前だけで検索しているので、同姓同名の人が複数人いたり、他人だったりすることもある。一応念のため取得出来た文章の中に「女優」というキーワードが入っていない場合は弾くようにしたが、一つの問題としてはFANZA女優ではない女優で同姓同名がいるケース。実際この[ミスヒット](https://fanza-actress-bust-search.azurewebsites.net/?searchText=%E9%9B%9B%E5%BD%A2%E3%81%82%E3%81%8D%E3%81%93)は少しあった。また女優が改名していたりすると[リダイレクト](https://ja.wikipedia.org/wiki/Wikipedia:%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88)処理が必要な場合もある。まあ兎にも角にもこのやり方で5000人ぐらいの情報は取れた。その中でTwitter名が書かれていたのが1300人ぐらい、Instagram名が書かれていたのが500人ぐらいだ（2021年12月現在）。YoutubeやTikTokなどの情報もあったが、該当人数がかなり少なかった。

# Twitterでフォローする方法
こうして取れた情報を元に次は自分の[Twitter](https://twitter.com/fabsabsfabsabs)と[Instagram](https://www.instagram.com/fabsabsfabsabs/)のアカウントを作って、実際に女優をフォローする仕組みを調べた。Twitterは[API](https://developer.twitter.com/en/products/twitter-api)に[フォロー](https://developer.twitter.com/en/docs/twitter-api/users/follows/introduction)があるが、Instagramも[API](https://developers.facebook.com/docs/instagram-basic-display-api?locale=ja_JP)はあるがフォローは出来なそうだった。さてどうしたものかと思いつつ先ずは実験的にTwitterのフォローの自動化を作ってみた。TwitterのAPIは、申請が必要だ。申請すればすぐに使えるかなと思ったら甘かった。そもそも申請も最低文字数制限があってわりとしっかり書かねばならない。その後メールが来てそれにも返答しなくてはならない。内容によっては1回ですまない。自分も3回ぐらいやりとりしてやっと通った感じだ。

# Twitterで女優をフォローしていく
で、Twitter APIを使って、実際にWikipediaで見つけた1300人を順次フォローしていった。最初は順調にどんどんフォロー数は増えていった。1個問題と言えば何人フォローしてもフォローを返してくれる人がいないことか。100人フォローしてもフォロワーは0、200人フォローしても0、300人でも0。300人フォローしてフォロワー0とか中々笑える状態だった。で、500人程フォローした段階でそれ以上フォローできなくなった。原因を調べたら、[リミット](https://help.twitter.com/ja/using-twitter/twitter-follow-limit)に引っかかったようで警告も来ていた。1日400人以上のフォローはNGらしい。何日か全ての機能が使えなくなった。

# Seleniumで1時間に1人フォローしていく
暫くAPIが使えない状態だったので、別のアプローチを考えた。Instagramのフォローをどうすればよいかもあったので自動化でのフォローを考えた。要はブラウザ起動、URL移動、ログイン、ユーザー検索、フォローをクリックまでを繰り返せば自動フォローできるに違いないと思った。こうなるとSeleniumによる自動化の出番だ。TwitterだけでなくInstagramの1日のフォロー数上限があった。特に急いで全員フォローしたいわけでもないので、1時間に1人フォローする仕組みにした。これでInstagramで動かしてみた。結果的には良い感じになった。1時間で1人だと1日24人、10日240人とかなりゆっくりめなペースだ。このやり方にしたメリットもあって1日1人ぐらいは誰かがフォローしてくれて100人フォローした段階で、10人ぐらいはフォロワーがいる状態だった。その後Twitterも同じ方法にして、1ケ月以上かけて今のフォロー数Twitterで1200人ぐらい、Instagramで400人ぐらいになった。

# FANZA女優でTwitterとInstagramをやっている人を一覧で表示する
こうして取得した情報を一覧で表示した。Topページからもリンクを作った。作っておいてあれだが、さてこれが何に使えるかは不明ｗ。