Files
BSN-Chatsystem/joomla_publish.py
T

72 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""Upload image to Joomla Media + Create article."""
import json, subprocess, sys
# Read token
with open('/home/hermes/.hermes/joomla_token.txt') as f:
token = f.read().strip()
print(f"Token length: {len(token)}")
# Step 1: Upload media
print("\n=== Uploading media ===")
media_cmd = [
'curl', '-s', '-X', 'POST',
'https://www.brettspiel-news.de/api/index.php/v1/media/files',
'-H', 'Accept: application/vnd.api+json',
'-H', f'X-Joomla-Token: {token}',
'-F', 'file=@/home/hermes/workspace/dune_uprising_sale_2026-06-20.png',
'-F', 'path=images/Spiele/2026',
]
result = subprocess.run(media_cmd, capture_output=True, text=True, timeout=30)
print(result.stdout)
try:
media_data = json.loads(result.stdout)
if 'data' in media_data:
media_attrs = media_data['data'].get('attributes', {})
media_filename = media_attrs.get('path', media_attrs.get('filename', ''))
print(f"Uploaded: {media_filename}")
elif 'errors' in media_data:
print(f"ERROR: {json.dumps(media_data['errors'], indent=2)}")
except json.JSONDecodeError:
print(f"Raw: {result.stdout}")
# Step 2: Create article
print("\n=== Creating article ===")
with open('/home/hermes/workspace/daily_article_2026-06-20.html') as f:
article_html = f.read().strip()
title = '„Spione gegen Frust" vom Clank!-Designer Paul Dennen: Dune Imperium Uprising heute 26 % reduziert'
payload = {
'title': title,
'introtext': '',
'text': article_html,
'catid': 61,
'state': 0,
'access': 6,
'created_by': 560,
'language': 'de',
'featured': 1
}
article_cmd = [
'curl', '-s', '-X', 'POST',
'https://www.brettspiel-news.de/api/index.php/v1/content/articles',
'-H', 'Accept: application/vnd.api+json',
'-H', 'Content-Type: application/json',
'-H', f'X-Joomla-Token: {token}',
'-d', json.dumps(payload),
]
result = subprocess.run(article_cmd, capture_output=True, text=True, timeout=30)
print(result.stdout)
try:
art_data = json.loads(result.stdout)
if 'data' in art_data:
art_id = art_data['data'].get('id', 'UNKNOWN')
print(f"Article created! ID: {art_id}")
elif 'errors' in art_data:
print(f"ERROR: {json.dumps(art_data['errors'], indent=2)}")
except json.JSONDecodeError:
print(f"Raw: {result.stdout}")