ナゲッツ親子とハッシュタグをつけTwitterで投稿すると
いうイベントをやっており、ぜひ当てたいということでBotを作ってみました。
(ツールもあるのですが、自分で作ったほうが楽しいと思い)
ユーザビリティ的には良くないですけども一応完成しました。
悪用やツールを使った行為が行われ繰り上げをしたそうです。
サーバが何度も落ちており
簡単に言えば DDoS攻撃に近いですね。。。
と考えてみると上記の僕のやり方もよくないということです。
反省します。
いずれにせよやり方とソースだけは備忘録としても書いていきます。
エディタ:Intelli J
一番下にスクロールすると いくつか項目があり、その中のToolsの中の
Manage my apps をクリックします。
Name,Description,Website callback URLは基本的には何も気にしないで入力しても
次へ進めます。
そしてボタンにチェックを入れ先に進みます。
基本的にキーがあるのですが、見られていけませんので
セキュリティを徹底しましょう。
タブのPermissionを開いて
Accessの中の
Read only
Read and Write
Read,Write and Access direct message
の3つから一つを選びます。
決まったらラジオボタンを押してください。
DMをBOT化したければ 一番下のをチェックしてださい。
consumerKey,
consumerSecret,
accessToken,
accessTokenSecretの4つになります。
これはプログラムの中に組みますのでコピー&ペーストをしましょう!
僕は、Intelli Jを使っていますが、
コンパイラの機能が付いていればなんでも大丈夫です。
僕のはフリーで、とても動作が軽いのでお勧めです。
Android Studio でもできないことはないような気はします。
一応コンパイラが搭載していないエディタでも
拡張機能を入れることで可能になるケースがあるので
調べてみてください!!
ここからは、Intelli Jの流れで説明していきます。
次に Twitter4Jというものをダウンロードします。
これはTwitter APIのJavaラッパです。
これを利用することによってとても簡単に取得することができます。
http://twitter4j.org/ja/index.html
このサイトを開いてもらって
ダウンロードという項目の
最新安定バージョン(twitter4j-4.0.4.zip)をダウンロードします。
おそらくzipファイルでダウンロードされるのですべて展開しましょう。
するとファイルが入っていると思いますが、
いったんスルーしましょう笑
とりあえず、このフォルダーはいじりません。
外部から呼び出すだけなので置いときましょう。
では、エディタで新しいプロジェクトを作ります。
名前は何でもよいです
少しバージョンやエディタによって異なると思いますが、
基本的にはsrc-パッケージ名-Javaのクラス名という感じですかね。。
では、まず先ほどダウンロードしたtwitter4jを入れていきます。
左上のFileを押します
そしてProject Structureを押し
僕はjava version 1.8が選択されています。
そして左のメニュー欄からModulesを選びます。
その後緑のプラスマークがあると思います。(右の方)
それを押すと3つの選択肢が出てくるのでLibraryを選択します。
すると、ファイル選択の画面が出てくるので
先ほどダウンロードしたtwitter4jファイルの中の Libファイルを
選択してOKを押します。
そのあと一覧にファイルが表示されますのでチェックをして
Applyを押し適用させます。
これでtwitter4jの導入は終了です。
次にsrcの直下にファイルを作ります
srcの上にカーソルを合わせて右クリックするとNEw とあるのでそちらを開くと
いろいろ作れるファイルが出てくるのでResourse Bundleを選びます。
そしてファイル名を twitter4j.propertiesにします。
はい、とりあえず 入力のところを先ほどのTwitterAPIで取得した
自分だけのキーを入力していきます。
ちなみに上のプロキシ―は
プロキシ―環境にある方のみで大丈夫です。
プロキシ―環境の方は、ホスト名とポート番号を入力しましょう。
次に、src-パッケージ名の中に作ったjavaファイルに
プログラムを書いていきます。
ちなみに今回作るボットは
何秒間に一度自動で呟くBOTを作成なので
作りたいものが異なる方はここまでです。
ありがとうございました。
ここからは
連続ツイートをするボット作成になります。
一応こんな感じになります。。。
結構ほかの記事から参考にしたところも多いのですが、、、
Twitterは同じ言葉をツイートすることはできないようになっています。
なので僕は、ほんとに汚いですが、
3つの乱数を取得して
それを足したり合わせたりして同じツイートになるのを避けています。
これでもなると思うので同じ文字列を作らないってできると思うのですが、
僕は time.getsecond()を取ってきて
今の経過した秒を示しているものを文字列にして
ツイートする仕組みにしています。
これでかぶりは結構避けられると思うので。。
あと、Thread.sleepで停止です。
ミリ秒で表示されているため5000というのはつまり5秒です。
起動ー5秒おやすみー終了ー起動・・・
といった形です。
ちなみに変更可能ですが、twitterに制限が設けてあり
あまり呟きすぎるとアカウントをロックされます笑
気を付けましょう。。
そして、呟く回数はfor文で決めています。
この場合だと20回に到達する前に終了になっています。
なので上の
起動ーおやすみー終了・・・を20回未満で繰り返すということです。
これも変更可能です。
一応try文を入れることでエラーは防げました。
結構呟けないときもあるかも!知れません。。
僕の環境では一応呟けました。
終了させたくなかったら
Stopさせるメソッドを消してもできるのかな笑。。
はい、たぶん、これで実行すれば呟けていると思います。
使い方には気を付けて楽しみましょう!!
ではではありがとうございました!
コメント