カウンター
プロフィール

ユキ

Author:ユキ
FC2ブログへようこそ!

最新記事
カテゴリ
最新コメント
月別アーカイブ
にほんブログ村
にほんブログ村
検索フォーム
RSSリンクの表示
リンク
QRコード
QR

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


↓クリックお願い致します。
にほんブログ村 PC家電ブログ 自作PCへ
にほんブログ村


twitterボット完成しました。

せっかくブログ村のランキングで上位に入っても、更新できずに後退していってしまいましたね。
毎日更新している方々はホントすごいです。
自分には到底出来ません、飽き性なので、、、。

さてそんなことはいいんです。
ボットが完成しました。
内容は水玉コラbotです!水玉コラを1時間おきにツイートしていきます!
リンク→水玉コラ@リク受付中

よろしかったらフォローしてやって下さい。


(´ε`;)ウーン…
もっと硬派なブログを目指していたのになんでこうなってしまったのだろう



さて、今回は水玉コラについて書きたいわけでではありません。
それは前に書いたのでそっちを見てください。
過去の記事「【水玉コラ】概論」
過去の記事「【水玉コラ】作り方」

実はこのbotはbot自体も自作してみました。
twittbot等の既存のサービスもあるのですが、画像をツイートするのにちょっと手間がかかります。
具体的には大概のbotサービスは文字しかツイート出来ません。
なので、画像をツイートするためには一度ツイッターやツイピク等にアップしてそのURLをツイートしなくてはいけません。
それを何百枚もやるのはちょっと、、、な感じでした。
なら作るしかないと思い立ちました。


(ここから先は自分の知識がフワってしているので間違ったことを言うかもしれませんが、ご了承下さい。違っていたらコメントで指摘頂ければと思います。)
なにで作ったかと言うと、前の記事でも書いたかと思いますが、「Google Apps Script」を使いました。

ここまでの経緯としては「twitter、自作、bot」で検索するとPHPのページが一番多く、私はPHPの経験が全くなかったのですが、勉強するかぁと思っていました。
ちなみに私はC系のプログラムしか書いたことがないので、PHPは字面がハードル高いんですよ。
さらに調べていくとGoogle Apps Scriptでbotが作れるという記事を発見しました。

「Google Apps Script」は、Googleが提供するサーバーサイド・スクリプト環境で、UrlFetchというURLをリクエストする機能とトリガーと呼ばれるCronの機能も使えます。
Google Apps Scriptももちろん触ったことなかったのですが、どうやらJavaScriptで書くらしいと知り、JavaScriptの方が字面がCっぽいと思いこのツールを選びました。

さて、どんな感じのフローでこのbotを動かしているか紹介します。
ボット概要

・まず水玉コラを作ります。
コンテンツですね。

・そしてそれを保存します。

・保存先のフォルダはGoogleドライブと同期してクラウドにも保存されます。
Googleドライブ

フォルダ名はタレント名にしてあり、画像と一緒にタレント名もツイートする際にこのフォルダ名を読み込みます。

・アップした画像データをスプレッドシート(Googleが提供してるエクセル的なもの)に登録します。
スプレッドシート

この作業もGoogle Apps Scriptで行っています。
登録の内容は、ファイルID、ファイル名、フォルダ名、投稿回数、最終投稿日時、です。
ファイルIDはGoogleドライブでの管理IDのようなもので、ファイルを呼び出すのに使います。
スタンドアロンであればファイルのフルパスなんかを入れるかと思いますが、Googleドライブはフォルダという概念が希薄でファイルの呼び出しはこの方法がベストな気がします。
ファイル名は自分がわかりやすいように登録してます。
フォルダ名はタレント名でツイートの時に一緒にテキスト情報としてツイートするのですが、その際はファイルIDからファイル情報を読み込み直すので、ここでのフォルダ名は自分がわかるように登録してあるだけです。

後々はこのタレント名に紐付けて別の情報もツイート出来るようにしていきたいと思っています。
例えばアダ名やキャッチフレーズ、商売気を出すならアフェリエイトのリンクを紐付けるもの面白いかもしれませんね。

・スプレッドシートに登録してある画像を抽出してツイートします。
コーディングは楽しいなぁ2

抽出する方法は模索中ですが、投稿回数が少なく、最終投稿日が古いものを優先的に投稿するようにしています。
この辺りを自由に決められるのも自作の強みですね。

2週間ほど稼働していますが、まずまず思い通りに動いてくれています。
まだ、エラー処理等の作らないといけない部分が残っていますが、ちょびちょび作っていきます。


それなりに面白いことをやっていると思うのですが、やってることが水玉コラってことでなんか凄さが伝わってない気がするのは気のせいだろうか?
ではノシノシ



↓クリックお願い致します。
にほんブログ村 PC家電ブログ 自作PCへ
にほんブログ村
スポンサーサイト


GAS(Google Apps Script)を使ってTwitterに画像を投稿する方法

今TwitterのbotをGoogleAppsScriptで作っていまして、これが結構便利なんですよ。

GoogleAppsScriptはサーバーを用意しなくても定期的にツイートしたり出来て、サーバーやホームページとかやってない人にはあってると思います。


私はC#やC系ならそれなりに書けるのですが、それ以外はからっきしで、
JavaScriptでコーディングするGoogle Apps Scriptのこと全然わからないので、基本コピペがメインです。
しかし、ただツイートするだけなら多くの先人たちが、サンプルコードを教えてくれているのですが、画像付きでツイートする方法はなかなか検索してもヒットしませんでした。
ヒットしてもPHPだったりでGoogleAppsScriptでは使えない、、、
なので、誰かの役に立てばと思い記事にしておきます。
と言ってもこれも海外のサイトからコピペしただけですけどね。

TwitterやGoogleのアカウントの取得とか、ディベロッパーの設定とかその他諸々は、先人たちがわかりやすく図解付きで解説している方がたくさんいらっしゃるので省略させて頂きます。
「google apps script twitter」で検索すると多数ヒットします。
普通のツイートが出来るようになってから、下記のソースをコピペすれば行けると思います。



2015/08/13追記
下記のソースは今では使えないクラスを使っています。
修正方法は下記の記事にまとめましたので、こちらを御覧ください。
「GAS(Google Apps Script)でOAuthConfigのサポートが終了」


-------------------------------------------------------------------------
//画像アップテスト
function twitterPostTest() {

//OAuthの初期化
var oAuthConfig = UrlFetchApp.addOAuthService("twitter");
oAuthConfig.setAccessTokenUrl("https://api.twitter.com/oauth/access_token");
oAuthConfig.setRequestTokenUrl("https://api.twitter.com/oauth/request_token");
oAuthConfig.setAuthorizationUrl("https://api.twitter.com/oauth/authorize");
//コンシューマキーとセキュリティキーをプロパティから取得
oAuthConfig.setConsumerKey(ScriptProperties.getProperty("twitterConsumerKey"));
oAuthConfig.setConsumerSecret(ScriptProperties.getProperty("twitterConsumerSecret"));



var boundary = "cuthere";

//Googleドライブのルートにある画像を投稿する場合
var picture = DriveApp.getFiles().next().getBlob().setContentTypeFromExtension();

//web上にある画像を投稿する場合はこっち
//var picture = UrlFetchApp.fetch("http://www.test.jpg").getBlob().setContentTypeFromExtension();

//ツイートするテキスト
var status = ("画像投稿テスト");

var requestBody = Utilities.newBlob(
"--"+boundary+"\r\n"
+ "Content-Disposition: form-data; name=\"status\"\r\n\r\n"
+ status+"\r\n"+"--"+boundary+"\r\n"
+ "Content-Disposition: form-data; name=\"media[]\"; filename=\""+picture.getName()+"\"\r\n"
+ "Content-Type: " + picture.getContentType()+"\r\n\r\n").getBytes();

requestBody = requestBody.concat(picture.getBytes());
requestBody = requestBody.concat(Utilities.newBlob("\r\n--"+boundary+"--\r\n").getBytes());

var options = {
method: "post",
contentType: "multipart/form-data; boundary="+boundary,
oAuthServiceName: "twitter",
oAuthUseToken: "always",
payload: requestBody
};
var request = UrlFetchApp.fetch("https://api.twitter.com/1.1/statuses/update_with_media.json", options);
}
-------------------------------------------------------------------------


↓クリックお願い致します。
にほんブログ村 PC家電ブログ 自作PCへ
にほんブログ村


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。