Files
ETPlot/python/add_creation_time.py
T

93 lines
2.8 KiB
Python

#!/usr/bin/env python3
"""
Gallery Creation Time Integration
Example function to add creation time metadata to plot items.
This should be integrated into your existing Python gallery generation code.
"""
from pathlib import Path
def add_creation_time_to_items(items, base_path):
"""
Add creation time to plot items for sorting functionality.
Args:
items: List of plot item dictionaries
base_path: Base path where plot files are located
Returns:
Updated items list with creation_time field
"""
for item in items:
try:
# Try to get creation time from PNG file first, then PDF
png_path = None
pdf_path = None
# Extract relative path from href
if 'png_href' in item:
png_rel_path = item['png_href'].replace('../', '').replace(
'./', '')
png_path = Path(base_path) / png_rel_path
if 'pdf_href' in item:
pdf_rel_path = item['pdf_href'].replace('../', '').replace(
'./', '')
pdf_path = Path(base_path) / pdf_rel_path
# Use PNG creation time if available, otherwise PDF
creation_time = 0
if png_path and png_path.exists():
creation_time = int(png_path.stat().st_ctime)
elif pdf_path and pdf_path.exists():
creation_time = int(pdf_path.stat().st_ctime)
# Add creation time as timestamp (JavaScript can handle this)
item['creation_time'] = creation_time
except Exception as e:
# Fallback to 0 if there's any error
name = item.get('name', 'unknown')
print(f"Warning: Could not get creation time for {name}: {e}")
item['creation_time'] = 0
return items
def example_integration():
"""
Example of how to integrate this into your existing gallery generation.
"""
# This would be part of your existing gallery generation code
items = [
{
'name': 'plot1.png',
'png_href': './plot1.png',
'pdf_href': './plot1.pdf'
},
{
'name': 'plot2.png',
'png_href': './plot2.png',
'pdf_href': './plot2.pdf'
}
]
base_path = "/path/to/your/gallery/directory"
# Add creation times
items_with_time = add_creation_time_to_items(items, base_path)
# Now items_with_time can be passed to your Jinja2 template
# The template will have access to item.creation_time for each item
return items_with_time
if __name__ == "__main__":
# Test the function
items = example_integration()
for item in items:
created = item['creation_time']
print(f"Plot: {item['name']}, Created: {created}")