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
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 |