Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CLIでWebカレン ダー(WebDAV)を 表示したい
Search
Kenichiro MATOHARA
May 01, 2021
Technology
350
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CLIでWebカレン ダー(WebDAV)を 表示したい
Kenichiro MATOHARA
May 01, 2021
More Decks by Kenichiro MATOHARA
See All by Kenichiro MATOHARA
ターミナルグラフィックウェブブラウザ!?
matoken
0
31
軽量ウェブブラウザDilloのPlugin
matoken
0
46
今更LLMを触り始める(ローカルLLM bonsai)
matoken
0
150
念願のNDLOCR-Lite を試す
matoken
0
120
Nextcloud と互換性のある軽量WebDAV server のKaraDAV を試す
matoken
0
120
ActivityPub Server の snac その3
matoken
0
85
ActivityPub Server の snac その2
matoken
0
62
端末録画再生共有アプリ asciinema 3.0 リリース
matoken
0
100
アナウンス向けにミニマリスト向け ActivityPub Server の snac を利用
matoken
0
150
Other Decks in Technology
See All in Technology
Azure Cost Management の FOCUS コストデータを迷わず読むための“3つの軸”
tetsuyaooooo
0
140
【試作】IoT x AIエージェント
happysamurai294
0
120
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
0
260
[RSJ26] NarrativeFlow: Flow-Based Vision-Language-Action Model Using Robot Velocity Fields
keio_smilab
PRO
0
150
KAEN Company Deck
kaen
PRO
0
290
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
190
AIエージェントの開発・提供におけるセキュリティリスクの論点と対策
flatt_security
1
540
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
1
180
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
220
DGX Sparkを2台使って いろいろ動かす話
sonoda_mj
1
120
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
220
JAWS-UG初心者支部#88わいわい初心塾(夏休みの宿題やったかGit編)
otsuki
0
120
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
520
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
220
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
320
A better future with KSS
kneath
240
18k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
470
The Pragmatic Product Professional
lauravandoore
37
7.4k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Believing is Seeing
oripsolob
1
210
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
CLIでWebカレン CLIでWebカレン ダー(WebDAV)を ダー(WebDAV)を 表示したい 表示したい Kenichiro Matohara(matoken) <
[email protected]
> 1
/ 26
大隅半島から参加(鹿児島の右下) 好きなLinuxディストリビューションはDebian お仕事募集 mailto:work@matohara.org Kenichiro Matohara(matoken) Kenichiro Matohara(matoken) https://matoken.org https://matoken.org
© OpenStreetMap contributors 2 / 26
最近の発表 最近の発表 「Nextcloudでスライドをウェブに埋め込みたい」小江戸らぐ 04/10 「xxfetchコマンドを集めてみた」 OSUNC21SP 04/17 「Linux Chromiumでビデオのハードウェアエンコード・デコードし たい」
東海道らぐ 04/24 「ShellCheckでShellScriptを少しまともに」 鹿児島らぐ 04/25 https://speakerdeck.com/matoken/ 3 / 26
鹿児島らぐ 鹿児島らぐ 次回05/23(日) 14:00〜 Discordにて(Win/mac/Linux/mobileアプリやウェ ブブラウザで参加可能) https://kagolug.org/ https://kagolug.org/ 鹿児島Linux勉強会 2021.05(オンライン開催)
4 / 26
ウェブカレンダーをcliで見たい ウェブカレンダーをcliで見たい カレンダーの内容を見ながら予定を決めたい みんなで参照したいけどうまいこと見せる方法が見当たらない 今はEtherPadに手動でコピペ とても面倒 cliで期間を指定してダンプできると良さそう 5 / 26
ウェブカレンダー ウェブカレンダー CalDAV WebDAVのカレンダー拡張 インターネットに公開してみんなで購読したり編集できる Googleカレンダー等でも利用できる Serverは radicale, Nextcloud等 Clientは
Evolution, Thunderbiad(Lightning), DACx5(Android) 6 / 26
それらしいものを探す それらしいものを探す apt-cache search とかで探す コマンドで取ってくるものは見当たらない CalDAV同期ソフトの +cliのカレンダーソフトウェの で 試してみた
vdirsyncer khal 7 / 26
今回の環境 今回の環境 Debian buster amd64 Debian sid amd64/Raspberry Pi buster
armhf でも動作するのを確認 8 / 26
vdirsyncerの導入と設定をしてカ vdirsyncerの導入と設定をしてカ レンダーをローカルに レンダーをローカルに リモートのCalDAVをローカルに.ics形式のファイルに保存 ローカルでの変更はリモートに反映しない $ sudo apt install
vdirsyncer $ mkdir ~/.config/vdirsyncer $ vi ~/.config/vdirsyncer/config 9 / 26
~/.config/vdirsyncer/config [general] status_path = "~/.vdirsyncer/status/" [pair my_calendars] a = "my_calendars_local"
b = "my_calendars_remote" collections = null metadata = ["color"] [storage my_calendars_local] type = "filesystem" path = "~/.calendars/" fileext = ".ics" [storage my_calendars_remote] type = "caldav" url = "https://files.matoken.org/remote.php/dav/public-calendars/YW5gc6gMG8tC63AH?export" 10 / 26
カレンダー同期 カレンダー同期 1 初回のみ 2 同期実行 $ vdirsyncer discover my_calendars
Discovering collections for pair my_calendars my_calendars_local: my_calendars_remote: - "YW5gc6gMG8tC63AH" ("onlin_event (matoken)") warning: No collection "YW5gc6gMG8tC63AH" found for storage my_calendars_local. Should vdirsyncer attempt to create it? [y/N]: y Saved for my_calendars: collections = ["YW5gc6gMG8tC63AH"] $ vdirsyncer sync Syncing my_calendars/YW5gc6gMG8tC63AH Copying (uploading) item 05f764a4-8c30-46ed-a0fe-62c67d3975a8 to my_calendars_local/YW5gc6gMG8 Copying (uploading) item 1acc3691-a12b-4534-a4e2-6ee6213ecff1 to my_calendars_local/YW5gc6gMG8 Copying (uploading) item 202e727b-0431-40b5-8008-9ada1269c7c8 to my_calendars_local/YW5gc6gMG8 Copying (uploading) item 2312a403-b2e6-4716-9c6f-45aa94519654 to my_calendars_local/YW5gc6gMG8 : 1 2 11 / 26
crontabでカレンダー自動同期 crontabでカレンダー自動同期 crontabで vdirsyncer sync を定期的に実行して同期 (chronicは から) moreutils $
crontab -l | grep 'vdirsyncer sync' 4 4 * * * chronic vdirsyncer sync 12 / 26
khalの導入と設定をしてカレンダ khalの導入と設定をしてカレンダ ーを表示 ーを表示 vdirsyncerでローカルに同期したカレンダーを で表示する khal $ sudo sudo
apt install khal $ mkdir ~/.config/khal $ vi ~/.config/khal/config 13 / 26
~/.config/khal/config 1 .ical のパスを指定 [calendars] [[event]] path = ~/.calendars/YW5gc6gMG8tC63AH/ readonly
= True [locale] timeformat = %H:%M dateformat = %Y-%m-%d longdateformat = %Y-%m-%d datetimeformat = %Y-%m-%d %H:%M longdatetimeformat = %Y-%m-%d %H:%M 1 14 / 26
カレンダーの表示 カレンダーの表示 khal コマンドでカレンダーがダンプされる(崩れる?) 冗長なので --format "{title}" でタイトルだけ表示 今日だけや,今日から7日間,指定日〜指定日など範囲指定も URLの表示もしたいけどフィールドがなく面倒なので今回はや
っていない ikhal コマンドでTUIのカレンダーが利用できる TUI カレンダーには のほうが便利かも calcurse 15 / 26
khal khal 16 / 26
ikhal(TUI版) ikhal(TUI版) 17 / 26
exmple exmple 1 今日から今日まで表示 2 今日から7日間表示 3 03/01〜03/31まで表示 4 LC_TIMEでローカライズ(曜日など)
5 faketimeで05/03としてkhalを実行 $ khal list --format "{title}" today today $ khal list --format "{title}" today 7days $ khal list --format "{title}" 2021-05-01 2021-05-31 $ LC_TIME=ja_JP.UTF-8 khal list --format "{title}" 2021-05-01 2021-05-31 $ faketime 2021-05-03 khal list --format "{title}" today 1 2 3 4 5 18 / 26
目的の1月分くらいのカレンダ 目的の1月分くらいのカレンダ ーを出力 ーを出力 $ LC_TIME=ja_JP.UTF-8 khal list --format "{title}"
today 31days Tomorrow, 2021-05-01 LILO&東海道らぐオンラインミーティング 2021-05-01 月曜日, 2021-05-03 憲法記念日 火曜日, 2021-05-04 みどりの日 水曜日, 2021-05-05 こどもの日 土曜日, 2021-05-08 TLUG technical meeting(online) 小江戸らぐ 5月のオフな集まり(第226回) 金曜日, 2021-05-14 第74回FreeBSDワークショップ(オンライン) 土曜日, 2021-05-15 東京エリア・関西合同 Debian 勉強会 (予定) 低レベル勉強会2021年05月 日曜日, 2021-05-16 秋葉原ロボット部 2021年5月 第104回勉強会 月曜日, 2021-05-17 OSC2021 Online/Hokkaido 申込締切 木曜日, 2021-05-20 第87回FreeBSD勉強会 日曜日, 2021-05-23 鹿児島Linux勉強会 2021.05(TBD) 土曜日, 2021-05-29 Open Source Conference 2021 Online Nagoya 日曜日, 2021-05-30 ディストリビューション開発もくもく会 2021年5月 19 / 26
余禄)カレンダーをWebhooksで 余禄)カレンダーをWebhooksで Discordに投稿 Discordに投稿 せっかくなのでDIscordのチャンネルに今日のイベントを投稿して みる DiscordはWebhooksを使ってかんたんにメッセージを投稿すること が出来る 投稿したいチャンネルの⚙アイコン「チャンネルの編集」から 「連携サービス」→「ウェブフック」から新しいウェブフック
を作成し,投稿チャンネルを確認して「ウェブフックURLをコ ピー」 Webhooks URL例 https://ptb.discord.com/api/webhooks/826777625053495306/ 20 / 26
curlで投稿テスト curlで投稿テスト $ curl -X POST -H "Content-Type: application/json" \
-d '{"username": "ボット", "content": "こんにちは 🤖 "}' \ 'https://ptb.discord.com/api/webhooks/826777625053495306/QZoG2LLZOFlsKO_Auf1IQcXHVFozlgU37EGO 21 / 26
今日のカレンダー投稿script 今日のカレンダー投稿script $ cat /home/matoken/bin/calpost.sh #!/bin/sh # khal # list
-> 一覧表示 # --format "{title}" -> タイトルだけ表示 # today -> 今日から # today -> 今日まで # sed -> jsonの改行形式に変換 CAL=$(khal list --format "{title}" today today | grep -v ^Today,\ | sed -z -e "s/\n/\\\\r/g") echo "${CAL}" # イベントのない日は投稿せず終了 if [ "${CAL}" = 'No events\r' ] then echo "${CAL}" exit fi # https://qiita.com/Eai/items/1165d08dce9f183eac74 MSG=$(printf '{"username": "今日のイベント 📅 ", "content": "%s"}' "${CAL}") echo "$MSG" # Discord WebHock でKagolug の#random へpost curl -X POST -H "Content-Type: application/json" \ -d "${MSG}" \ 'https://ptb.discord.com/api/webhooks/826777625053495306/QZoG2LLZOFlsKO_Auf1IQcXHVFozlg 22 / 26
crontabに登録して毎日投稿 crontabに登録して毎日投稿 $ crontab -l | grep calpost 58 4
* * * /home/matoken/bin/calpost.sh 2>&1 > /home/matoken/tmp/cron/calpost.sh.log 23 / 26
投稿例 投稿例 24 / 26
まとめ まとめ + でWebDAVのカレンダーを同期&コマンドラインに表 示できるようになった はじめの設定が少し面倒だけど一度設定してしまうと便利 ついでにDiscordへ自動投稿するようにした 第三者からのカレンダー投稿も考えたい vdirsyncer khal
25 / 26
奥付 奥付 発表 発表者 公開URL , , 利用ソフトウェア ライセンス CC
BY-NC-SA 4.0 LILO&東海道らぐオンラインミーティング 2021-05-01 Kenichiro Matohara(matoken) SpeakerDeck pdf pdf-sig source Asciidoctor Reveal.js 26 / 26