Skip to content

Menu

  • database acties
  • Maak blogpost met AI
  • raspiBlog code bibliotheek
  • Verzamelen data
  • welkom

Copyright 2024 - 2025 renegeilings.nl

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

  • welkom

Technische beschrijving

  • raspiBlog code bibliotheek
  • Verzamelen data
  • Maak blogpost met AI
  • database acties
juli 2025
M D W D V Z Z
 123456
78910111213
14151617181920
21222324252627
28293031  
« jun    

Copyright 2024 - 2025 renegeilings.nl