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
|
import os
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import List, TypedDict
|
from pathlib import Path
|
||||||
|
|
||||||
from hurry.filesize import size
|
from hurry.filesize import size
|
||||||
|
|
||||||
|
from models.entry import Entry
|
||||||
from services.parse_markdown_service import ParseMarkdownService
|
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:
|
class ParseFileService:
|
||||||
def __init__(self, file):
|
def __init__(self, source_directory):
|
||||||
self.eolas_file = file
|
self.source_directory = source_directory
|
||||||
self.info = os.stat(file)
|
self.parse_markdown_service = ParseMarkdownService()
|
||||||
self.parse_markdown_service = ParseMarkdownService(file)
|
|
||||||
|
|
||||||
def __get_title(self):
|
def __get_title(self, file):
|
||||||
return os.path.basename(self.eolas_file)
|
return os.path.basename(file)
|
||||||
|
|
||||||
def parse(self) -> Entry:
|
def __parse_file(self, file) -> Entry:
|
||||||
markdown_data = self.parse_markdown_service.parse()
|
markdown_data = self.parse_markdown_service.parse(file)
|
||||||
return {
|
return {
|
||||||
"title": self.__get_title(),
|
"title": self.__get_title(file),
|
||||||
"last_modified": datetime.fromtimestamp(self.info.st_mtime).strftime(
|
"last_modified": datetime.fromtimestamp(os.stat(file).st_mtime).strftime(
|
||||||
"%Y-%m-%d %H:%M:%S"
|
"%Y-%m-%d %H:%M:%S"
|
||||||
),
|
),
|
||||||
"size": size(self.info.st_size),
|
"size": os.stat(file).st_size,
|
||||||
"tags": markdown_data.get("tags", []),
|
"tags": markdown_data.get("tags", []),
|
||||||
"links": markdown_data.get("links", []),
|
"links": markdown_data.get("links", []),
|
||||||
"body": markdown_data.get("body", []),
|
"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