1
0
Fork 0
mirror of https://github.com/em-squared/5e-drs.git synced 2025-10-30 05:04:21 +00:00
5e-drs/contrib/meilisearch/index.py
Mathieu Lecarme 1aa2a16289 Draft.
2022-04-03 12:24:03 +02:00

54 lines
1.5 KiB
Python
Executable file

#!/usr/bin/env python3
from pathlib import Path
from io import StringIO
import yaml
from markdown import markdown
from meilisearch import Client
def pages():
"return all pages"
for readme in Path('.').glob('**/README.md'):
if readme == Path("README.md"): # it's the home
continue
with open(readme, 'r') as file:
head = StringIO()
body = StringIO()
state = None
for line in file:
if state is None and line == "---\n":
state = "head"
continue
if state == "head":
if line == "---\n":
state = "body"
continue
head.write(line)
else:
body.write(line)
if head.tell() == 0: # empty
continue
head.seek(0)
head = yaml.safe_load(head)
body.seek(0)
txt = markdown(body.read())
yield str(readme), head['title'], txt
if __name__ == "__main__":
client = Client('http://127.0.0.1:7700')
try:
idx = client.get_index('pages')
except Exception:
client.create_index('pages', dict(primaryKey='path'))
print(idx)
for path, title, body in pages():
client.index('pages').add_documents([{
'path': path,
'title': title,
'body': body,
}])
print(title)