栗のブログ

ミニブログtwitterに収まらないことを書いてみよう


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

・Tweepyを使わずにGAETweet

「PythonでTwitter Botを作るまでの長い長い物語(完結編)」
私と全く同じ苦労してる人がいて共感した。
で、この人の解決法を真似ることにした。
Tweepyを使わずに呟く!

「Google App Engine for Python から Tweet api1.1」
この記事も参考にしながら。

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でプログラミングする分には気にならなくなってたので目を背けていた。

ここらで諦めて、少しだけ調べてみた。動いてくれと願いつつ。
「PythonのUnicodeDecodeError、UnicodeEncodeErrorを正しく理解する」
「Unicode で萎えそうになったとき(orz)に思い出してほしい5つのこと」

文字列(str型)とユニコード文字列(unicode型)は別物。ふむふむ。
Encode/Decodeが何から何への変換を指しているか。ふむふむ。
自分自身が利用している環境について知っておくべきこと。はい、すみません。

その他の記事とかも一通り読んで、色々なパターンを試してみたけど、やっぱり何かしらのエラーが出続けた。
日本語を諦めかけようとしたその時、それは見つかった。

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

・・・・・・

成功!!!

ありがとうOKWAVE!
ありがとうkmeeさん!

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


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

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

「GAE/PのCronで定期的に処理を実施する方法」
細かい指定方法については公式の方で。
「Scheduled Tasks With Cron for Python」

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


・Deploy

次の日、飲みながら調べた。
「GoogleAppEngine SDK for PythonでTwitter BOTを作る」
前に読んだこの記事の最後にあるデプロイという言葉を。
そう言えば、前回紹介したこの記事にも。
「開発サーバとして便利なGoogle App Engine Launcher」

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

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

探せば似たような経験をした人がいるネット社会。
「Google App Engine(GAE)デプロイ時の注意点」
でも、これでも問題は解決しない。

色々、調べて分かったこと。
アプリをアップするGAEの方にも同じ名前でアプリを作っとかないといけないって事。
GAELauncherでDeployして勝手に出来上がるわけじゃないんだね。
「Google App Engine Launcherへアプリケーションの登録 」
「GAE/pyとbulkloaderAdd Star」
「GAEアプリケーションを作ろう! (1/6)」
「GAE(Google App Engine)に登録してみるてすと。」
操作画面とか少し変わったと思うんだ。
[Create Application]ボタンの代わりに何かのメッセージがあったような記憶が。
ボタンがあるならそこから。

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

「Getting Started Guide」
あっ、こんな所にマニュアルが...これを最初に読むべきだったのではないか疑惑。
「FAQ」
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 Console
ここからいけるっぽい。

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

必要なのかなと思って無料トライアルもポチってしまった。なくてもいけるっぽいのに。
「Google Cloud Platform 無料トライアル」
クレジットカードの登録がいる...。

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

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

yyy1980さんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

AD

Ameba人気のブログ

Amebaトピックス

      ランキング

      • 総合
      • 新登場
      • 急上昇
      • トレンド

      ブログをはじめる

      たくさんの芸能人・有名人が
      書いているAmebaブログを
      無料で簡単にはじめることができます。

      公式トップブロガーへ応募

      多くの方にご紹介したいブログを
      執筆する方を「公式トップブロガー」
      として認定しております。

      芸能人・有名人ブログを開設

      Amebaブログでは、芸能人・有名人ブログを
      ご希望される著名人の方/事務所様を
      随時募集しております。