diff --git a/src/services/parse_file_service.py b/src/services/parse_file_service.py index ca4f491..f201bb4 100644 --- a/src/services/parse_file_service.py +++ b/src/services/parse_file_service.py @@ -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