夏休み自由工作:通販したら着弾日がTimeTreeに登録されるやつ①
ハロートナミです。サマーですか?
私はサマーで、サマーらしくバケーションに入りました。
今年の夏休みは9日間ですが、新型コロナウイルスを考慮し
帰省もせず遊びにも行かず、殆ど家で過ごそうと思っています。
そこで、せっかく時間があるので自由工作をやろうと思います。
前置き
最近、引越しの関連で大量の荷物を楽天やAmazonから受け取っていたんですが、妻から
「何がいつ来るかを管理したい。カレンダーに入ってくれれば楽。」
という要望が出ていました。
我が家ではカレンダーアプリにTimeTreeを採用しています。
アカウント管理不要で共有カレンダーが作成出来て導入が簡単なのです。
多分まる4年ぐらい使ってると思います。機能、UI、通知など、特に不満無く便利です。
TimeTreeにはDeveloper Platformというものがあり、APIを通じて予定の登録が出来ます。
実はこれ前には無くて、2018年の9月頃にAPI公開する予定ありますか?と問い合わせたりしてました。
その時のTimeTreeサポート様からの解答の切り抜きがこちら(問題があれば即削除します。)
---
---
とのことだったのですが、いつの間にかバッチリ実装されていました。凄い
こんな経緯があったため、TimeTreeのDeveloper Platform、一度使ってみたかったのです。
という訳で登場人物が揃いました。
今年の夏休みの自由工作は、
Amazonから届く確認メールをあれこれして、TimeTreeに着弾時間を登録するやつ
を作ろうと思います。(楽天は余裕あったらやります)
だいたい
難しい事は分かりませんが、大体こんな感じで出来ないかと考えています。
何も考えていない事がよく分かりますね。それではやっていきましょう
TimeTreeに予定投げるところ
AWS Lambdaは使った事あるし、メールについてはネットにノウハウがある……だろう。
という事で未知レベルが一番高そうなTimeTreeのAPI連携からやります。
developers.timetreeapp.comとりあえずドキュメント通りに準備をしていきます。
えー、まずTimeTreeのアカウントを作ります。
カレンダー共有まではアカウント不要でしたが、APIを使うためには必須です。
アカウントを作ったら認証部分をなんやかんやしてAPIを使うようです。TwitterAPIとかと同じ感じ。
アプリを登録してOAuth認証するやつと、アカウントに紐づくアクセストークンを発行してやるやつがあります。
今回はそんなにどっしりしたアプリを作る訳ではないのでアクセストークンでいきましょう。
とりあえずAPIが動いてるのを確認します。Python3.7です。
import requests import os class TimeTree(): p_token = os.environ['TIMETREE_PERSONAL_TOKEN'] url = 'https://timetreeapis.com' headers = {'Authorization': f'Bearer {p_token}', 'Accept': 'application/vnd.timetree.v1+json', 'Content-Type': 'application/json'} def get_user(self): r = requests.get(f'{self.url}/user', headers=self.headers) return r.json() tt = TimeTree() user = tt.get_user() print(user) # {'data': # {'attributes': # {'description': '', # 'image_url': 'https://attachments.timetreeapp.com/user/hogehogeimg.jpg', # 'name': 'hogename'}, # 'id': 'hogeid', # 'type': 'user'}}
ちゃんと動いてればこんな感じになるはず。
動作確認が出来たので、今回の肝である予定の追加APIを見てみます。
TimeTree API ドキュメント - TimeTree Developer Platform
パラメータが多くてびっくりしますが、考える必要がある事は
- カレンダーid
- 予定タイトル
- 予定なのかキープなのか(後述)
- 予定が終日なのか時間指定なのか
- 開始 / 終了日付
- 予定のラベルID(後述)
- 予定のラベルタイプを指定(書くだけ)
についてです。
カレンダーidはカレンダーに付いているユニークっぽいidの事です。
ブラウザ上から自分のカレンダーにアクセスすればURLから確認出来ます。
カレンダー一覧取得APIなどを使っても確認できますが
1つのカレンダーについてしか考えないならブラウザで開くのが一番簡単だと思います。
予定タイトルは文字通りですね。ここに指定した内容がアプリ上のラベルに表示されます。
キープは何の事か分からなかったのですが、どうやらカレンダーにメモを登録する機能のようです。
メモには後から日付を追加する事で予定に変換する事が出来るそうです。今回は予定のみ考えます。
予定が終日なのか時間指定なのかは、まあ文字通りです。
時間指定を行う場合は開始 / 終了時間が必須パラメータとなります。
予定のラベルIDについて、ざっくり言うとTimeTreeアプリ上で予定に付ける色の事を言ってると思います。
カレンダー毎に色の設定が出来るため、カレンダーidとラベルidのペアを渡して色指定にしているようです。
最終的にこんな感じで投稿部分を実装しました。
import requests import json import os from datetime import datetime class TimeTree(): p_token = os.environ['TIMETREE_PERSONAL_TOKEN'] url = 'https://timetreeapis.com' headers = {'Authorization': f'Bearer {p_token}', 'Accept': 'application/vnd.timetree.v1+json', 'Content-Type': 'application/json'} calendar_id = os.environ['TIMETREE_CALENDAR_ID'] def add_schedule(self, title, description, st, et): timetree_dict = { 'data': { 'attributes': { 'title': title, 'category': 'schedule', 'all_day': False, 'start_at': st.isoformat(), 'end_at': et.isoformat(), 'description': description, }, 'relationships': { 'label': { 'data': { 'id': f'{self.calendar_id},1', 'type': 'label' } } } } } json_data = json.dumps(timetree_dict) response = requests.post(self.url + f'/calendars/{self.calendar_id}/events', headers=self.headers, data=json_data)
stとetはdatetime型を期待しています。
動かしてみてTimeTreeアプリ上から予定が確認出来ればOKです。
とりあえずこんな感じでTimeTreeに予定を投稿するところまで出来ました。
残る要素は
- Amazonからの発送通知メールをいい感じに取ってくる実装
- Lambdaに乗せる
- 動かしてみる
という感じですかね。長くなってしまったので続きは別のエントリで書きます。
ではでは~
引越しました。
ハロートナミです。お元気ですか?
私は元気じゃない時期があって、延期したり大変だったのですが
この度無事に引越しをやって、東京都民から埼玉県民になりました。
引越してみて分かりましたが、埼玉は本当に住みやすいです。
引越し先の駅は'住むための街'という感じで、今まで住んでいた都心付近に比べて生活に無理がありません。
良い感じです。
今回の引越しは人生3度目で、1度目は上京した時、2度目は5年前、妻と同棲を始める時でした。
前回の引越しの際、自分はまだ学生で金が無く、多くの家具を(主に妻の)前の部屋から運び入れました。
新規に購入したのはソファとカーテンぐらいでしょうか。
そんな訳で引越し前の我が家には、5~9年選手のアイテムがたくさんありました。
どれもまだ使えるんですが、机はガタガタ、ラグはボロボロ、食器棚は重さで歪んでるetc...
限界が近いものも多いと認識していたため、引越しを機に大買い替え祭りを開催する事にしました。
友人から要望もあったため、新居の構築と買い替えについてやった色々を書こうと思います。
覚えてる限りで。
買い替え編
センターテーブル
今まで使っていた正方形の小さなこたつ机はボロボロなので廃棄。
部屋が横長になったので机も横長にしよう、という事で適当に物色して安価なこちらを購入。
安価ゆえかネジ穴が死んでる等のトラブルがあり、もうちょっと値段出したほうが良かったなと思いました。
家具は難しいですね……
item.rakuten.co.jp6,825円
レコーダー
録画機器としてブルーレイレコーダーを使っていたのですが、テレビに録画機能あるんだから
HDD繋いでそれ使えば良いじゃんという話がずっとありました。
リモコンがたくさんあるのも不便だったので、引越しを機にHDDを購入。
古いレコーダーは廃棄です。
ラグ
前述の通りボロボロだったので買い替え。
良さそうなものを物色し、サイズの割に安価なこれを購入。
item.rakuten.co.jp11,880円
テレビボード
妻が持っていた幅100cm未満のテレビボードがあったのですが
引越し前から大型のテレビを乗せるとバランスが悪い等不満があり
ずっと買い替えたかったのでこれを機に購入。
item.rakuten.co.jp39,800円。
掃除機
引越しを機に古くて大きい掃除機を廃棄。
部屋の数が増え、コード付きの掃除機だと何度もコンセントを繋ぎ直す必要があって不便だったため
サマーセールのタイミングで思い切ってDysonを購入。
www.dyson.co.jp43,780円……だった気がします。セールのオマケでスタンドが付いてきました。
キッチンボード(食器棚)
古い食器棚は食器の重みで自壊寸前だったので廃棄。
妻から大きいキッチンボードが欲しいとの要望が出たため検討の後これを購入。
決め手は見た目とサイズ感、下部のドアが観音開きである事です。
何となく、まだ使いこなせてない感じがしています。
item.rakuten.co.jp45,732円
洗濯機
前の洗濯機はずっとサイズに不満があり、結構ボロボロになってきてたので買い替え。
これが一番悩んだアイテムで、縦型買うのかドラム式買うのかですったもんだしました。
最終的に友人の
「君等は夫婦で子供が出来るかもしれないのに、今縦型を選ぶのはおかしい(意訳)」
というコメントが決め手になり、ドラム式洗濯機で検討。
ヤマダのアウトレット館に何度も足を運び
検討してる間に売り切れるイベントを2回ほど経験した後、最終的にこれに決めました。
www.amazon.co.jp165,000円
新規購入編
シーリングライト
単純に部屋が増えて足りなくなったので、シーリングライトを買いました。
リビング用と和室用です。
www.amazon.co.jp5,360円
www.amazon.co.jp3,946円
LEDのライト、中に別途電球が不要というのに買ってから気付いて衝撃を受けました。
カーテン
単純に部屋が増えたので、ツー。
新しい部屋でカーテンが必要な窓は5箇所、前の部屋から流用できたのは2箇所でした。
リビングにはレースのカーテンを導入したかったので、あわせて4枚のカーテンを購入。
東急ハンズで買ったものと、アウトレットで購入したものは値段のみ記載します。
リビング用レースカーテン
item.rakuten.co.jp21,120円
リビング用カーテン
13,915円
和室用カーテン
8,812円
寝室用カーテン
8,812円
フローリングシート
引越し先には和室があったのですが、色々考えた結果疑似洋室にすることにしました。
畳の下に防虫防カビシートを敷き、上にフローリングシートを敷いています。
畳+シートがどちらも柔らかいため、床が柔らかすぎる感じになり、ちょっと不満があります。
が、まあ許容範囲なので、向こう1年ぐらいはこのままだと思います。
ソファクッション
来客時に使えるソファ的なアイテムとして、無印良品のからだにフィットするソファを導入。
大小揃えてみましたが、座ると心地よく、インテリア的にも存在感がありかなり満足しています。
www.muji.com14,980円
www.muji.com8,990円
ウォシュレット
ずっと欲しかったウォシュレット、引越しを機に導入しました。
ポイントと設置サービス目当てでヨドバシ・ドット・コムで購入しています。
下記の値段は工事費等込です。
www.amazon.co.jp37,140円
エアコン
引越し先の部屋には1台もエアコンが無く、これから夏が来る事も考えて即購入に踏み切りました。
色々考え、最終的にヤマダ電機店頭で購入。
設置工事とか保証とか考えると大手の方が安心かなという気持ちです。
12畳用と8畳用で、それぞれ以下のモデルにしました。
www.yamada-denkiweb.comwww.yamada-denkiweb.com工事費込みで合計194,700円
その他
珪藻土バスマット、クッションマット、ベッドシーツ、トイレマット
掃除用品、ナイトテーブル、ゴミ箱、食器、スパイスラック……等
1つ1つは1000~3000円程度のものがたくさんあります。
かなりざっくりですが、全部あわせて50,000円ぐらいとします。
大体全部で70万ぐらい使ってるのか。目眩がしてきましたね。
まあ洗濯機とエアコンあるから仕方ない……という事にしましょう。
今回引越しで買ったもの全部100年保ってほしい。1年で壊れられたりすると険しい。
お金がいっぱい減って険しいですが、無事引越しが終わって良かったです。
なお、コストをかけただけあって、QoLはかなり上がりました。
特に家電類は全部満足のいくものになってます。
あとリビングの見た目がよろしくなってとても良いです。
知人の方々は是非遊びに来て下さい。
おわり