Maak blogpost met AI
Gedetailleerde Uitleg van Python script: maakBlogPost.py
Deze pagina biedt een gedetailleerde uitleg van alle functies in het Python-script maakBlogPost.py.
generate_ai_image(prompt)
Genereert een afbeelding met DALL-E 3 op basis van een opgegeven prompt.
def generate_ai_image(prompt):
try:
client = OpenAI(api_key=OPENAI_API_KEY)
response = client.images.generate(
model="dall-e-3",
prompt=prompt,
size="1792x1024",
quality="standard",
n=1,
)
return response.data[0].url
except Exception as e:
print(f"Error generating AI image: {e}")
return "https://renegeilings.nl/wp-content/uploads/2025/01/temp_image-128.jpg"
download_and_resize_image(url, filename)
Downloadt een afbeelding en past de grootte aan.
def download_and_resize_image(url, filename):
response = requests.get(url)
if response.status_code == 200:
now = datetime.now()
filename = now.strftime("temp_image_%Y%m%d_%H%M%S.jpg")
with open(filename, 'wb') as f:
f.write(response.content)
image = Image.open(filename)
new_image = image.resize((1792, 1024), Image.Resampling.BICUBIC)
temp_filename = 'temp_image.jpg'
new_image.save(temp_filename, 'JPEG')
upload_image_to_wordpress(filename)
Uploadt een afbeelding naar WordPress.
def upload_image_to_wordpress(filename):
auth = base64.b64encode(f"{WORDPRESS_USER}:{WORDPRESS_APP_PASSWORD}".encode()).decode()
media_url = f"{WP_BASE}/wp-json/wp/v2/media"
with open(filename, 'rb') as file:
media_response = requests.post(media_url, headers={"Authorization": f"Basic {auth}"}, files={'file': file})
return media_response.json()['id'] if media_response.status_code == 201 else None
post_to_wordpress(title, content, image_url)
Maakt een blogpost aan en publiceert deze op WordPress.
def post_to_wordpress(title, content, image_url):
auth = base64.b64encode(f"{WORDPRESS_USER}:{WORDPRESS_APP_PASSWORD}".encode()).decode()
post_url = f"{WP_BASE}/wp-json/wp/v2/posts"
filename = BLOG_IMG
download_and_resize_image(image_url, filename)
media_id = upload_image_to_wordpress(filename)
post_data = {
"title": title,
"content": content,
"status": "publish",
"categories": [2],
"featured_media": media_id if media_id else None
}
post_response = requests.post(post_url, json=post_data, headers={"Authorization": f"Basic {auth}", "Content-Type": "application/json"})
generate_title(NieuwsType)
Genereert een titel op basis van het type nieuws.
def generate_title(NieuwsType):
now = datetime.now()
return now.strftime(f"{NieuwsType} Nieuws %A %d %B, %Y %H:%M") if 'LEEG' not in NieuwsType else now.strftime("Nieuws %A %d %B, %Y %H:%M")
main(NieuwsType)
De hoofdworkflow die nieuwsartikelen verzamelt, een blogpost genereert en deze publiceert op WordPress.
def main(NieuwsType):
view_mapping = {"Recent": "rb_v_6_random_recent_articles", "Sport": "rb_v_6_random_sport_articles", "Entertainment": "rb_v_6_random_entertainment_articles"}
if NieuwsType not in view_mapping:
print(f"Fout: Ongeldige NieuwsType '{NieuwsType}'.")
return
view_name = view_mapping[NieuwsType]
runid = add_new_row_rb_runs(datetime.now(), 'M', f"{Path(__file__).stem}_{NieuwsType.lower()}")
generate_summaries(view_name)
summaries = read_summaries(SUMMARIES_FILE)
blog_content, AI_provider = maak_blogPost(summaries)
title = generate_title(NieuwsType)
html_content = markdown.markdown(blog_content)
post_to_wordpress(title, html_content, generate_ai_image(blog_content))
update_run_status(runid, AI_provider, 'C')
Deze pagina bevat een gedetailleerde uitleg van alle functies uit maakBlogPost.py.