🚀 Ihr Projekt. Maßgeschneidert. In Tagen, nicht Wochen.
✨ 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
- Playwright für Headless-Browser-Automation
- YouTube Data API v3 für Video-Suche
- YAML-Konfiguration für Templates & Keywords
- Schedule-Library für tägliche Cron-Job-Ausführung
- Dry-Run-Mode für sicheres Testing
- Deduplizierung verhindert Doppel-Posts
🚀 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.