Photo by Hitesh Choudhary on Unsplash
相互リツイートを確実にしたい。
ツイッターで、相互リツイートの約束を確実に返したいと思い、お返しできる方法を考えてみました。
Python × Twitter API でユーザー一覧の取得、SeleniumBasic で連続スクショ貼り付けなど。
- 相互リツイートを確実にしたい
- Python × Twitter API でユーザー一覧の取得
- SeleniumBasic で連続スクショ貼り付け
- Excelの編集
- プログラムの実行
- Excel で確認
- まとめ・感想など
相互リツイートを確実にしたい
Twitter で、リツイートをもらったお礼としてリツイートのお返しを約束したけれど、思いのほかリツイートをいただき、もれなくちゃんと返せているか、少し不安になってしまいました。
もともとのきっかけは、Twitter でよく見かける、
- #ブログ仲間募集中
- #フォロバ100パーセント
- #相互リツイート
・・・などの、ハッシュタグがついたツイートをわたしも真似すれば、フォローやリツイートがもらえて、ブログ仲間さんも増えるかな・・・?、と思い、やってみたからでした。
こちらが、そのツイートです… 恥ずかしながら… (,,´•ᴥ•`,,)///。
ブログ仲間募集中です🌈
— PetPal (@heureux_yoppy) 2019年8月10日
よろしくお願いいたします✨https://t.co/2PD5uu93rb
お願いします🙇♀️
①この投稿をRT
②フォロー
お返し🙆♀️
①固定RT
②フォロバ#ブログ#ブログ初心者#ブログ仲間と繋がりたい#ブログ更新#はてなブログ#フォロバ#アドセンス#Googleアドセンス#拡散希望️
フォローバックするのは、自分のフォロワーのところから確認して押していけばわかりやすいのですが、、リツイート返しの場合は、対象のツイートをクリックして、「○○件のリツイート」というところをクリックして、さらにそこから、ひとりずつ、それぞれのページに行かないと、リツイートできません。
その上、リツイートしたかどうかは、フォローバックのように一覧では、確認できません。
漏れがないかなどを確認するには、またそれぞれのリツイートいただいた方のページに飛んで、確認しなければ、なりません・・。
けっこう、たいへんです… orz💦
何とかリツイートを確実に返したいと、これまで学んだPython・Twitter API・Excel を利用する方法を考えてみました。
手順としては、
- リツイートしてくれたユーザーの一覧をPython で取得
- 取得したユーザーのページのスクリーンショット(画面キャプチャ)をExcel ファイルのシートに貼り付ける(SeleniumBasic 使用)
- スクショを確認し、リツイート漏れをチェックしていく
といった感じです。
順番に、やっていきます。
Python × Twitter API でユーザー一覧の取得
こちらのツールを使えば同等のことができるようですが、後学のため、あえてPythonでやります。
Python のインストール、Twitter API の登録に関しては、以前、ツイート分析をしたときのこの記事でも紹介していますが、、
下記のリンクが親切にまとめられているので、まだの方は、参考になさってください。
Twitter API の承認には、正直、少し手間と時間がかかります。
ですが、ツイートデータの分析など、Twitter のいろいろなデータを取得して利用することができるようになるので、Python の機械学習やスクレイピングなどに興味のある方は、ぜひチャレンジしてみてください。
ソースコード
まず、リツイートしてくれたユーザーの方々のリストを取得するコードは、こちらの記事を参考にしました。
こちらが、そのコードです。ほぼ、参考記事のままですが、取得するデータ項目、一度に取得するユーザー数などを変更しています。
コードに丁寧な解説があるので、そのまま削除せず引用させていただいています。
なお、コードの1,2行目の
#coding:utf-8
#!/usr/bin/env Python
についてですが、ご存じの方もいらっしゃるかと思いますが、この部分はコメントではなく、決まり文句のようなもので、使用する文字コードと実行するプログラムを宣言しています。
くわしく知りたい、という方は、下記を参考になさってください。
プログラムを保存するファイルで使用する文字コードを設定する | Python入門
Pythonプログラムの先頭行の #! シバン(Shebang)について | ガンマソフト株式会社
そして、このコードを利用するためには、requests_oauthlib ライブラリのインストールが必要です。
$ pip install requests requests_oauthlib
ライブラリについて
ライブラリとは、他のプログラムから利用される前提で作られたPython プログラムのことです。
ライブラリにはいろいろなものがあり、[pip] コマンドでインストールしておけば、「import ライブラリ名」と宣言することで呼び出すことができます。
また、Python にあらかじめ付属しているものは標準ライブラリと呼び、インストール不要で呼び出せます。
Python 標準ライブラリ — Python 3.7.4 ドキュメント
たとえば、今回のコードだと、[from requests_oauthlib import OAuth1Session] は外部ライブラリ、[import csv] などは標準ライブラリを呼び出しています。
インストール後、「Twitter Developper > apps > keys and tokens」からキーを取得し、
コードの下記の部分を書き換えます。
※コード27~30行目
もう一か所、コードを書き換える部分があります。
※コード38行目
このツイートIDですが、「""」で囲い、「,」(カンマ)区切りで複数指定することもできます。
ツイートIDの調べ方は、個々のツイートをクリックして表示されるURLの、「status/」から後ろの部分です。
ツイートID を書き変えたら、Python ファイルを保存して、コードを実行してください。
$ python ファイル名.py
実行が完了すると、実行したPython ファイルと同フォルダ内に、「retweet_info.txt」 というテキストファイルが生成されています。
開くと、スクリーンネーム(ユーザー名の、@以降)の一覧が並んでいるかと思います。
これで、リツイートしてくれたユーザーのリストが、取得できました。
※仕様により取得できる件数は直近100件が上限です。
SeleniumBasic で連続スクショ貼り付け
SeleniumBasic とは、Google Chrome やFirefox、IE などのWeb ブラウザを、Excel マクロ(VBA)など外部プログラムから制御できるライブラリのことです。
以前こちらで紹介しました。今回は、これの応用です。
SeleniumBasic の設定は、この記事の下記の部分を参考になさってください。ここからリンクで行けます。
設定後、Excelを起動し、新しいブックを新規作成してください。
新規作成後、ファイルを一度保存します。「名前を付けて保存」から、「Excel マクロ有効ブック(*.xlsm)」の形式を選択し、適当なフォルダに保存します。
ファイル名も、適当でかまいません。
ソースコード
保存後、Excel の画面で「Alt」を押しながら「F11」(ファンクション)キーを押して、VBAエディタを開きます。
開いたら、メニューから「挿入 > 標準モジュール」を選択して新たにモジュールを作成し、下記のコードを貼り付けます。
貼り付け場所がわからない、という方は、こちらを参考になさってください。
Office TANAKA - 今さら聞けないVBA[マクロってどこに書けばいいの?]
※コード18、21行目にはご自身のツイッターアカウントのメールアドレス・パスワードをそれぞれ入れてください。
※コード43行目、「スクショを保存するフォルダの場所」は、任意で設定を、お願いします。
「例:D:\images\」
SeleniumBasic で使えるコマンドについては、下記を参考にしています。あまり情報がないので、助かります。
SeleniumBasicでExcelVBAからFirefoxを自動操作するための覚書 | dsp74118の補完庫
また、下記はSeleniumBasic 公式のサンプルです。ご参考まで。
SeleniumBasic/Examples/Excel at master · florentbr/SeleniumBasic · GitHub
Excelの編集
ユーザーリストをExcel シートに貼り付け
先ほどPython で生成した「retweet_info.txt」ファイルを開き、ユーザーリストをコピーします。
コピー後、作成したExcel ファイルの「Sheet1」をアクティブにし、A1セルに貼り付けます。(ユーザー名がA列にA1、A2、A3…という風に並んだ状態)
プログラムの実行ボタンを設置
こちらを参考に、VBA コード(マクロ)を実行するボタンを設置してください。
ちなみに、マクロ名は「SeleniumScsho2」とつけています。
プログラムの実行
さきほど作成したプログラムの実行ボタンを押してVBA を実行すると、IE(インターネットエクスプローラー)のブラウザが起動し、Excel のSheet1 に並べたユーザーのページを順次表示して、スクリーンショットを貼り付けていきます。
ユーザーのリストをすべて巡回すると、ブラウザを閉じてプログラムの実行が完了します。
※コードのクリックメソッドがうまくいかず、ログインできない場合は、あらかじめIE でログインしてから実行してください。
Excel で確認
シートを閲覧し、固定ツイートをリツイートしているか確認していきます。
左のシートほど新しくリツイートをくれたユーザーです。
もしリツイートしていなければ、A1セルのリンクをクリックすると、デフォルト利用しているブラウザで該当ユーザーのページが開きますので、リツイートしていけます。
また、「Ctrl」+「PgUp」「PgDn」のショートカットでシートを先送り、後戻しできます。
下記のコードはSheet1 以外のシートをまとめて削除するものです。
ボタンに追加しておけば、次回また利用する際に、役立つと思います。
以上です。お疲れさまでした!
まとめ・感想など
今回のツールは(ツールとは呼べませんね 笑)、手作業感バリバリなのですが、Excel に貼られたリツイートしてくださった方々のプロフィールページページをひとつひとつ見てると、個性的な自己紹介や、どんなツイートを固定してるのかなど、楽しいし、勉強にもなりました。
本当はリツイートするところまで自動化したかったのですが、そもそも固定・PIN ツイートはAPI では取得ができないようなので、断念しました。
🐦 Twitter API 1.1 のできないこと - Liaro Engineering Blog - Medium
※固定ではなく、最新のツイートなら取得できます。下記の記事で、どんなことができるのか、詳しく解説されています。
Twitter APIをpythonで使うと〇〇ができる。 - どん底から這い上がるまでの記録
先で触れたように一度に取得できるユーザーの数は直近100件までなので、ある程度リツイートがたまったらPython を実行してユーザーのリストを新たに取得し、リツイートをお返ししていくのがよいかと、思います。
きちんとお返ししていかなければいけませんが、こんな記事もありますので、リツイートは、少しずつ、夜中とかにそっと、お返しして行くのがいいかもしれませんね。
わたしも気をつけます・・。
それってtwitterで嫌われるツイートじゃないですか? | クコシャカクドットコム
フォローバック、リツイート返しのツイートによる反響は、わたしが想像していた以上にありました。
その効果かはわかりませんが、先日初めて、スマートニュースにこちらの記事が掲載されました。
あらためて、リツイート、いいねをいただいたツイッター同志の方々に感謝です。
こちらに関しては、次回アクセス数などの報告含め、記事に書きたいと、思います。
それでは、最後までお読みいただき、ありがとうございました。