1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
"""
Extra xapian procedures.
The python-xapian library exists, but doesn't seem to export metadata.
"""
import subprocess
from typing import Optional
def metadata_list(db: str, prefix: Optional[str] = None) -> list[str]:
"""
Enumerate all metadata entries in the given database.
:param db:
File system path to an Xapian "database". This is the
directory containing iamglass, flintlock, and .glass files.
:param prefix:
Limit list to entries starting with this string.
"""
cmdline = ['xapian-metadata', 'list', db]
if prefix:
cmdline.append(prefix)
cmd = subprocess.run(cmdline, capture_output=True, text=True)
return cmd.stdout.split('\n')
def metadata_get(db: str, key: str) -> str:
"""
Get a xapian metadata value.
:param db:
Same as for metadata_list
:param key:
Exact name of key to look up.
"""
cmd = subprocess.run(['xapian-metadata', 'get', db, key],
capture_output=True, text=True)
return cmd.stdout.strip()
|