mirror of
				https://github.com/em-squared/5e-drs.git
				synced 2025-10-31 13:34:21 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.6 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())
 | |
|             # removing ../../, README.md and replace / with _
 | |
|             yield str(readme)[11:-10].replace("/", "_"), 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("the index is created")
 | |
|     else:
 | |
|         print("the index is already here")
 | |
| 
 | |
|     for path, title, body in pages():
 | |
|         client.index('pages').add_documents([{
 | |
|             'path': path,
 | |
|             'title': title,
 | |
|             'body': body,
 | |
|         }])
 | |
|         print(title, path)
 | 
