feature: parse entire source directory
This commit is contained in:
		
							parent
							
								
									2dbfea8cd7
								
							
						
					
					
						commit
						b023531dc8
					
				
					 1 changed files with 22 additions and 21 deletions
				
			
		|  | @ -1,39 +1,40 @@ | |||
| import os | ||||
| from datetime import datetime | ||||
| from typing import List, TypedDict | ||||
| from pathlib import Path | ||||
| 
 | ||||
| from hurry.filesize import size | ||||
| 
 | ||||
| from models.entry import Entry | ||||
| from services.parse_markdown_service import ParseMarkdownService | ||||
| 
 | ||||
| 
 | ||||
| class Entry(TypedDict): | ||||
|     title: str | ||||
|     last_modified: str | ||||
|     size: str | ||||
|     tags: List[str] | ||||
|     links: List[str] | ||||
|     body: str | ||||
| 
 | ||||
| 
 | ||||
| class ParseFileService: | ||||
|     def __init__(self, file): | ||||
|         self.eolas_file = file | ||||
|         self.info = os.stat(file) | ||||
|         self.parse_markdown_service = ParseMarkdownService(file) | ||||
|     def __init__(self, source_directory): | ||||
|         self.source_directory = source_directory | ||||
|         self.parse_markdown_service = ParseMarkdownService() | ||||
| 
 | ||||
|     def __get_title(self): | ||||
|         return os.path.basename(self.eolas_file) | ||||
|     def __get_title(self, file): | ||||
|         return os.path.basename(file) | ||||
| 
 | ||||
|     def parse(self) -> Entry: | ||||
|         markdown_data = self.parse_markdown_service.parse() | ||||
|     def __parse_file(self, file) -> Entry: | ||||
|         markdown_data = self.parse_markdown_service.parse(file) | ||||
|         return { | ||||
|             "title": self.__get_title(), | ||||
|             "last_modified": datetime.fromtimestamp(self.info.st_mtime).strftime( | ||||
|             "title": self.__get_title(file), | ||||
|             "last_modified": datetime.fromtimestamp(os.stat(file).st_mtime).strftime( | ||||
|                 "%Y-%m-%d %H:%M:%S" | ||||
|             ), | ||||
|             "size": size(self.info.st_size), | ||||
|             "size": os.stat(file).st_size, | ||||
|             "tags": markdown_data.get("tags", []), | ||||
|             "links": markdown_data.get("links", []), | ||||
|             "body": markdown_data.get("body", []), | ||||
|         } | ||||
| 
 | ||||
|     def parse_source_directory(self): | ||||
|         print("INFO Indexing entries in source directory") | ||||
|         parsed_entries = [] | ||||
|         with os.scandir(self.source_directory) as dir: | ||||
|             for file in dir: | ||||
|                 if Path(file).suffix == ".md": | ||||
|                     parsed = self.__parse_file(file) | ||||
|                     parsed_entries.append(parsed) | ||||
|         return parsed_entries | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 thomasabishop
						thomasabishop