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/date에서 헤더를 읽고 몇 가지 쿼리를 수행하는 것입니다 notmuch search from:{...} subject:{...} date:{..}. 하지만 파일 이름은 이미 데이터베이스에 저장되어 있으므로 파일 이름에서 메시지 ID를 가져오는 정식적이고 안정적인 방법이 있어야 한다고 생각했습니다.

감사해요!

답변1

마침내 많지 않은 파이썬 바인딩을 통해 방법을 찾았습니다.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()

답변2

maildir 파일 이름을 기반으로 notmuch 데이터베이스를 검색하는 방법을 찾지 못했습니다.검색어가 많지 않음 (7)

Message-Id를 반복하여 검색에서 직접 Message-Id 및 NotMuch 스레드 ID를 얻을 수 있습니다.

for message_id in $(notmuch search --output=messages 'tag:inbox from:love')
do
  thread_id=$(notmuch search --output=threads $message_id)
  echo "$thread_id - $message_id"
done

또는 스레드를 반복하여 관련 메시지 ID를 얻을 수 있습니다.

for thread_id in $(notmuch search --output=threads 'tag:inbox from:love')
do
  # sed is here only to provide the output in the same format as in the first example
  notmuch search --output=messages $thread_id | sed "s/^/$thread_id - /"
done

어느 것이 귀하의 요구에 더 잘 맞는지. 두 for 루프 모두 다음 형식으로 결과를 인쇄합니다.

thread:THREAD_ID - id:MESSAGE_ID

당신이 얻고 싶다면~에서,날짜,주제헤더를 사용하면 jq를 사용하여 maildir 파일을 구문 분석하지 않고 notmuch 데이터베이스에서 직접 헤더를 추출할 수도 있습니다.이메일(1)또는 유사한 도구.

notmuch search --format=json id:MESSAGE_ID | jq -r '.[].subject'

관련 정보