さくらレンタルサーバーを活用してGoogle AdSenseとAmazonのアフィリエイト収入レポートをiPhoneやAndroid端末にプッシュ通知します。レンタルサーバー活用術としていかがでしょうか。これはiPhoneへの通知にProwl、Androidへの通知にはNotify My Androidを利用します。
アフィリエイト収入実績を取得するには@hitoriblogさんのRubyスクリプトを使います。
さくらレンタルサーバーのRuby環境構築については拙エントリのこちらをご参考まで。
Rubyライブラリの追加とRubyのアップデート
adsense-info.rbの実行に必要なRubyライブラリをインストールします。
1 |
% gem install adsense-info |
これで実行すると”CompatibilityError: incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)”というエラーが出てしまいます。文字エンコードの関係でエラーが出ており、Ruby-1.9.2で解消されるのではというのを見かけてRubyの環境を1.9.1から1.9.2に上げてみると”ArgumentError: invalid byte sequence in US-ASCII”と内容はかわりましたがまだエラーが出たままです。
最終的にはadsense-info.rbに「Encoding.default_external=”UTF-8″」を追記することでエラーは消えました。2行目に”# -*- coding: utf-8 -*-“と記述してUTF-8を宣言しているのですが効果がないようです。これで通常実行が可能となり、ホームディレクトリに”affiliate-info.txt”が出来ているはずです。
cronに登録する
そのままcrontabで登録してみてもうまくいきませんでした。どうやらcronで実行すると環境はシェルログインで準備した.cshrcの設定は反映されていないため、rubyコマンドがデフォルトコマンドが優先されてしまい、またライブラリも読み込んでくれません。そのためaffiliate-info.rbの先頭行にはrubyがインストールされている場所を絶対パスで書きます。
またrubyには”-I”というライブラリを指定するコマンドオプションがあるようですが、これもうまくいきませんでした。スマートではないような気がしましたが、環境変数を設定してからaffiliate-info.rbを実行するシェルスクリプト”affiliate-cron.sh”を作ってcronに登録しました。うまく動いているようです。
1 2 3 4 5 6 7 8 9 |
#!/bin/sh RUBYLIB=$HOME/local/lib/ruby/site_ruby/1.9.1:$HOME/local/lib/ruby/1.9.1 GEM_HOME=$HOME/local/lib/ruby/gems export RUBYLIB export GEM_HOME /home/username/local/bin/affiliate-info.rb |
プッシュ通知させるための準備
必要なライブラリをインストールします。
1 |
% gem install prowly ruby-notify-my-android |
Androidの場合はNotify My AndroidをAndroidマーケットからインストールし、Notify My Android – HomeでサインアップしてAPIキーを取得します。Prowlの場合はAppStoreからインストールしてProwl – iOS Push NotificationsにサインアップしAPIキーを取得します。
次にaffiliate-info.rbに、Google AdSenseとAmazonから取得したアフィリエイト実績をプッシュするための記述を追記します。
iPhoneにプッシュ通知するための設定(Prowl)
1 2 3 4 5 6 7 8 9 10 |
require 'prowly' #先頭のrequireの辺りに追記します。 ・・・ #一番下に以下を追記します。 Prowly.notify do |n| n.apikey = "yourapikeyyourapikeyyourapikeyyourapikey" #取得したAPIキー n.priority = Prowly::Notification::Priority::MODERATE n.application = "Prowly" n.event = "Affiliate Status Update" #プッシュ通知のタイトル n.description = "Google AdSense ¥#{adsense} \n Amazon ¥#{amazon}" #プッシュ通知本文 end |
HTC Desire S(Android)にプッシュ通知するための設定(Notify My Android)
1 2 3 4 5 6 7 8 9 10 |
require 'ruby-notify-my-android' #先頭のrequireの辺りに追記します。 ・・・ #一番下に以下を追記します。 NMA.notify do |n| n.apikey = "yourapikeyyourapikeyyourapikeyyourapikey" n.priority = NMA::Priority::MODERATE n.application = "NMA" n.event = "Affiliate Status Update" #プッシュ通知のタイトル n.description = "Google AdSense ¥#{adsense} \n Amazon ¥#{amazon}" #プッシュ通知本文 end |
ファイルに書き出す必要はないのでFile.openはコメントアウトしておきました。以前、メールで通知する方法も試してみましたが、プッシュ通知のほうが便利でいいです。ご覧のとおり実績はというと・・・
謝辞
@hitoriblog さんのRubyスクリプトを改変させていただきました。この場を借りて御礼申し上げます。