Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
CLIでWebカレン ダー(WebDAV)を 表示したい
Kenichiro MATOHARA
May 01, 2021
Technology
0
160
CLIでWebカレン ダー(WebDAV)を 表示したい
Kenichiro MATOHARA
May 01, 2021
Tweet
Share
More Decks by Kenichiro MATOHARA
See All by Kenichiro MATOHARA
省リソースで動作するビデオカンファレンスソフトウェアのGalène
matoken
0
75
スライドファイルをセルフホスト(Pelican利用)
matoken
0
37
OCRで画像文字を 文字データに
matoken
0
13
コマンドラインで 翻訳
matoken
0
120
Raspberry Pi Zeroをストレージ無しで活用
matoken
0
29
SSDプチフリ対策
matoken
0
4
Speach To Text To Translation(Azure版)
matoken
0
16
色々聞く
matoken
0
79
音でデータを届けたい
matoken
0
36
Other Decks in Technology
See All in Technology
Modern Android dependency injection
hugovisser
1
130
インフラのCI/CDはGitHub Actionsに任せた
mihyon
0
110
プログラマがオブジェクト指向しても幸せになれない理由
shirayanagiryuji
0
150
Camp Digital 2022: tailored advice
kyliehavelock
0
150
Custom AppをIP制限ありのままで審査に通す方法
yusuga
0
690
220628 「Google AppSheet」タスク管理アプリをライブ作成 吉積情報伊藤さん
comucal
PRO
0
230
Custom GitHub Actions by Java
kazamori
0
290
Strategyパターン
hankehly
0
150
スクラムのスケールとチームトポロジー / Scaled Scrum and Team Topologies
daiksy
1
450
miisan's career talk
mii3king
0
220
Introduction to MLOps
asei
5
910
RDRA + JavaによるレジャーSaaSプロダクトの要件定義と実装のシームレスな接続
jjebejj
PRO
3
740
Featured
See All Featured
Robots, Beer and Maslow
schacon
152
7.1k
Designing the Hi-DPI Web
ddemaree
272
32k
Fireside Chat
paigeccino
12
1.3k
Web development in the modern age
philhawksworth
197
9.3k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
100
5.9k
How STYLIGHT went responsive
nonsquared
85
3.9k
We Have a Design System, Now What?
morganepeng
35
3k
Imperfection Machines: The Place of Print at Facebook
scottboms
253
12k
Building Applications with DynamoDB
mza
83
4.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
19
1.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
7
1.1k
Transcript
CLIでWebカレン CLIでWebカレン ダー(WebDAV)を ダー(WebDAV)を 表示したい 表示したい Kenichiro Matohara(matoken) <maroken@kagolug.org> 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