FrontPage
みよ@わさもん.ねっと
遊んだこととか、ちょっとしたメモを書いています。
最近の更新
Diary/2026-3-4 / Diary/2026-3-3 / Diary/2025-5-9 / Diary/2026-3-2 / Diary/2026-3-1
Miyo's Diaryの最新の5件
2026-3-4
MSシンポジウム(2)
非公開でのポスタセッションとパネルセッション.
他のプロジェクトの話を聞いたり,関係者との議論をしたり,の,続き.
パネルセッションで1時間半立ってるのが辛くなってきた...
お昼休みに,秋月電子に行って,ちょっと買物.
2026-3-3
MSシンポジウム
MS公開シンポジウム.
他のプロジェクトの話を聞いたり,関係者との議論をしたり.
2026-3-2
クリーンルーム
東大のクリーンルームの見学をさせてもらった.
連邦基準のクラス1,100,1000.
こういうところで日々実験するの大変そうだけど楽しそうだなあ.
2026-3-1
気づいたら
3月.今年も1/6が過ぎました.
2026-2-23
akonadiでカレンダみてみる
KOrganizerのバックエンドであAkonadiにSQLiteでアクセスできるようなので,
Python使ってアクセスしてみた.
とりあえずベーシックにはこんな感じ.
SQL文でデータ減らせるのが望ましいけど,複雑な条件書くのも面倒だよね,という感じ.
ちなみに,PartTableはblob形式で文字列ではないので注意.
import os
import sqlite3
from icalendar import Calendar
from datetime import datetime, date
import pytz
def main():
db = f'{os.environ["HOME"]}/.local/share/akonadi/akonadi.db'
conn = sqlite3.connect(db)
cur = conn.cursor()
cur.execute(f'''
SELECT p.id,
CAST(pt.data AS TEXT)
FROM PimItemTable p
JOIN PartTable pt ON pt.pimItemId = p.id
WHERE p.mimeTypeId = 3
AND instr(pt.data, 'BEGIN:VCALENDAR') > 0
''')
count = 0
for item in cur:
count += 1
k,v = item
print(v)
print(f'#. of items = {count}')
if __name__ == '__main__':
main()
ちょっとビューワ作ってみようかと思ったけど,
繰り返しの予定(RRULE)で,日付が変更になったり取消しがあったりするものの扱い(RECURRENCE-ID,EXDATE)や
複数の日に渡る終日の予定など,結構,扱いが面倒なものがあって,一旦ペンディング.
ちなみに,データの更新は,
busctl --user call org.freedesktop.Akonadi.Agent.akonadi_google_resource_0 / org.freedesktop.Akonadi.Resource synchronize busctl --user call org.freedesktop.Akonadi.Agent.akonadi_google_resource_2 / org.freedesktop.Akonadi.Resource synchronize
とした.
ここで,引数の,
org.freedesktop.Akonadi.Agent.akonadi_google_resource_0
と,
org.freedesktop.Akonadi.Resource synchronize
は,
busctl --user list | grep Akonadi
で得られた結果
org.freedesktop.Akonadi.Agent.akonadi_google_resource_0 876669 akonadi_google_ miyo :1.854 session-c3.scope c3 -
をみて,さらに,
busctl --user introspect org.freedesktop.Akonadi.Agent.akonadi_google_resource_0 /
とすると,
org.freedesktop.Akonadi.Resource interface - - - .name method - s - .requestItemDelivery method axaay - - .setName method s - - .synchronize method - - no-reply .synchronizeCollection method x - no-reply .synchronizeCollection method xb - no-reply .synchronizeCollectionAttributes method x - no-reply .synchronizeCollectionTree method - - no-reply .synchronizeRelations method - - no-reply .synchronizeTags method - - no-reply .attributesSynchronized signal x - - .collectionTreeSynchronized signal - - - .nameChanged signal s - - .synchronized signal - - -
と,して探し出す.