SSブログ
RSS [RSS1.0] [RSS2.0]
共謀罪を含む改悪組織犯罪処罰法は
【「共謀罪」法 衆参両院議員の投票行動(東京新聞 2017/6/16)】

ツイッターのブロックリストを自分で簡単に作れるようになった

 2015年の6月にツイッターのブロックリストをエクスポートしたりインポートできるようになった(参照)のだが、最近まで利用してなかった。私のアカウントで利用できるようになったのは数か月後だったような気がするし、そもそも安心できるブロックリストが見つからなかった。ようやくブロックリストを自分で作れるようになったので今後は積極的に利用しようと思う。

 ブロックリスト作成に利用するページ:
 【ツイッターのスクリーンネームをユーザーIDに変換する】
 (GAEが使えなくなりそうなので削除しました。)

 ブロックリストのインポート方法は【ブロックの高度なオプション | Twitterヘルプセンター】に書いてある。

他のユーザーのブロックリストをインポート

他のユーザーのブロックリストをインポートすることで、同じアカウントのリストをブロックできます。

ブロックリストをインポートするには

  1. 共有済みのファイルの形式がCSVであることと、そのファイルがパソコンに保存されていることを確認。
  2. twitter.comで [ブロックしているアカウント] 設定にアクセス。
  3. ドロップダウンメニューから [高度なオプション] をクリック。
  4. [リストをインポート] を選択。
  5. ポップアップでクリップ型アイコンをクリックし、CSVファイルを選択。[開く] をクリックし、リストをインポート。
  6. 正常にインポートされた場合、ファイル名が表示される。
  7. [プレビュー] をクリックすると、アカウントのリストが表示される。ここで、ブロックしないアカウントのチェックをオフにできる (現在フォローしているアカウントは自動的にチェックがオフになる)。
  8. [ブロックする] をクリックして確定。
  9. インポートしたアカウントがブロックリストに追加される。
ブロックの高度なオプション | Twitterヘルプセンター

 この直前に重要なことが書いてある。

注記: エクスポートされたファイルには、アカウントごとのユーザーIDが記載されています。リスト上のユーザーに関する他の情報は含まれていません。
ブロックの高度なオプション | Twitterヘルプセンター

 この「ユーザーID」というのは返信する時などに利用するユーザー名(私の場合は self7777 )のことではなく、ユーザー固有の数字のことである。ユーザー名は変更することができて変更してもフォロワーなどは変わらない(ユーザー名の変更方法)が、それは「ユーザーID」が同じだからだろう。だから、ユーザー名を変えられてもブロックできるように、ブロックリストには「ユーザーID」が記載されているのだろう。
 この「ユーザーIDが記載されています」ということで、インポートしたいブロックリストを他のユーザーと共有せずに自分で作ることが難しかった。ユーザー名からユーザーIDを調べる方法はインターネットで検索すれば見つかるが、手間のかかる方法で大量に調べたい時に不向きである。幸い、「ユーザー名」を入力すれば「ユーザーID」が出力されるアプリを提供してくれているページもある。例えば、【Twitter IDチェッカー | ユーザーIDの調査・追跡サービス】が便利である。「ユーザー名」は「スクリーンネーム」とも呼ぶらしい。以下では「スクリーンネーム」と書く。
 しかし、やはりブロックリストを作るためにユーザーIDを一つ一つ調べるのは手間がかかる。ブロックした方が良さそうなリストをスクリーンネームの一覧で提供された時(参照)に、一度にユーザーIDに変換してくれるアプリが欲しくなった。

 スクリーンネームの一覧をユーザーIDの一覧に変換するアプリは誰かが作っていそうだったが、インターネットで検索しても見つからなかったので自分で作った。

 まずは、「Twitter REST API」の【GET users/show】を使って作った。作り方は【Twitterで取得したユーザーのJSONデータをRSSフィードに変換する(GAEを使う)】を参考にした。【TwitterOAuth】は v0.6.0 にアップデートされているらしい(参照)が、【Twitterで取得したユーザーのJSONデータをRSSフィードに変換する(GAEを使う)】でダウンロードした古いTwitterOAuthを利用した。TwitterOAuthの使い方が間違っているらしく(参照)、さらに仕様も変わったらしい(参照)ので、「Latest release」の v0.5.4 で試したが、認証の所で躓いたので、古いTwitterOAuthをコピーして利用した。
 【GET users/show】を使って作る場合、一つのスクリーンネームでJSONデータを取得してユーザーIDを抜き出す作業を一覧の全てのスクリーンネームで foreach を使って自動的に繰り返して一覧にして出力すれば良い。

 【GET users/show】を使って作ったアプリのソース(今は未使用)→twinameidconv_show.txt

 このアプリを作った後に【users/show - ユーザープロフィールを取得する | Twitter Rest API 日本語リファレンス】を見つけ、ここは users/show を試して取得できるJSONを確認できるサイトらしい。最初は見逃していたのだが、ここに次のように書いてある。

似たエンドポイントにusers/lookupがあります。users/showは1件のユーザー情報を取得できるのに対して、users/lookupは複数件のユーザー情報を一度に取得できます。
users/show - ユーザープロフィールを取得する | Twitter Rest API 日本語リファレンス

 英語の解説を先に見ていた時には分からなかったのだが、users/show よりも users/lookup を使った方が良かった。英語の公式解説は【GET users/lookup】だが、【users/lookup - 複数のユーザー情報を取得する | Twitter Rest API 日本語リファレンス】を見た方が分かりやすい。「,」で区切って複数のスクリーンネームを指定するらしく、取得できるJSONを確認すると、各スクリーンネームのユーザーIDが載っている。

 そこで、【GET users/lookup】を使って作り直した。こちらでは foreach を使って繰り返しAPIにリクエストする必要がなく、一度のリクエストで必要十分なJSONデータが得られる。

 phpファイルのソース(今は未使用)→twinameidconv_lookup.txt

 ここで一段落だったのだが、【search/tweets - ツイートを検索する | Twitter Rest API 日本語リファレンス】の「取得できるJSON」見たら、検索で取得した件数のツイートのスクリーンネームとユーザーIDが得られることが分かった。

 私がブロックしたい人たちは彼らに特有の、仲間内でしか利用しないような単語を使う傾向がある。彼らしか使わないようなハッシュタグもある。それらで検索した結果から各ツイートのユーザーIDを取得して一覧にしてテキストエディタにコピーして拡張子をcsvにしてブロックリスト(CSVファイル)を作れば良い。

 だから、【GET search/tweets | Twitter Developers】を使って検索機能を付加した。その結果が冒頭でリンクしたページである。

 【ツイッターのスクリーンネームをユーザーIDに変換する】
 (GAEが使えなくなりそうなので削除しました。)
 phpファイルのソース→twinameidconv_lookup_search.txt

 これで、ツイッターのブロックリストを自分で簡単に作れるようになった。

 最後に、ブロックリストを使って気づいたのだが、CSVファイルを作る時に注意が必要らしい。
 いくつかあるかもしれないが、私が気付いた一つは「一覧の一番最後のユーザーIDの後ろで改行しない」である。私の使っているテキストエディタではページの一番最後に[EOF]とあるが、これが一番下のユーザーIDの右にある状態でないとインポートできなかった。私の使っているテキストエディタでは改行すると↓が行末に付くのだが、一番最後のユーザーIDの右が↓で下に[EOF]があるCSVファイルではインポートできなかった。自分のブロックリストをエクスポートすると[EOF]は一番下のユーザーIDの右にある。一番下のユーザーIDの後ろでは改行してない。ブロックリストを手動で作成する人、他のユーザーのブロックリストを手動で改変してからインポートする人は注意してほしい。


タグ:PHP Twitter JSON GAE
nice!(0)  コメント(1)  トラックバック(0) 
カテゴリー:サイトを見て
共通テーマ:パソコン・インターネット

読者の反応

nice! 0

sonet-asin-area

コメント 1

.

この機能は現在使えなくなっています。
by . (2021-07-26 08:04)

コメントを書く 

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。
captcha

トラックバック 0

トラックバックの受付は締め切りました