栗’s diary

Python勉強中。トレードに役立つようなTwitter bot開発中。

ツイッターbot作成の道(その2)

 ※本記事は別ブログで書いてた内容を多少の加筆修正の上、転載したものです。

ameblo.jp

どうも。前回、Tweepyを使ったツイートに失敗したものです。

  • Tweepyを使わずにGAETweet

fujit33.hatenablog.com私と全く同じ苦労してる人がいて共感した。
で、この人の解決法を真似ることにした。
Tweepyを使わずに呟く!

この記事も参考にしながら。

offsidenow.phpapps.jp

AppEngine-OAuth-Libraryってのをダウンロードしてリネイムして、Tweepy代わりに使うわけですな。
ディレクトリ構造はうまく真似できかなかったが、とりあえずツイートに成功。
(後で理解したことには、空でもいいから「__init__.py」のファイルをフォルダ内に一緒に置かなければいけないってこと。)

 定期botの完成もまもなくかと思った。
しかし、加工して日本語をツイートしようとするとエラー。
「SyntaxError: (unicode error) 'utf8' codec can't decode byte 0x82 in position 0: invalid start byte」
辛い。

 

勉強し始めた頃に、Pythonでは日本語の扱いが少々厄介って聞いたし、実際そうだったし。
(Python3系だと改善されてるって噂だけど。)
でも今までは自分用に使ってただけだし、Jupyter Notebookでプログラミングする分には気にならなくなってたので目を背けていた。

ここらで諦めて、少しだけ調べてみた。動いてくれと願いつつ。

hikm.hatenablog.com

d.hatena.ne.jp

文字列(str型)とユニコード文字列(unicode型)は別物。ふむふむ。
Encode/Decodeが何から何への変換を指しているか。ふむふむ。
自分自身が利用している環境について知っておくべきこと。はい、すみません。
その他の記事とかも一通り読んで、色々なパターンを試してみたけど、やっぱり何かしらのエラーが出続けた。
日本語を諦めかけようとしたその時、それは見つかった。

okwave.jp

そのファイル、シフトJISで保存してませんか?


テキストエディタ秀丸使ってるけど、それがシフトJISで保存してるんかね。(よくわかってない。)
とりあえず冒頭部分にある「coding: UTF-8」を「coding: shift_jis」 に書き替える!
アップデート、更新。


・・・・・・

成功!!!

ありがとうOKWAVE
ありがとうkmeeさん!
ついでにありがとうkenta7859さん。

 

  • Cronでスケジュールを指定

GAEを通してやっとまともにツイートできるようになり、いよいよ定期的に呟くように設定。
cron.yamlというファイルで指定してやればいいとの事。簡単、簡単。

remotestance.com

細かい指定方法については公式の方で。

cron.yaml Reference  |  Python  |  Google Cloud Platform

作業完了。後は指定した時間に呟いてくれるはず。
あれ、時間が来ても呟いてくれない...。
現在時刻を取って来たらグリニッジ標準時だったからそのせいかも。
でも、timezoneは指定したけど...。
まあもう少し待ってみるか。
そして次の日になっても呟かないのであった。

 

  • Deploy

次の日、飲みながら調べた。

前に読んだこの記事の最後にあるデプロイという言葉を。

qiita.comそう言えば、前回紹介したこの記事にも。

開発サーバとして便利なGoogle App Engine Launcher - ねずみとりんご

 なるほど。いままでの作業は全部ローカルホストでやってただけで、
アプリケーションとして、これをGoogleにアップしないといけなかったのか。
そこでcronが働いてくれるわけか。

サク飲みを切り上げ、帰宅。
「Deploy」ポチッ。エラー...。┐(´д`)┌ヤレヤレ

探せば似たような経験をした人がいるネット社会。

d.hatena.ne.jpでも、これでも問題は解決しない。

色々、調べて分かったこと。
アプリをアップするGAEの方にも同じ名前でアプリを作っとかないといけないって事。
GAELauncherでDeployして勝手に出来上がるわけじゃないんだね。

Google App Engine Launcherへアプリケーションの登録 | 無料レンタルサーバ(格安・有料)情報のレンサバ.com

[Diary] GAE/pyとbulkloader - fukuitの日記

GAEアプリケーションを作ろう!(1/6):GAEで始めよう! JSP/サーブレット入門

GAE(Google App Engine)に登録してみるてすと。 - うみたんのアトリエ

操作画面とか少し変わったと思うんだ。
[Create Application]ボタンの代わりに何かのメッセージがあったような記憶が。
ボタンがあるならそこから。

とりあえず https://appengine.google.com/ にアクセス。
「Before getting started, you want to learn more about developing and deploying applications.」もっと学習してから来いと。

Creating a Guestbook Application  |  Python  |  Google Cloud Platform

あっ、こんな所にマニュアルが...これを最初に読むべきだったのではないか疑惑。

Google App Engine FAQ  |  App Engine  |  Google Cloud Platform

FAQの1項目目 -「How do I sign into my Google App Engine account?」
you can log into your App Engine account by visiting the Google Cloud Platform ここからいけるっぽい。

ちなみにマニュアルの和訳版もありました。対応が取れてないのは新旧の問題でしょうか。

qiita.com

必要なのかなと思って無料トライアルもポチってしまった。なくてもいけるっぽいのに。

cloud.google.comクレジットカードの登録がいる...。

というわけで、GAE(いまはGoogle Cloud Platformに統合されてる?)にも同名アプリケーションを作成した後に再びDeploy。
うん、成功。

 時間のずれはこの後スタッフ(私)がちゃんと修正しました。
ちょっと自分の体験をもとに時系列に並べちゃったり、書きながら新しいことがわかってきたので、特にGAEに関しては重複させながらまとめ記事を作ろうかな。予定は未定。(続く)