astral and me
2012-10-17 WednesdayTwitter bot
月齢を淡々とつぶやく Twitter bot @moonphase_bot さんを育てているところなのですが、”moon phase calculate python” でぐぐって出てきたやつを使ってみたところ、なんだか計算がずれている。
でも、いいものをみつけた。astral っていう、sun とか moon とか関連の計算をしてくれる Package が pypi ってところにあったよ!安心安心!
まずは覚えたての easy_install でインストールして Expample 通りにやってみる。
>>> import datetime
>>> from astral import Astral
>>> a = Astral()
>>> a.solar_depression = 'civil'
>>> city_name = 'Tokyo'
>>> city = a[city_name]
>>> print('Information for %s/%s\n' % (city_name, city.country))
Information for Tokyo/Japan
よしよし。city は Tokyo になってる。
>>> timezone = city.timezone
>>> print('Timezone: %s' % timezone)
Timezone: Asia/Tokyo
Timezone おっけー。
>>> print('Latitude: %.02f; Longitude: %.02f\n' % \
... (city.latitude, city.longitude))
Latitude: 35.68; Longitude: 139.68
Latitude おっけー。
>>> sun = city.sun(date=datetime.datetime.now(), local=True)
>>> print('Dawn: %s' % str(sun['dawn']))
Dawn: 2012-10-17 05:23:38+09:00
Tokyo の Sun の Dawn 把握!
でも moon_phase() のつかいかたがわからない。ちゃんと本家のドキュメント読んだよ!英語のやつ!でも書いてないんだよーー!ここで先輩からのお告げ。
「ソースコード読め」
ソースコードね…ほほう……読みます…失礼しました。
$ sudo easy_install astral
ッターン!で悦に入っている場合ではなかった。ダウンロードしてきたものをまるごとつっこんでおく場所を作るといいよ。へえー…cool…
あらためて http://pypi.python.org/pypi/astral/ みると、ちゃんとここに Download っていうすごくわかりやすいボタンがあるじゃあないかッ!
>>> import datetime
>>> from astral import *
>>> city_name = 'Tokyo'
>>> a = Astral()
>>> city = a[city_name]
>>> print city
Tokyo/Japan, tz=Asia/Tokyo, lat=35.68, lon=139.68
>>> print city.moon_phase(datetime.datetime.now())
24
うーむ。それらしい数字はでてきたけど、おとといくらいが新月だったはずだから 24 のはずないんだよなあ…。おかしい。
>>> print city.moon_phase()
24
これでも
>>> print city.moon_phase(None)
24
これでも結果は同じ。うーむ。再びソースコードみる。
class City(object):
の下にある def moon_phase(self, date=None):
class Astral(object):
の下にある def moon_phase(self, date, tz):
なんかふたつあったのね。で、Astral のほうを試すと、
>>> print a.moon_phase()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: moon_phase() takes exactly 3 arguments (1 given)
引数 は 3 つ必要なのね(このうち 1 こは self っていうの慣れないけどまあ置いとく)。
>>> print a.moon_phase(None, None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/astral-0.6.2-py2.7.egg/astral.py", line 1732, in moon_phase
jd = self._julianday(date, tz)
File "/Library/Python/2.7/site-packages/astral-0.6.2-py2.7.egg/astral.py", line 1763, in _julianday
day = date.day
AttributeError: 'NoneType' object has no attribute 'day'
こっちの引数 date は City のとはちがうのか。で、最終的には。
>>> print a.moon_phase(datetime.datetime.now(), None)
3
うお!3 でた!三日月でたーーーー!わーーーー!めでたい!ありがとうありがとう!
city.moon_phase がなんでうまくいかないのかよくわからないけどそういうこともあるらしい。
Author
Yuko Honda Morita (yukop) : yukop.com
飯能→東京→シリコンバレー。夫と猫2匹と暮らしてます。作ったり学んだり踊ったりするのが好き。
Born in Japan, living in California with my husband and two cats. "A bit of a geek and a bit of a geek fan and a bit of an artist." ->
Latest Posts
Japanese
- 2016-02-20 » フロントバンパーの外し方メモ - SUBARU XV Crosstrek 2014
- 2016-01-19 » Singular they
- 2015-12-21 » San Joaquin River NWR
- 2015-12-20 » San Luis NWR
- 2015-11-22 » EAD(労働許可証)更新 その1
- 2015-11-08 » Burrowing Owl アナホリフクロウ
- 2015-10-31 » Tire Pressure Warning
English
- 2014-10-18 » Halloween Decorations
- 2014-08-01 » Cat Parasite
- 2014-07-29 » How to Make Dumplings From Scratch
- 2014-07-25 » Moving to an Unfamiliar Land That Speaks a Foreign Language
- 2014-07-23 » Going to See a Dentist
- 2014-07-22 » Agent Cooper's Favorite Cherry Pie
- 2014-07-19 » It's Nice Living with Two Kittens