\r\n\r\n
Twitterをもっと便利に、他の人にだけでも使ってもらう方法を考えていますか?1つの方法は、有益な説明文とともに画像を投稿する自動Twitterボットを作成することです。これを手動でやるか...node.jsを使ってRaspberry Piに載せるかです。その様子をご覧ください。
Twitterで写真や事実、漫画などを投稿しているアカウントを見たことがある場合、これらのアカウントは自動生成されている可能性が高いです。同じトピックに興味を持つ人たちのオーディエンスを作るには最適な方法なのです。
しかし、リツイートやフォロー以外にもう一つ理由があります。Twitterボットを作ると、便利なプログラミングスキルが身につきます。以前、Pythonで基本的なTwitterボットを作る方法(これもRaspberry Piで)を紹介しましたが、今回は違うアプローチで作ってみました。
このプロジェクトでは、node.jsを使用してRaspberry Pi上で写真ツイートボットを構築します。(写真は第一次世界大戦の写真で、短文と帰属表示をつける予定)。情報は基本的にデータベースの配列に格納されます。
写真Twitterボットを作るには、共有したい画像を集めるところから始める必要があります。これらは、あなた自身の画像、またはCreative Comm***などのオープンソースライセンスの下で入手した画像である必要があります。
また、画像と一緒に確認したい属性やその他の情報もメモしておくとよいでしょう。この情報については、ロボットが動き出したら、また後ほど紹介します。
node.jsのインストールから始めましょう。 すでにRaspberry Piが立ち上がっていて、Raspberryがインストールされているはずです。このプロジェクトでは、Raspberry Pi 2以上を推奨します。このプロジェクトは、Raspberry Pi 3 B+でテストしました。
ターミナルで (または SSH 経由で) システムパッケージのリストを更新し、次の場所で最新バージョンにアップグレードしてください。
sudo apt-get updatesudo apt-get dist-upgrade画面上のプロンプトに従って、Piのアップデートを待ちます。
sudo rebootこれが完了したら、curl を使って node.js をダウンロードします。
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -次に
sudo apt-get install -y nodejsこれがすべて終わったら、ソフトウェアが正しくインストールされていることを確認するためにチェックを実行します。これを行う最も簡単な方法は、バージョン番号を確認することです:。
node -vv8.11.3(またはそれ以降)のようなレスポンスが返ってくるはずです。このように表示されれば、node.jsが動作することは間違いないでしょう。
次に、ボットを作成するためのコードを入力します。まず、ディレクトリを作成します。
mkdir twitterbotその後、bot用の新しいディレクトリに変更します。
cd twitterbotここで、server.jsというファイルを作成します。
sudo nano server.jsこのファイルに、行を入力します。
c***ole.log('I am a Twitter bot!');Ctrl+Xで保存して終了し、次のようにスクリプトを実行します。
node '/home/pi/twitterbot/server.js'これで「I'm a Twitter bot!」というフレーズが返ってくるはずです。.これで動作確認ができたので、いよいよnpm(Node Package Manager)を使ってTwitのライブラリをインストールします。と入力して、インストールされていることを確認します。
npm -vここでも、バージョン番号が表示されるはずです。
以下の手順に従ってください。
npm init最初に、作成するアプリケーションに関するnode.jsを入力するように促されます。デフォルトのオプション(下図)が表示されますので、Enterキーを押すだけでOKです。また、お客様ご自身で入力されることも可能です。この設定が完了すると、「はい」で詳細を確認する画面が表示されます。
次に、npmからTwitモジュールをインストールします。
npm install twit --savenodeu modules サブディレクトリにダウンロードされるのを待ちます。
sudo nano server.jsここで、先に入力したコマンドを削除し、次のコマンドに置き換えます。
var fs = require('fs'), path = require('path'), Twit = require('twit'), config = require(path.join(__dirname, 'config.js'));先ほどと同様に保存して終了します。
動作するTwitterボットを作るには、Twitterアプリケーションを作成する必要があります。簡単な手続きで、まずTwitterのアカウントを新規に登録する必要があります。この際、アカウントの確認のために電話番号も必要となりますのでご注意ください。これが完了したら、developer: twitter.comにアクセスしてアプリを作成します。
開発者アカウントをお持ちでない場合、いくつかのフォームに入力する必要があるため、時間がかかる場合があります。これは、Twitterがスパムを避けるために行っている措置ですので、時間をかけて正確にお答えください。
アプリケーションを作成する」をクリックし、必要な情報を追加してください。この記事を書いている時点では、開発者システムは大規模なオーバーホールを行っているため、数日待つ必要があるかもしれません(他の質問にも回答する必要があります)。
次に、「Keys and Tokens」タブに切り替え、「Permissi***」で「Access Permissions」を見つけて、「Read and Write」に設定されていることを確認します(設定されていない場合は、「Edit」を使用します)。次に「Keys and Tokens」に切り替えて、次のことをメモしてください。
Access Token」の下にある「Create」をクリックして生成します。
これらは、ボットがあなたのTwitterアカウントにアクセスできるようにするために必要なAPIキーです。
コマンドラインに戻り、nanoでconfig.jsを以下の場所に作成します。
sudo nano config.js以下を追加します。
var config = { c***umer_key: 'XXXXX', c***umer_secret: 'XXXXX', access_token: 'XXXXX', access_token_secret: 'XXXXX'}module.exports = config;XXXXXX "の部分は、対応するAPIキーの詳細をご自身のものに置き換えてください。
保存して終了し、server.jsを開いてください。
sudo nano server.jsここで、次の行をファイルの末尾に追加してください。
var T = new Twit(config);T.post('statuses/update', { status: 'My first tweet!' }, function(err, data, resp***e) { c***ole.log(data)});次のように読み替えてください。
もう一度保存して終了し、コマンドラインから次のように入力します。
node server.jsで結果を見るには、ブラウザでTwitterのアカウントを開いてください。
ボットがツイートしていることが確認できたので、次はそれに何かしてあげましょう!
写真をツイートするには、画像のコレクションをフォルダ(よくimagesと呼ばれる)にコピーします。まずは10数枚から始めます。
次に、server.js ファイルに戻ります。
sudo nano server.jsここでは、T.post ('statuses/update')で始まる行にツイートを送信するコードを削除してください。
次に、u 配列から random u という関数に置き換えます。imagesフォルダーからランダムに画像を選びます。
function random_from_array(images){ return images[Math.floor(Math.random() * images.length)];}これができたら、もう1つの機能として、㊙ランダム㊙画像をアップロードする機能を追加します。
function upload_random_image(images){ c***ole.log('Opening an image...'); var image_path = path.join(__dirname, '/images/' + random_from_array(images)), b64content = fs.readFileSync(image_path, { encoding: 'base64' }); c***ole.log('Uploading an image...'); T.post('media/upload', { media_data: b64content }, function (err, data, resp***e) { if (err){ c***ole.log('ERROR:'); c***ole.log(err); } else{ c***ole.log('Image uploaded!'); c***ole.log('Now tweeting it...'); T.post('statuses/update', { media_ids: new Array(data.media_id_string) }, function(err, data, resp***e) { if (err){ c***ole.log('ERROR:'); c***ole.log(err); } else{ c***ole.log('Posted an image!'); } } ); } });}imagesフォルダからランダムに画像を選択し、選択後、media/upload APIを使用してTwitterにアップロードする機能です。
次に、以下のコードを追加します。これは、imagesディレクトリを見つけ、そこから画像を取り出し、60秒ごとにランダムな画像を投稿するものです。このタイミングは編集可能で、コード上では図60000のように表現されています(はず)。より長い間隔での使用を推奨します。
setInterval(function(){ upload_random_image(images); }, 60000); }});Ctrl+Xで保存、Yesで保存(GitHubのソースは終了しています)。
node server.jsコマンドを一回使うだけで、写真のツイート開始を促すことができます(投稿を終了する必要がある場合は、Ctrl+Zでこの動作をキャンセルしてください)。server.jsスクリプト)
画像にテキストを追加する必要がある場合は、配列を使用して行うことができます。配列は画像のファイル名を参照し、追加されるべきテキストをリストアップします。例えば、撮影していない画像に属性を付加することができます。あるいは、事実や参考文献を追加することもできます。
CreateImage.jsより
sudo nano images.jsここで、以下のコードを追加します。ファイルとソースの2つの要素を含む配列である。画像のファイル名と属性(通常はURL)が含まれています。
var images = [ { file: 'image0001.png', source: 'http://www.example.com/image0001.png' }, { file: 'image0002.png', source: 'http://www.example.com/image0002.png' },]上記の手順を必要に応じて各画像について繰り返し、image.jsファイルを次のように終了します。
module.exports = images;ファイルを保存して閉じ、再度server.jsを開いて、以下のように変数のリストに追加します。
images = require(path.join(__dirname, 'images.js'));保存して終了し、そのnode.jsでTwitterボットサーバーを再起動すると、再びコマンドが発行されます。
また、「source」フィールドを使用して、画像の背景を説明するテキストをURLと一緒に記載することができます。
これで、指定したトピックに関する写真、事実、属性を共有する、自動的なTwitterボットが稼働するはずです。
まとめると、このような流れになります。
このコードを使って、あらゆるテーマの写真、事実、属性をツイートできることが最大の特徴でしょう。
同じような設定で実行できる他のボットプログラムについて知りたいですか?Raspberry Piで動く最高のTwitterボットプログラムのリストをご覧ください。