diff --git a/setup.py b/setup.py index db995bf..82d04e9 100644 --- a/setup.py +++ b/setup.py @@ -1,13 +1,11 @@ -from setuptools import setup, find_packages +from setuptools import find_packages, setup setup( name="eolas-db", version="0.1", packages=find_packages(where="src"), package_dir={"": "src"}, - install_requires=[ - # List your project dependencies here - ], + install_requires=["python-frontmatter, "hurry.filesize"], entry_points={ "console_scripts": [ "run=app:main", diff --git a/src/controllers/controller.py b/src/controllers/controller.py index f5f6e9b..8cbba1d 100644 --- a/src/controllers/controller.py +++ b/src/controllers/controller.py @@ -1,34 +1,10 @@ -from typing import List, TypedDict - -from services.file_service import FileService -from services.markdown_parse_service import MarkdownParseService - - -class Entry(TypedDict): - title: str - tags: List[str] - body: str - last_modified: int - size: int +from services.parse_file_service import ParseFileService class Controller: def __init__(self): pass - def parse_entry(self, file_path) -> Entry: - markdown_parser_service = MarkdownParseService(file_path) - file_parser_service = FileService(file_path) - - markdown_metadata = markdown_parser_service.parse() - file_data = file_parser_service.get_info() - - entry_metadata: Entry = { - "title": file_data.get("title", ""), - "last_modified": file_data.get("last_modified", 0), - "size": file_data.get("size", 0), - "tags": markdown_metadata.get("tags", []), - "body": markdown_metadata.get("body", ""), - } - - return entry_metadata + def parse_entry(self, file_path): + parse_file_service = ParseFileService(file_path) + return parse_file_service.parse() diff --git a/src/scratch.py b/src/scratch.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/scratch.py @@ -0,0 +1 @@ + diff --git a/src/services/file_service.py b/src/services/file_service.py deleted file mode 100644 index 37306b9..0000000 --- a/src/services/file_service.py +++ /dev/null @@ -1,17 +0,0 @@ -import os - - -class FileService: - def __init__(self, eolas_file): - self.eolas_file = eolas_file - self.info = os.stat(eolas_file) - - def __extract_title(self): - return os.path.basename(self.eolas_file) - - def get_info(self): - return { - "title": self.__extract_title(), - "last_modified": self.info.st_mtime, - "size": self.info.st_size, - } diff --git a/src/services/parse_file_service.py b/src/services/parse_file_service.py new file mode 100644 index 0000000..bc66b18 --- /dev/null +++ b/src/services/parse_file_service.py @@ -0,0 +1,37 @@ +import os +from datetime import datetime +from typing import List, TypedDict + +from hurry.filesize import size + +from services.parse_markdown_service import ParseMarkdownService + + +class Entry(TypedDict): + title: str + tags: List[str] + body: str + last_modified: str + size: int + + +class ParseFileService: + def __init__(self, file): + self.eolas_file = file + self.info = os.stat(file) + self.parse_markdown_service = ParseMarkdownService(file) + + def __get_title(self): + return os.path.basename(self.eolas_file) + + def parse(self) -> Entry: + markdown_data = self.parse_markdown_service.parse() + return { + "title": self.__get_title(), + "last_modified": datetime.fromtimestamp(self.info.st_mtime).strftime( + "%Y-%m-%d %H:%M:%S" + ), + "size": size(self.info.st_size), + "tags": markdown_data.get("tags", []), + "body": markdown_data.get("body", []), + } diff --git a/src/services/markdown_parse_service.py b/src/services/parse_markdown_service.py similarity index 93% rename from src/services/markdown_parse_service.py rename to src/services/parse_markdown_service.py index 48aad11..f2b6611 100644 --- a/src/services/markdown_parse_service.py +++ b/src/services/parse_markdown_service.py @@ -1,7 +1,7 @@ import frontmatter -class MarkdownParseService: +class ParseMarkdownService: """Extract tags, links and body text from Markdown entries""" def __init__(self, eolas_file):