72 lines
2.3 KiB
Python
72 lines
2.3 KiB
Python
#!/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}")
|