meowの覚え書き

write to think, create to understand

connpassのイベント参加者のTwitter idを収集し、Twitterリストを作成するPythonスクリプトを書いた

f:id:meow_memow:20210725140704j:plain

目次

日本のエンジニア向けイベント管理サービスはconnpassがメジャーだと思います。
イベント中にコメントをもらいたい時はTwitterハッシュタグを用意して参加者につぶやいてもらう運用をよく見かけます。一方で、ハッシュタグをつけずにつぶやく方も一定数いらっしゃる印象です。
そこで、connpassの参加者リストから、Twitterを登録している方のTwitter idを集めてリストを作っておいたら、何か違う観点のコメントも拾えたりできるかもしれないと思いました。

参加者のリスト作成は人力でもできますが、面倒なことなのでPythonにやらせることにしました。この記事ではそのスクリプトの使用方法をご紹介します。
リポジトリは↓です。リポジトリをcloneしてモジュールをコマンドラインで実行する想定です。

github.com

なお、Twitterのリストを自動化する部分ではTwitter APIを使用しています。このAPIを使うにはTwitter社への申請が必要で、申請作業はAPIの用途を記述する必要があり、かなり大変だったことを先に述べておきます。


スポンサードリンク

スクリプトの説明

処理は2段階に分かれています。

  1. connpassのイベント参加者リストのスクレイピング
  2. Twitterのリストを作成

それぞれを以下で説明します。 スクリプト自体は処理ごとに独立しているので、どちらか片方の処理だけを行うこともできます。

connpassのイベント参加者リストのスクレイピング

この工程では、connpassの特定のイベントにおける参加者リストをスクレイピングします。なお、connpass APIを介さないスクレイピングはあくまで禁止されていないというだけであり、robots.txtとマナーを遵守する必要があります。

スクリプトは下記です。スクレイピング処理が中心なので、見ても面白くないかもしれません。
https://github.com/meow-noisy/create_connpass_participants_twitter_list/blob/master/get_participants_id_from_connpass.py

使い方は
$ python get_participants_id_from_connpass.py <connpassのイベントURL> [オプション]です。

下記はpython get_participants_id_from_connpass.py -hのヘルプの説明文です。

usage: get_participants_id_from_connpass.py [-h] [-o OUTPUT_TXT]
                                            [-s {twitter,connpass}]
                                            [--exclude_cancel]
                                            url

positional arguments:
  url                   connpassのイベントURL

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUT_TXT, 
                        出力ファイルへのパス
  -s {twitter,connpass}, --service {twitter,connpass}
                        どのサービスのアカウントをリストとして取得するか
  --exclude_cancel      このオプションを追加すると、キャンセルしたユーザをリストに含めない

補足すると、

  • --output_txt OUTPUT_TXT
    • 出力ファイルパスはオプションにしています。もしも与えない場合は、urlを加工した名前のファイルがモジュールを実行された場所に生成されます。
  • --service {twitter,connpass}
    • 参加者リストから収集するidをtwitterconnpassかを選びます。デフォルトではtwitterです。
  • --exclude_cancel
    • あくまで参加した人だけでリストを作りたい時のことを想定してフラグをつけました。

これを実行すると、運営、参加者、キャンセルしたユーザのidを取得し、idが1行ずつ書かれたtxtファイルが生成されます スクリプトで工夫した点としては、参加者が100名を超えていると別ページが作られるため別ページを巡回してスクレイピングしている点です1。 ただし、運営もしくはキャンセルが100人を超えている場合に作られる別ページは見に行きません。運営orキャンセル人数が100人を超える例を見たことがないのでサポート外にしています。

Twitterのリストを作成

(プライベートな)Twitterリストを作成します。それにあたっては前述の通り、Twitter APIの申請が承認されている必要があります。また、Twitter APIトークン発行時にはWrite権限を付与しておく必要があることに注意してください。
リスト作成にあたってはTweepyというサードパーティPythonラッパーを使用しました2$ pip install tweepyでインストールできます。

スクリプトは下記です。このスクリプト中にトークン情報を設定する箇所があるので、こちらを書き換えてください。 https://github.com/meow-noisy/create_connpass_participants_twitter_list/blob/master/create_participants_twitter_list.py

使い方は
$ python create_participants_twitter_list.py <ファイルパス> [リスト名]

第1引数はTwitter idが1行ずつ記載されたファイルです。また第2引数はリスト名です。第2引数が設定されていない場合はファイル名がリスト名になります。 実行すると、APIと紐づくアカウントにTwitterリストが作られます。

まとめ

connpassイベント参加者のTwitterリストを自動で作成するスクリプトを開発したので紹介しました。
今後の課題としては、リストを作った後、イベントに関するツイートだけを自然言語処理で抽出するようなスクリプトを実装してみたいです。


スポンサードリンク


  1. このスクリプトを作ろうとした動機として、別ページの取得がサポートされているconnpassのスクレイピングスクリプトがなかったということもあります。

  2. WebAPIのURLをPythonのメソッドに置き換えれば操作できることが多いので直感的で便利です。