notmuchデータベースの既存のmaildirメッセージファイル名からnotmuchメッセージIDとスレッドIDを取得するには?

notmuchデータベースの既存のmaildirメッセージファイル名からnotmuchメッセージIDとスレッドIDを取得するには?

ファイルを返すクエリを作成するとします。

$ notmuch search --output=files tag:inbox from:love

これにより、Maildir メッセージを指すファイルのリストが返されます。次に、次のファイルのいずれかを選択します(すでにnotmuchデータベースにあります)。

FILENAME=$(notmuch search --output=files tag:inbox from:love | fzf)

NotMuchデータベースからメッセージIDとスレッドIDを取得したいと思います。$FILENAME変数でいくつかのメッセージIDを見つけたいです。

これを行う非常に粗雑な方法は、ファイルを解析し、/ subject / dataからヘッダーを読み取り、いくつかのクエリを実行することですnotmuch search from:{...} subject:{...} date:{..}。しかし、ファイル名はすでにデータベースに保存されているので、ファイル名からメッセージIDを取得するための正式で信頼性の高い方法が必要だと思いました。

ありがとうございます!

ベストアンサー1

ついに多くのPythonバインディングで方法を見つけました。https://notmuch.readthedocs.io/projects/notmuch-python/en/latest/database.html?highlight=filename#notmuch.Database.find_message_by_filename

ライナーの効果的な打撃は次のとおりです。

threadId=$(python3 -c "import notmuch; db = notmuch.Database(); print(db.find_message_by_filename('$FILENAME').get_thread_id())");

解凍されたpython3コードは次のとおりです。

import notmuch
db = notmuch.Database()
msg = db.find_message_by_filename('filename of the maildir message')
msg.get_thread_id()

おすすめ記事