Formatting the contents of metadata¶
One can do in python the same as --annotate
does to arki-query
output,
with more flexibility.
The functionality is in the arkimet.Formatter
class, which has a
arkimet.Formatter.format()
method that takes a metadata item and returns its
description as a string:
formatter = arkimet.Formatter()
print("Area:", formatter.format(mds[0].to_python("area")))
print("Level:", formatter.format(mds[0].to_python("level")))
Writing annotated metadata¶
You can use annotate=True
when calling arkimet.Metadata.write()
and
to write JSON and YAML with metadata item descriptions.
You can use annotate=True
when calling arkimet.Summary.write()
and
arkimet.Summary.write_short()
to write JSON and YAML with metadata item
descriptions.
Implementing new formatters¶
You can install .py
files in /etc/arkimet/conf/format/
to add your own
formatting functions system-wide, or register them using
arkimet.formatter.Formatter.register()
.
For example, this installs a formatter for an example area of type CUSTOM
:
from arkimet.formatter import Formatter
import arkimet as arki
def format_area(v):
if v["style"] == "GRIB":
values = v.get("val")
# values is now a dict
if values.get("type") != "CUSTOM":
return None
return f"{values['field1']}x{values['field2']}"
# Return None by default to fall back to the other Area formatters
return None
Formatter.register("area", format_area)