Skip to content

Menu

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

Copyright 2024 - 2025 renegeilings.nl

raspiBlog code bibliotheek

Gedetailleerde Uitleg van de Python Library: raspiBlogLib.py

Deze pagina biedt een gedetailleerde uitleg van functies in het Python-script raspiBlogLib.py. Deze library wordt aangeroepen in de verschillende scripts om date te verzamelen en de blog post te maken.

set_run_id(row, run_id)

Stelt de run_id in voor een gegeven artikelrij.

def set_run_id(row, run_id):
    row["run_id"] = run_id

clear_article_row(row)

Maakt alle velden in een artikelrij leeg.

def clear_article_row(row):
    row.update({
        "run_id": None,
        "full_url": None,
        "topic": None,
        "summary": None,
        "text": None,
        "pub_date": None,
        "title": None,
        "supply_channel": None
    })

maak_DALLE3_PROMPT(client, blog_text, model)

Genereert een DALL-E 3 prompt op basis van een blogtekst.

def maak_DALLE3_PROMPT(client, blog_text, model):
    instruction = ("Maak een gedetailleerde DALLE-3 prompt gebaseerd op de volgende tekst..." + blog_text)
    response = client.chat.completions.create(model=model, messages=[{"role": "user", "content": instruction}])
    return response.choices[0].message.content

read_summaries(file_path)

Leest samenvattingen uit een bestand en zet ze in een dictionary.

def read_summaries(file_path):
    summaries = {}
    with open(file_path, 'r', encoding='utf-8') as file:
        lines = file.readlines()
        current_label, url, summary = None, None, None
        for line in lines:
            if line.startswith("Label: "):
                if current_label and url and summary:
                    summaries.setdefault(current_label, []).append((url, summary))
                current_label = line.split("Label: ")[1].strip()
                url, summary = None, None
            elif line.startswith("URL: "):
                url = line.split("URL: ")[1].strip()
            elif line.startswith("Samenvatting: "):
                summary = line.split("Samenvatting: ")[1].strip()
    return summaries

generate_blog_content(client, summaries, model)

Genereert blogcontent op basis van samenvattingen.

def generate_blog_content(client, summaries, model):
    blog_content = "\n".join(
        generate_blog_content_per_topic(topic, articles, client, model)
        for topic, articles in summaries.items()
    )
    return blog_content

update_run_status(run_id, AI_provider, status)

Werkt de status van een run bij in de database.

def update_run_status(run_id, AI_provider, status):
    now = datetime.now()
    with connect(database=database, user=username, password=password, host=host, port=port) as conn:
        with conn.cursor() as cursor:
            cursor.execute("UPDATE rb_runs SET status = %s, ai_provider = %s, end_datetime = %s WHERE id = %s", 
                           (status, AI_provider, now, run_id))
            conn.commit()

generate_summaries(view_name)

Haalt samenvattingen op uit de database en slaat ze op in een bestand.

def generate_summaries(view_name):
    with connect(database=database, user=username, password=password, host=host, port=port) as conn:
        with conn.cursor(cursor_factory=RealDictCursor) as cursor:
            query = f"SELECT id, label, url, summary FROM public.{view_name};"
            cursor.execute(query)
            rows = cursor.fetchall()
            with open(SUMMARIES_FILE, 'w', encoding='utf-8') as file:
                for row in rows:
                    file.write(f"Label: {row['label']}\nURL: {row['url']}\nSamenvatting: {row['summary']}\n\n")

maak_blogPost(summaries)

Genereert een blogpost met AI-ondersteuning en kiest een beschikbare provider.

def maak_blogPost(summaries):
    client_providers = [
        ("DeepSeek", DEEPSEEK_API_KEY, DEEPSEEK_API_URL, DEEPSEEK_MODEL),
        ("Qwen", QWEN_API_KEY, QWEN_API_URL, QWEN_MODEL),
        ("OpenAI", OPENAI_API_KEY, OPENAI_API_URL, OPENAI_MODEL)
    ]
    
    for provider, api_key, base_url, model in client_providers:
        try:
            client = OpenAI(api_key=api_key, base_url=base_url)
            blog_content = generate_blog_content(client, summaries, model)
            with open(DALLE3_PROMPT, 'w', encoding='utf-8') as file:
                file.write(maak_DALLE3_PROMPT(client, blog_content, model))
            return blog_content, provider
        except Exception as e:
            print(f"Fout met {provider}: {e}")
    return None, None

Deze pagina bevat een gedetailleerde uitleg van de belangrijkste functies uit raspiBlogLib.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