はじめに
この記事はプログラミング初心者によるメモ書きとしての需要が大きいです。
みる方はその辺をご容赦ください。
また、優秀な先輩プログラマーの方のコードを貼っただけの作業です。詳しく知りたければこちらの超優秀な記事を参考にしてください↓
Twitterの名前を5分毎に東京の天気☼☂☃と連動させるサーバレスプログラムを書いたら色々知らないことが出てきた話
AWS lambda と Python3 を使って現在の天気をTwitterの名前に組み込むスクリプトを書きました。
Twitterの名前に絵文字を自動設定してみる
目次
1. したこと、できるようになった事
2. 実際のコード
3. まとめ
1.したこと、できるようになった事
1.twitterAPI、OpenWeatherMapsAPIの取得
2.優秀そうなコードをコピーしてちょっと改造する
3.herokuへデプロイ!
・ 各種API取得方法はググって各々調べてください。たくさん載っています。
twitterAPI取得
・ 優秀そうなコードは,諸先輩方がそれぞれの言語で公開されています。ググりましょう。
『先輩プログラマーの方々、本当に感謝します。』
・ 僕はクレカすら持っていない貧乏プログラマなので、AWSlambdaすら使えず、heroku上で使うことにしました。詳しいやり方はググってみましょう。
Heroku×bottleを使って4分33秒でWebアプリを公開する
実際のコード
今回はpythonを用いたので、大まかなプログラムはこの方の記事
のコードをほぼパクらせて頂いてます。常々感謝します
ただ、いくつか変更点はあります
heroku上だと、定期的にプログラムを走らせるための別のプログラムが必要みたいで、それを作る必要があります。
例えば
def auto_wheather_change():
#ーー実際のコードーー
return
というプログラムを実行すれば、お天気がtwitterの名前に反映されるけれど
heroku上ではそれだけでは実行できないのです。簡易そこでclock.pyを新たに作り
from apscheduler.schedulers.blocking import BlockingScheduler
import main_function
loop_clock = BlockingScheduler()
@loop_clock.scheduled_job('interval', minutes=1)
def timed_job():
main.auto_weather_change()
if __name__ == "__main__":
main.auto_weather_change()
loop_clock.start()
herokuでclock.pyが動くようにするために、procfileに
clock: python clock.py
と書いておきます。するとサーバー上ではclock.pyを実行すればいいんだなぁ。とherokuが理解してくれます。
あともう1つ。
herokuでpythonを自動的に実行してくれるようにするためには、簡単でいいからwebアプリの上で実行させなくちゃならない?(僕もよくわかりません先輩方教えてください)らしいのでpythonwebフレームワークbottleを使い、、
twitter定期botをHerokuにデプロイ
↑のことをそのまんま真似ました。
これで僕はherokuでtwitterの名前を変えることに成功しました。
おお!天気が変わって名前も変わった!
— Tsuchiya🌕☁ (@HaruhiN0707) 2018年8月23日
まとめ
・ とにかく先輩のコードは優秀
・ ググラビティ(googleを使いこなす能力の意味を持つ造語)をもっと強化したい
・ 諸先輩方に本当に感謝します
番外編
わからなかったこと
・ heroku上だとなぜwebappを使わなけらばならない?
・ clock.pyのdef関数で
from apscheduler.schedulers.blocking import BlockingScheduler
import main_function
loop_clock = BlockingScheduler()
@loop_clock.scheduled_job('interval', minutes=1)
def timed_job():
main.auto_weather_change()
if __name__ == "__main__":
main.auto_weather_change()
loop_clock.start()
from apscheduler.schedulers.blocking import BlockingScheduler
import main_function
loop_clock = BlockingScheduler()
@loop_clock.scheduled_job('interval', minutes=1)
def timed_job():
main.auto_weather_change()
if __name__ == "__main__":
loop_clock.start()
の違いがわからない(位のプログラミング初心者です泣)
これは実際にできたものです↓
https://github.com/haruhin/twitterBot
以上
初投稿と初簡易Bot完成の報告qiitaでした!