Files
web/edit.py
angoosh 52042c4c35
All checks were successful
Modelari site build and deploy / Build-site (push) Successful in 8s
first news + edit.py edit
2025-07-16 01:01:34 +02:00

127 lines
4.1 KiB
Python

import tkinter as tk
from tkinter import messagebox
from tkinter import filedialog
import os
import shutil
HTML_INSERT_TAG = "<!-- INSERT HERE -->"
uploaded_image_path = None # Global to track uploaded image
def upload_image():
global uploaded_image_path
path = filedialog.askopenfilename(
title="Select an Image",
filetypes=[("Image Files", "*.png;*.jpg;*.jpeg;*.gif;*.mp4"), ("All Files", "*.*")]
)
if path:
uploaded_image_path = path
messagebox.showinfo("Image Uploaded", f"Selected image:\n{os.path.basename(path)}")
def submit_content():
global uploaded_image_path
date = date_text.get("1.0", tk.END).strip()
title = title_text.get("1.0", tk.END).strip()
content = content_text.get("1.0", tk.END).strip()
img_lib = img_lib_text.get("1.0", tk.END).strip()
if not date or not title or not content:
messagebox.showerror("Error", "All fields must be filled out.")
return
# html_file_path = filedialog.askopenfilename(
# title="Select HTML File",
# filetypes=[("HTML files", "*.html"), ("All files", "*.*")]
# )
# if not html_file_path:
# return
html_file_path = './index.html'
if not img_lib:
new_entry = f"""
<li><i>{date}</i></li>
<li><b>{title}</b></li>
<li>{content}</li>
"""
else:
new_entry = f"""
<li><i>{date}</i></li>
<li><b>{title}</b></li>
<li>{content}</li>
<li><a href="{img_lib}">Odkaz na foto galerii</a></li>
"""
image_tag = ""
if uploaded_image_path:
try:
html_dir = os.path.dirname(html_file_path)
img_name = os.path.basename(uploaded_image_path)
target_path = os.path.join(html_dir, img_name)
target_path = "img/"+target_path[2:]
print(target_path)
# Copy image to HTML file directory
shutil.copy(uploaded_image_path, target_path)
if '.mp4' in target_path:
image_tag = f'<li><video width="320" height="240" controls><source src="{target_path}" type="video/mp4" ></video></video></li>'
else:
image_tag = f'<li><img src="{target_path}" alt="Image" style="max-width:100%;"></li>'
except Exception as e:
messagebox.showwarning("Image Error", f"Could not copy image: {str(e)}")
try:
if not os.path.exists(html_file_path):
with open(html_file_path, 'w') as f:
f.write(f"<html><body>\n{HTML_INSERT_TAG}\n</body></html>")
with open(html_file_path, 'r', encoding='utf-8') as f:
html_content = f.read()
if HTML_INSERT_TAG not in html_content:
messagebox.showerror("Error", f"Insert tag '{HTML_INSERT_TAG}' not found in HTML file.")
return
full_entry = f"{new_entry}\n{image_tag}" if image_tag else new_entry
new_html = html_content.replace(HTML_INSERT_TAG, f"{HTML_INSERT_TAG}\n{full_entry}")
with open(html_file_path, 'w', encoding='utf-8') as f:
f.write(new_html)
messagebox.showinfo("Success", "Content inserted into HTML file.")
except Exception as e:
messagebox.showerror("Error", str(e))
# GUI Setup
root = tk.Tk()
root.title("HTML Content Inserter")
root.geometry("400x550")
tk.Label(root, text="Date:").pack(anchor='w', padx=10)
date_text = tk.Text(root, height=2, width=40)
date_text.pack(padx=10, pady=5)
tk.Label(root, text="Title:").pack(anchor='w', padx=10)
title_text = tk.Text(root, height=2, width=40)
title_text.pack(padx=10, pady=5)
tk.Label(root, text="Content:").pack(anchor='w', padx=10)
content_text = tk.Text(root, height=10, width=40)
content_text.pack(padx=10, pady=5)
upload_button = tk.Button(root, text="Upload Image/Video", command=upload_image)
upload_button.pack(pady=5)
tk.Label(root, text="Link to image library:").pack(anchor='w', padx=10)
img_lib_text = tk.Text(root, height=2, width=40)
img_lib_text.pack(padx=10, pady=5)
submit_button = tk.Button(root, text="Submit to HTML", command=submit_content)
submit_button.pack(pady=5)
root.mainloop()