🎉 Facebook Geburtstags-Gratulierer — Automatische Glückwünsche mit Video

Python-Bot zur automatischen Gratulation von Facebook-Freunden mit personalisierten Nachrichten und YouTube-Geburtstagsvideos.

PythonPlaywrightYouTube APIFacebookSchedulerAutomation

🚀 Ihr Projekt. Maßgeschneidert. In Tagen, nicht Wochen.

📞 02406 803 7603 ✉️ info@computerkumpel.de

✨ Hauptfunktionen

🤖
Automatisches Login & Scraping
Playwright-gesteuerter Headless-Browser für Facebook-Login und Geburtstagserkennung. Cookie-Banner-Handling inklusive.
🎬
YouTube-Video-Suche
Automatische Suche nach passenden Geburtstagsvideos via YouTube Data API v3. Zufällige Auswahl aus Top-Ergebnissen mit Short-Filter.
📝
Template-basierte Nachrichten
Konfigurierbare Gratulations-Templates mit Platzhaltern für Namen. YAML-Konfiguration für einfache Anpassung ohne Code-Änderungen.
📅
Scheduler & Dry-Run
Tägliche automatische Ausführung via Schedule-Library. Dry-Run-Mode für sicheres Testen ohne tatsächliche Posts. Deduplizierung gegen Doppel-Posts.

💻 Quellcode-Einblicke

Echte Code-Snippets aus dem Projekt-Repository — direkt aus der Entwicklungsumgebung.

Python FacebookGratulierer — Hauptklasse & Browser-Steuerung

import os
import yaml
from playwright.sync_api import sync_playwright, Page, Browser
from googleapiclient.discovery import build

class FacebookGratulierer:
    """Hauptklasse für Facebook Geburtstags-Gratulationen"""
    
    def __init__(self):
        self.fb_email = os.getenv('FACEBOOK_EMAIL')
        self.fb_password = os.getenv('FACEBOOK_PASSWORD')
        self.youtube_api_key = os.getenv('YOUTUBE_API_KEY')
        self.headless = os.getenv('HEADLESS', 'true').lower() == 'true'
        self.dry_run = os.getenv('DRY_RUN', 'false').lower() == 'true'
        self.config = self._load_config()
    
    def _login_facebook(self):
        """Meldet sich bei Facebook an"""
        self.page.goto('https://www.facebook.com')
        self.page.wait_for_load_state('networkidle')
        
        # Cookies Banner akzeptieren
        try:
            cookie_button = self.page.locator(
                'button[data-cookiebanner="accept_button"]'
            ).first
            if cookie_button.is_visible(timeout=3000):
                cookie_button.click()
        except:
            pass
        
        self.page.fill('input[name="email"]', self.fb_email)
        self.page.fill('input[name="pass"]', self.fb_password)
        self.page.click('button[name="login"]')
        self.page.wait_for_load_state('networkidle')

Python YouTube Video Search & Posting

def _search_youtube_video(self, person_name: str) -> str | None:
    """Sucht ein passendes YouTube-Geburtstagsvideo"""
    youtube = build('youtube', 'v3', developerKey=self.youtube_api_key)
    
    keywords = self.config.get('youtube_keywords', ['happy birthday'])
    search_query = random.choice(keywords)
    
    request = youtube.search().list(
        part='snippet',
        q=search_query,
        type='video',
        maxResults=10,
        videoDuration='short',
        videoEmbeddable='true'
    )
    response = request.execute()
    
    if response['items']:
        video = random.choice(response['items'])
        return f"https://www.youtube.com/watch?v={video['id']['videoId']}"
    return None

def _post_birthday_message(self, friend: dict):
    """Postet Nachricht + Video auf der Pinnwand"""
    name = friend['name']
    message = self._get_random_message_template().format(name=name)
    
    video_url = self._search_youtube_video(name)
    if video_url:
        message += f"\n\n{video_url}"
    
    if self.dry_run:
        logger.info(f"[DRY RUN] Würde posten:\n{message}")
        return
    
    # Post über Playwright in Facebook-Pinnwand
    self.page.goto(friend['profile_url'])
    text_field = self.page.locator(
        'div[contenteditable="true"][role="textbox"]'
    ).first
    text_field.fill(message)
    post_button = self.page.locator(
        'div[role="button"]:has-text("Posten")'
    ).first
    post_button.click()

Python Scheduler — Tägliche automatische Ausführung

import schedule
import time

def run_gratulierer():
    """Führt den Gratulierer aus"""
    logger.info("=== Starte geplante Gratulations-Routine ===")
    try:
        gratulierer = FacebookGratulierer()
        gratulierer.run()
    except Exception as e:
        logger.error(f"Fehler: {e}")
    logger.info("=== Routine abgeschlossen ===")

if __name__ == '__main__':
    check_time = config.get('scheduler', {}).get('check_time', '08:00')
    schedule.every().day.at(check_time).do(run_gratulierer)
    
    logger.info(f"Scheduler gestartet. Täglich um {check_time}")
    while True:
        schedule.run_pending()
        time.sleep(60)

📋 Projektstruktur

🚀 Vibecoding — KI-gestützte Entwicklung

Moderne KI-Coding-Tools („Vibecoding") reduzieren die Entwicklungszeit dramatisch. Was früher Wochen dauerte, entsteht heute in Tagen — mit Code auf Produktionsniveau.

System-Prompt für KI-Coding-Agenten

Baue eine Software-Lösung für folgendes Problem:
Facebook Geburtstags-Gratulierer — Automatische Glückwünsche

Anforderungen:
- Modular und erweiterbar
- Fehlerbehandlung mit Logging
- Konfiguration via ENV oder Config-Datei
- Dokumentation im Code
- Tests für Kernfunktionen

Tech-Stack: Python, Playwright, YouTube API, Facebook, Scheduler, Automation
Ziel: Produktionsreifer Code, kein Prototyp.

Bereit für Ihr eigenes Projekt?

Ob Automation, Web-App oder individuelle Software — wir setzen Ihre Idee um. Unverbindlich, pragmatisch, code-gestützt.

📞 02406 803 7603 ✉️ info@computerkumpel.de