Tag Archives: 制作物

クライアントとBOT作成のために・・・

とりあえず、プロジェクトを立ち上げようと思います。
その方が、行き当たりばったりでやるよりモチベーションが上がりそうだと考えたので。
とはいえ、私のやることのほとんどは行き当たりばったりなんですが・・・(苦笑)

で、とりあえず、プロジェクト名は
「さつきったープロジェクト」
と称することにしました。

私のHNが使われていますが、それに深い意味はありません。
ただ、クライアントに関しては、
「サツキによるサツキのためのサツキ専用のクライアント」
という位置づけになる予定でいるので、要するに自己満でクライアント作ってみるよーってことです。

BOTについては、名前は別途考えますが、一応「さつきったープロジェクト」の一部分ではあります。
クライアントの方を優先的に作ろうと考えているので、こちらの方は完成が少し遅れる可能性があります。
とまぁ、モチベーションアップのために立ち上げたプロジェクトはこんな感じ。
まだ、漠然としていますが、追々まとめていこうと思います。
ではでは。

問題解決・・だけど・・

Incorrect(ryとの戦いは一先ず終了。
原因は、UTF-8コードでポストしようとしていたからでした。
一瞬見ると「?」となるような問題ですが、説明すると・・。

まず私は、スクリプトをSHIFT-JISで保存し、Twitterへ投稿する際はUTF-8にして投稿するようにコーディングしました。
ところが、@つきポストや一部のポスト内容だとIncorrect(ryを吐いてしまう問題が発生しました。
んで、試しにUTF-8でスクリプトを保存し、文字コード無変換でポストをしてみたら、あっさりとポストできました。
ということで、文字コード変換のところで躓いていたのであった・・・と。

なぜUTF-8でポストするのかというと、Twitterで使われている文字コードがUTF-8だからです。
TwitterAPI仕様書にもポストするときはUTF-8にコードを変換してポストするよう書いてありました。
なので、それに乗っ取ってコーディングをしたというわけです。
とりあえず、問題が解決したので、このまままたテストを継続してみようと思います。
その間に、リプライやタイムラインの発言に反応させる方法を見つけなければ・・。

解決しない問題との奮闘

前回の記事でも言ってるとおり、RubytterがRuby1.9で動かない問題と奮闘しているわけですが・・。
どうやら、gemでインストールできるjsonライブラリに問題があるらしい。
Rubytterで使っているjsonライブラリがRuby1.9で動かないらしい。
Rubytter自体は1.9でも、問題なく動きます。
その証拠に、jsonがエラーを吐いたのにもかかわらず、Twitterにポストが出来ていることが確認できました。

うむぅ・・このままだと精神が持たないかもしれませんね。
よく考えれば、Pythonとかやったことないくせに、いきなりRubyやるなんてハードル高かったかなぁとか思えてきました。
独学するにも、BOTが作れる程度の知識だけ身につけばいいので、深く学習することなんて考えていません。
かといって、詳しく学ばないと、Rubyの仕組みがわからず、コーディングで詰まってしまいます。
しばらく奮闘して、だめなら、開発言語をPHPに変えることも検討しています。
あっちの方が情報豊富だし、すぐに作れそうですしね。
奮闘はまだまだ続く・・・。

Incorrect Signatureとの戦い

OAuth認証を用いたBOTを作成して、ようやくテスト運用を開始したわけですが・・。
運用開始して早速、問題が発生しました。
タイトルの通りなんですけど、ある発言をポストしようとすると何故か「Incorrect Signature」と出て、RubytterでAPIエラーを起こしてしまいました。
OAuthトークンの設定とかは、参考にしたサイトのコードと比較しても間違いはありませんでした。
その問題の発言部分を別の内容に書き換えるとエラーを吐かずにすんなりと投稿してくれます。

となると、文字コードが絡んでるのかなぁとか思ったりします。
しかし、ここでUTF-8コードで保存すると今度は、「♪」が場所によって文字化けてしまいます。
Ruby1.9を使えば解決するのだが、1.9だと何故かRubytterがエラーを吐いて動いてくれません。
そんなジレンマの中、「Incorrect Signature」を倒すために奮闘しています・・。
未だに疑問なのはRuby1.9で動いてたRubytterが何故1.9で動かなくなったのか。
RubyでBOTを作り始めた頃は難なく動いていたのですが、ある日突然動かなくなりました。

うぅむ・・・最初からRubytterは1.9に対応していないのか、導入手順を間違えたのかなんなのか・・。
ここら辺は今後、調査の必要ありですね。
そんなわけで、テスト運用は一時的に停止中です。
Incorrect Signatureが倒せ次第再開するつもりです。

テスト運用開始

まだ鍵付きだけど、試験運用してみることにしました。
pycronを使ってスケジュール実行してみようかと思ったけど、うまく実行されないようなのでloopメソッドを使い、その中で条件分岐入れたり、乱数振って現在時刻と剰余演算させて結果が0の場合にポストさせるようにしてみたり・・。時報機能も付けました。
ポスト時間は朝5時~深夜2時半まで。それ以外はポストさせないようにしました。
乱数振って、それと現在時刻を剰余演算させてるから、発言頻度は本当にランダム・・・かもしれない。

現在時刻っつっても、分だけで演算すると短時間にポストしすぎて規制されそうなので、秒も剰余演算させてあります。
秒まで演算させれば恐らく、規制は回避できると思います。
5分ごととか、1時間ごとでも良かったんですけど、それでは面白くないので、ランダムにしてみる試み。
ちなみに、BASIC認証ではなくOAuth認証を使っています。
実行結果が満足いくようになったら、鍵外してこのブログで公開する予定です。
その際に、フォロー返しのこととかについても触れる予定です。
これで、BOT作りの第一歩が踏み出せそうです。
理想のBOTに近づけるのには当分時間がかかりそうですけど。