Заголовок

import tkinter as tk
from tkinter import messagebox
from xmlrpc.client import ServerProxy, Error
import random
from datetime import datetime, timedelta
from urllib.parse import urljoin

# Функция для публикации статьи
def publish_article():
base_url = entry_url.get()
url = urljoin(base_url, ‘xmlrpc.php’) # Правильное объединение URL с помощью urljoin
username = entry_username.get()
password = entry_password.get()
title = entry_title.get(“1.0”, tk.END).strip()
content = entry_content.get(“1.0”, tk.END).strip()

server = ServerProxy(url)

try:
# Получаем список категорий
categories = server.wp.getTerms(username, password, 1, ‘category’)
# Выбираем случайную категорию
category = random.choice(categories)
category_id = category[‘term_id’]
except Error as e:
messagebox.showwarning(“Внимание”, “Не удалось получить список категорий, публикация будет без категории.”)
category_id = 1 # Здесь вы можете установить ID категории по умолчанию, если это необходимо

# Устанавливаем дату публикации на месяц назад от текущей даты
publish_date = datetime.now() – timedelta(days=30)
publish_date_str = publish_date.strftime(‘%Y-%m-%dT%H:%M:%S’)

data = {
‘post_title’: title,
‘post_content’: content,
‘post_status’: ‘publish’,
‘post_date’: publish_date_str,
}

if category_id:
data[‘terms’] = {‘category’: [category_id]}

try:
# Публикация поста
post_id = server.wp.newPost(1, username, password, data)
messagebox.showinfo(“Успех”, f”Статья успешно опубликована. ID поста: {post_id}”)
except Error as e:
messagebox.showerror(“Ошибка”, f”Не удалось опубликовать статью: {e}”)

# Создание графического интерфейса
root = tk.Tk()
root.title(“Публикация статьи в WordPress”)

tk.Label(root, text=”URL XML-RPC”).pack()
entry_url = tk.Entry(root)
entry_url.pack()

tk.Label(root, text=”Имя пользователя”).pack()
entry_username = tk.Entry(root)
entry_username.pack()

tk.Label(root, text=”Пароль”).pack()
entry_password = tk.Entry(root, show=”*”)
entry_password.pack()

tk.Label(root, text=”Заголовок статьи”).pack()
entry_title = tk.Text(root, height=2)
entry_title.pack()

tk.Label(root, text=”Контент статьи”).pack()
entry_content = tk.Text(root, height=10)
entry_content.pack()

tk.Button(root, text=”Опубликовать”, command=publish_article).pack()

root.mainloop()