976d90f26b
Key improvements: - Add intelligent file update checking with 30-second buffer to avoid unnecessary operations - Implement efficient PDF to PNG conversion (only when source is newer) - Add smart file copying (skip if target is up-to-date) - Create proper folder structure using plot_root/source_name pattern - Improve template with better text handling for long plot names - Add text wrapping, truncation, and hover tooltips for plot names - Remove unnecessary directory cleaning for true incremental updates - Fix title display issue (was showing '.' instead of 'Gallery') - Add comprehensive logging showing what's processed vs skipped Performance benefits: - Subsequent runs are significantly faster (only processes changed files) - Reduces ImageMagick conversions and file I/O operations - Maintains file system timing robustness with buffer delays UI improvements: - Better handling of long filenames with word wrapping - Constrained text areas prevent overlap between thumbnails - Hover tooltips show full names when truncated - Responsive grid layout maintained
24 lines
708 B
Python
24 lines
708 B
Python
import zipfile
|
|
import datetime
|
|
from pathlib import Path
|
|
|
|
WEB_FOLDER = Path("plots")
|
|
BACKUP_FOLDER = Path("backups")
|
|
|
|
today = datetime.date.today().strftime("%Y%m%d")
|
|
backup_name = f"backup-{today}.zip"
|
|
backup_path = BACKUP_FOLDER / backup_name
|
|
|
|
BACKUP_FOLDER.mkdir(parents=True, exist_ok=True)
|
|
|
|
if backup_path.exists():
|
|
print(f"Backup already exists: {backup_path}")
|
|
else:
|
|
print(f"Creating backup: {backup_path}")
|
|
with zipfile.ZipFile(backup_path, "w", zipfile.ZIP_DEFLATED) as zipf:
|
|
for path in WEB_FOLDER.rglob("*"):
|
|
if path.is_file():
|
|
arcname = path.relative_to(WEB_FOLDER.parent)
|
|
zipf.write(path, arcname)
|
|
print("✅ Backup complete.")
|