1
0
Fork 0
mirror of https://codeberg.org/Reuh/feather.git synced 2025-10-27 18:19:32 +00:00

feat: make max filename configurable

This commit is contained in:
Étienne Fildadut 2025-10-09 14:48:34 +02:00
parent 513e0dfa04
commit 92e3da6b82
2 changed files with 19 additions and 9 deletions

View file

@ -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
View file

@ -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):