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
.
Welkom
Technische beschrijving
M | D | W | D | V | Z | Z |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |