mirror of
https://codeberg.org/Reuh/feather.git
synced 2025-10-27 10:09:32 +00:00
feat: make max filename configurable
This commit is contained in:
parent
513e0dfa04
commit
92e3da6b82
2 changed files with 19 additions and 9 deletions
|
|
@ -14,6 +14,8 @@ items_per_request = 500
|
|||
data = "data"
|
||||
# Directory path where the user-facing files will be stored.
|
||||
reader = "reader"
|
||||
# Maximum allowed filename length before ellipsing
|
||||
max_filename_length = 200
|
||||
|
||||
[time]
|
||||
# Which timezone to use when writing date and time.
|
||||
|
|
|
|||
26
main.py
26
main.py
|
|
@ -36,12 +36,13 @@ class Config:
|
|||
# Get config fields
|
||||
self.html_root: Path = Path(get_config("directories", "reader"))
|
||||
self.json_root: Path = Path(get_config("directories", "data"))
|
||||
self.server_url: str = get_config("server", "url", False)
|
||||
self.server_user: str = get_config("server", "user", False)
|
||||
self.server_password: str = get_config("server", "password", False)
|
||||
self.max_filename_length: int = int(get_config("directories", "max_filename_length"))
|
||||
self.server_url: str = str(get_config("server", "url", False))
|
||||
self.server_user: str = str(get_config("server", "user", False))
|
||||
self.server_password: str = str(get_config("server", "password", False))
|
||||
self.items_per_query: int = int(get_config("server", "items_per_request"))
|
||||
self.timezone: ZoneInfo = ZoneInfo(get_config("time", "timezone"))
|
||||
self.time_format: str = get_config("time", "format")
|
||||
self.time_format: str = str(get_config("time", "format"))
|
||||
|
||||
# Computed config fields
|
||||
self.update_lock = self.json_root / "update.lock"
|
||||
|
|
@ -105,13 +106,20 @@ def mark_deleted_as_read(config, client_session):
|
|||
|
||||
print(f"Marked {marked_as_read} items as read")
|
||||
|
||||
def escape_filename(filename):
|
||||
return filename.replace("/", "-")
|
||||
|
||||
def get_html_path(config, item_json):
|
||||
html_directory = config.html_root / item_json["folder"].replace("/", "-")
|
||||
html_directory.mkdir(exist_ok=True)
|
||||
max_filename_length = config.max_filename_length
|
||||
|
||||
folder_directory = config.html_root / escape_filename(item_json["folder"])
|
||||
folder_directory.mkdir(exist_ok=True)
|
||||
|
||||
datetime_published = datetime.fromtimestamp(item_json["published"], config.timezone).strftime(config.time_format)
|
||||
html_name = f"{datetime_published}\t[{item_json["origin_title"]}]\t{item_json["title"]}.html".replace("/", "-")
|
||||
html_name = html_name[:200] + '...html' if len(html_name) > 200 else html_name
|
||||
html_path = html_directory / html_name
|
||||
html_name = escape_filename(f"{datetime_published}\t[{item_json["origin_title"]}]\t{item_json["title"]}.html")
|
||||
html_name = html_name[:max_filename_length] + '….html' if len(html_name) > max_filename_length else html_name
|
||||
|
||||
html_path = folder_directory / html_name
|
||||
return html_path
|
||||
|
||||
def synchronize_with_server(config, client_session):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue