ちょっと前に懸賞って自動化できるんじゃね?と思い立ってコードを書いていたらそれっぽいものができました。(当たるかどうかはおいていて)
今回はpythonでtwitter懸賞を自動化するためのヒントみたいなものを書いていこうと思います。
twitter懸賞を自動化するための準備
pythonでtwitter懸賞を自動化するといってもいろいろ準備が必要になります。
- 使っているパソコンにpython環境を構築
- pythonのライブラリをインストール
- twitter deverlopoerで開発者申請
- twitterアプリの作成
python環境の構築については、Anacondaをインストールすれば一瞬で環境構築ができます。ライブラリはtweepyを使うのであらかじめインストールしておきましょう。
tweepyとは
tweepyはtwitterのapiをつかってさまざまなことができるライブラリでネットにもtweepyの情報があふれており、かなり有名なライブラリです。
twitterへ開発者申請する理由
twitterへ開発者申請する理由はこれをしないとtwitterのAPIが利用できないからです。twitterAPIを利用するには開発者登録したあとアプリを作成することではじめて利用できるようになるのです。
以下のURLにアクセスすると開発者申請することができます。
申請が通ったあとはアプリを作成してアクセストークンなどを取得しましょう。
twitter懸賞自動化のためのコードを書く
pythonでコードをかいていきまが、おそらくいろいろな問題にあたります。
- リツイートが含まれたツイートを取得してしまう。
- 100件分しか取得できない
- ツイートが重複している。
- 指定した期間のツイートを取得するにはどうすればいいのか?
これらの問題は実は簡単に解決することができます。
twitterの検索コマンドを知っておく
実はtwitterには検索コマンドがあり、これらを把握しておくことはとても重要です。たとえば島風 filter:imagesでツイッター検索すると島風と画像が含まれるツイートの検索されます。
詳しくは以下のURLにアクセスするとtwitter検索コマンドをまとめたサイトに飛びます。
tweepyの特徴を理解する。
tweepyの特徴を知ることで、コードの完成がちかづきます。たとえばリツイートを除外したい場合2つの方法が考えられます。
- 検索段階でリツイートを除外する
- 取得済みの結果からリツイートを除外する
twitter懸賞に関するツイートを取得すると大量にリツイートのツイートを取得してしまい本ツイートが見つからないという結果になります。if文でリツイートを除外できますが、検索段階でリツイートを除外するようにしましょう。
重要なのはtweepyがtwitterの検索コマンドを網羅していることにあります。
たとえば exclude=”retweets” とすればリツイートを除外することができます。つまり検索クエリとは別に引数を用意できるということです。tweepyの特徴を理解することによって、適切にフィルタリングすることができるでしょう。
DBを使って重複応募しないようにする。
わたしがよく考えるのはdbを使って重複しないようにする方法です。pythonでは手軽に使えるdatabaseとしてsqlite3を使うことができます。
コードの一部ですが、以下のようにするとデータベースがなかったら勝手にdbを作ってくれます。
c.execute(‘create table if not exists tweetlist(id integer primary key autoincrement, title text, postdate text)’)
dbを手軽に操作、閲覧出来るようにする。
dbのデータを確認したいとき、いちいちsqlのコードを書いて確認していてはかなり面倒です。DB Browser for SQLiteをインストールして手軽にdbを閲覧できるようにしましょう。
以下のURLにアクセスするとダウンロードできます。
まとめ
今回は運用までは踏み込みませんでしたが、twitter懸賞自動化のためのヒントはつかめたかと思います。この手の話はうまくデータが取得できるかどうかが山場でそこをのりこえればあとは簡単かもしれないです。
twitter懸賞自動化のコードは非公開としますが、おそらくネットに落ちてます(詳しくさがしてない)
twitter懸賞は毎日大量に追加されるでしょうから、あとはそれをどう裁いていくかですね。twitterAPIを駆使しすぎると、仮凍結みたいな感じでフォローできなくなることがあります。(そこまでは検証してない)
api制限があって結局自動化できない。
— psbeginer@コーダー (@psbeginer) May 13, 2020
おそらくですが、とりこぼしなしで懸賞に応募していくことは不可能だとはおもいますが、試してみる価値はあると思います。では。
コメント