LIVA君(LINUX MINT)からPython+ tweepy+PyEphemで明日の日の出と日の入り時刻をお知らせするようにしました
毎日正時の時報をただ淡々と吐き出すLIVA君なんですが、なんかもう少し賢いところ見て見たい。
LIVA君(LINUX MINT)からPython+tweepy+cronで時報をお知らせするようにしました – happyman web
色々検索していたら、Pythonで日の出と日の入り時刻を計算するモジュール 「PyEphem」があるらしい。
解説が丁寧なので自分でもやれる気がした。
1.名古屋市の日の出と日の入り時刻を計算してみる。
名古屋市の日の出日の入りをPythonで計算するには、新しいモジュール「PyEphem」というものを組み込む必要があるらしい。
$pip install ephem
あとはアンチョコを真似て、こんなソースを作りました。
import ephem
import datetime
#日の出と日の入りの場所を設定
nagoya = ephem.Observer()
nagoya.lat = '35.1855875'
nagoya.lon = '136.8990919'
#Pyephem で使用する時刻は、世界時で設定。
nagoya.date = datetime.datetime.utcnow()
#明日の太陽の日の出日の入りを計算
sun = ephem.Sun()
print('次の名古屋城の日の出時刻:', ephem.localtime(nagoya.next_rising(sun)))
print('次の名古屋城の日の入り時刻:', ephem.localtime(nagoya.next_setting(sun)))
走らせると、こんな感じ。
すごいね。計算してくれる。
2.自慢したくなったのでTwitterで垂れ流ししたくなった。
ただの時報だけでは糞面白くないので、有る時間に明日の日の出と日の入り時間をツイートするようにしてみます。
ただこのソースを貼っても上手く行かない。
TypeError: can only concatenate str (not "datetime.datetime") to str
こんなエラーを吐き出す。どうやらdatetime型から文字列型に変換する必要があるらしい。
【Pythonエラー】can only concatenate str (not “datetime.datetime") to str – IT技術総合Wiki | CWiki
直したらでました!
窓際おじさんのはぴぞうは寝ます明日の名古屋城の日の出時刻は2022/10/18 06:00:18です。明日の名古屋城の日の入り時刻は2022/10/18 17:14:27です。おやすみなさい
— はぴぞう (@haptweepy) October 17, 2022
3.格好悪いのでツイートに改行を入れたくなったよ。
なんか見た目が格好悪いので、改行を入れたくなりました。
どうやったら上手く行くのか少し調べていると、「+"\n"+」を間に入れてやるらしい。
窓際おじさんのはぴぞうは寝ます。
明日の名古屋城の日の出時刻は2022/10/18 06:00:18です。
明日の名古屋城の日の入り時刻は2022/10/18 17:14:27です。
おやすみなさい— はぴぞう (@haptweepy) October 17, 2022
上手くいきました。
今回作ったソースはこんな感じ。
import tweepy
import ephem
from my_module import #ツイート用のモジュール
from pprint import pprint
import datetime
#日の出と日の入りの場所を設定
nagoya = ephem.Observer()
nagoya.lat = '35.1855875'
nagoya.lon = '136.8990919'
nagoya.date = datetime.datetime.utcnow()
sun = ephem.Sun()
timesunrise_str = ephem.localtime(nagoya.next_rising(sun)).strftime('%Y/%m/%d %H:%M:%S')
timesunset_str = ephem.localtime(nagoya.next_setting(sun)).strftime('%Y/%m/%d %H:%M:%S')
print('明日の名古屋城の日の出時刻:', ephem.localtime(nagoya.next_rising(sun)))
print('明日の名古屋城の日の入り時刻:', ephem.localtime(nagoya.next_setting(sun)))
# メッセージを指定
message = "窓際おじさんのはぴぞうは寝ます。"+"\n"+"明日の名古屋城の日の出時刻は"+timesunrise_str+"です。"+"\n"+"明日の名古屋城の日の入り時刻は"+timesunset_str+"です。"+"\n"+"おやすみなさい"
# 関数
def CreateTweet(message):
tweet = haptweepyapi.ClientInfo().create_tweet(text=message)
return tweet
# 関数実行・結果出力
pprint(CreateTweet(message))
ディスカッション
コメント一覧
まだ、コメントがありません