1
0
Fork 0
mirror of https://codeberg.org/Reuh/feather.git synced 2025-10-28 02:29:32 +00:00

feat: store formatted datetime in json

This commit is contained in:
Étienne Fildadut 2025-10-09 15:00:33 +02:00
parent 92e3da6b82
commit 75d9367e4f

11
main.py
View file

@ -115,13 +115,15 @@ def get_html_path(config, item_json):
folder_directory = config.html_root / escape_filename(item_json["folder"]) folder_directory = config.html_root / escape_filename(item_json["folder"])
folder_directory.mkdir(exist_ok=True) folder_directory.mkdir(exist_ok=True)
datetime_published = datetime.fromtimestamp(item_json["published"], config.timezone).strftime(config.time_format) html_name = escape_filename(f"{item_json["published_formatted"]}\t[{item_json["origin_title"]}]\t{item_json["title"]}.html")
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_name = html_name[:max_filename_length] + '….html' if len(html_name) > max_filename_length else html_name
html_path = folder_directory / html_name html_path = folder_directory / html_name
return html_path return html_path
def format_datetime(config, timestamp):
return datetime.fromtimestamp(timestamp, config.timezone).strftime(config.time_format)
def synchronize_with_server(config, client_session): def synchronize_with_server(config, client_session):
# Synchronize items from the server, generating and deleting JSON and HTML files accordingly # Synchronize items from the server, generating and deleting JSON and HTML files accordingly
config.update_lock.touch() config.update_lock.touch()
@ -144,7 +146,9 @@ def synchronize_with_server(config, client_session):
"folder": folder_name, "folder": folder_name,
"title": item_content.title, "title": item_content.title,
"published": item_content.published, "published": item_content.published,
"published_formatted": format_datetime(config, item_content.published),
"updated": item_content.updated, "updated": item_content.updated,
"updated_formatted": format_datetime(config, item_content.updated),
"author": item_content.author, "author": item_content.author,
"summary": item_content.summary.content, "summary": item_content.summary.content,
"content": item_content.content.content, "content": item_content.content.content,
@ -187,7 +191,6 @@ def synchronize_with_server(config, client_session):
def generate_html_for_item(config, item_json): def generate_html_for_item(config, item_json):
# Write HTML file for a JSON object # Write HTML file for a JSON object
datetime_published = datetime.fromtimestamp(item_json["published"], config.timezone).strftime(config.time_format)
html_path = config.html_root / item_json["html_path"] html_path = config.html_root / item_json["html_path"]
if html_path.exists(): if html_path.exists():
print(f"WARNING: a file already exist for {html_path}. Either the feed has duplicate entries, or something has gone terribly wrong.") print(f"WARNING: a file already exist for {html_path}. Either the feed has duplicate entries, or something has gone terribly wrong.")
@ -205,7 +208,7 @@ def generate_html_for_item(config, item_json):
<style>a{{color:palevioletred; text-decoration:none;}}</style> <style>a{{color:palevioletred; text-decoration:none;}}</style>
<article style="max-width:60rem; margin:auto;"> <article style="max-width:60rem; margin:auto;">
<p style="display:flex; flex-direction:row; justify-content:space-between;"> <p style="display:flex; flex-direction:row; justify-content:space-between;">
<span>{datetime_published}</span> <span>{item_json["published_formatted"]}</span>
<span><a href="{item_json["origin_url"]}">{item_json["origin_title"]}</a></span> <span><a href="{item_json["origin_url"]}">{item_json["origin_title"]}</a></span>
</p> </p>
<h1><a href="{item_json["canonical_url"]}">{item_json["title"]}</a></h1> <h1><a href="{item_json["canonical_url"]}">{item_json["title"]}</a></h1>