Dieser Commit ist enthalten in:
Claude Project Manager
2025-08-01 23:50:28 +02:00
Commit 04585e95b6
290 geänderte Dateien mit 64086 neuen und 0 gelöschten Zeilen

Datei anzeigen

@ -0,0 +1,329 @@
# social_networks/x/x_workflow.py
"""
X (Twitter) Workflow - Definiert die Arbeitsabläufe für X-Automatisierung
"""
from typing import Dict, List, Any
class XWorkflow:
"""
Definiert strukturierte Workflows für verschiedene X-Operationen.
"""
@staticmethod
def get_registration_workflow() -> Dict[str, Any]:
"""
Gibt den Workflow für die Account-Registrierung zurück.
Returns:
Dict[str, Any]: Workflow-Definition
"""
return {
"name": "X Account Registration",
"steps": [
{
"id": "navigate",
"name": "Navigate to X",
"description": "Zur X-Startseite navigieren",
"required": True,
"retry_count": 3
},
{
"id": "cookie_banner",
"name": "Handle Cookie Banner",
"description": "Cookie-Banner akzeptieren falls vorhanden",
"required": False,
"retry_count": 1
},
{
"id": "create_account",
"name": "Click Create Account",
"description": "Account erstellen Button klicken",
"required": True,
"retry_count": 2
},
{
"id": "fill_initial_form",
"name": "Fill Initial Form",
"description": "Name und E-Mail eingeben",
"required": True,
"retry_count": 2
},
{
"id": "enter_birthday",
"name": "Enter Birthday",
"description": "Geburtsdatum auswählen",
"required": True,
"retry_count": 2
},
{
"id": "next_birthday",
"name": "Continue After Birthday",
"description": "Weiter nach Geburtsdatum klicken",
"required": True,
"retry_count": 2
},
{
"id": "next_settings",
"name": "Continue Settings",
"description": "Weiter in Einstellungen klicken",
"required": True,
"retry_count": 2
},
{
"id": "email_verification",
"name": "Email Verification",
"description": "E-Mail-Verifizierungscode eingeben",
"required": True,
"retry_count": 3
},
{
"id": "set_password",
"name": "Set Password",
"description": "Passwort festlegen",
"required": True,
"retry_count": 2
},
{
"id": "skip_profile_picture",
"name": "Skip Profile Picture",
"description": "Profilbild überspringen",
"required": False,
"retry_count": 1
},
{
"id": "skip_username",
"name": "Skip Username",
"description": "Benutzername überspringen",
"required": False,
"retry_count": 1
},
{
"id": "skip_notifications",
"name": "Skip Notifications",
"description": "Benachrichtigungen überspringen",
"required": False,
"retry_count": 1
},
{
"id": "verify_success",
"name": "Verify Success",
"description": "Erfolgreiche Registrierung überprüfen",
"required": True,
"retry_count": 2
}
],
"timeout": 600, # 10 Minuten Gesamttimeout
"checkpoints": ["fill_initial_form", "email_verification", "verify_success"]
}
@staticmethod
def get_login_workflow() -> Dict[str, Any]:
"""
Gibt den Workflow für den Account-Login zurück.
Returns:
Dict[str, Any]: Workflow-Definition
"""
return {
"name": "X Account Login",
"steps": [
{
"id": "navigate",
"name": "Navigate to X",
"description": "Zur X-Startseite navigieren",
"required": True,
"retry_count": 3
},
{
"id": "cookie_banner",
"name": "Handle Cookie Banner",
"description": "Cookie-Banner akzeptieren falls vorhanden",
"required": False,
"retry_count": 1
},
{
"id": "click_login",
"name": "Click Login",
"description": "Anmelden Button klicken",
"required": True,
"retry_count": 2
},
{
"id": "enter_username",
"name": "Enter Username/Email",
"description": "Benutzername oder E-Mail eingeben",
"required": True,
"retry_count": 2
},
{
"id": "click_next",
"name": "Click Next",
"description": "Weiter klicken nach Benutzername",
"required": True,
"retry_count": 2
},
{
"id": "enter_password",
"name": "Enter Password",
"description": "Passwort eingeben",
"required": True,
"retry_count": 2
},
{
"id": "submit_login",
"name": "Submit Login",
"description": "Anmelden klicken",
"required": True,
"retry_count": 2
},
{
"id": "handle_challenges",
"name": "Handle Challenges",
"description": "Eventuelle Sicherheitsabfragen behandeln",
"required": False,
"retry_count": 3
},
{
"id": "verify_success",
"name": "Verify Success",
"description": "Erfolgreichen Login überprüfen",
"required": True,
"retry_count": 2
}
],
"timeout": 300, # 5 Minuten Gesamttimeout
"checkpoints": ["enter_username", "submit_login", "verify_success"]
}
@staticmethod
def get_verification_workflow() -> Dict[str, Any]:
"""
Gibt den Workflow für die Account-Verifizierung zurück.
Returns:
Dict[str, Any]: Workflow-Definition
"""
return {
"name": "X Account Verification",
"steps": [
{
"id": "check_verification_needed",
"name": "Check Verification",
"description": "Prüfen ob Verifizierung erforderlich",
"required": True,
"retry_count": 1
},
{
"id": "select_method",
"name": "Select Method",
"description": "Verifizierungsmethode auswählen",
"required": True,
"retry_count": 2
},
{
"id": "request_code",
"name": "Request Code",
"description": "Verifizierungscode anfordern",
"required": True,
"retry_count": 3
},
{
"id": "enter_code",
"name": "Enter Code",
"description": "Verifizierungscode eingeben",
"required": True,
"retry_count": 3
},
{
"id": "submit_verification",
"name": "Submit Verification",
"description": "Verifizierung abschließen",
"required": True,
"retry_count": 2
},
{
"id": "verify_success",
"name": "Verify Success",
"description": "Erfolgreiche Verifizierung überprüfen",
"required": True,
"retry_count": 2
}
],
"timeout": 300, # 5 Minuten Gesamttimeout
"checkpoints": ["enter_code", "verify_success"]
}
@staticmethod
def get_error_recovery_strategies() -> Dict[str, List[str]]:
"""
Gibt Fehlerbehandlungsstrategien zurück.
Returns:
Dict[str, List[str]]: Fehler und ihre Behandlungsstrategien
"""
return {
"rate_limit": [
"wait_exponential_backoff",
"rotate_proxy",
"change_user_agent",
"abort_with_retry_later"
],
"captcha": [
"solve_captcha_manual",
"solve_captcha_service",
"rotate_proxy_retry",
"abort_with_manual_intervention"
],
"suspended_account": [
"log_suspension",
"mark_account_suspended",
"abort_immediately"
],
"network_error": [
"retry_with_backoff",
"check_proxy_health",
"switch_proxy",
"retry_direct_connection"
],
"element_not_found": [
"wait_longer",
"refresh_page",
"check_alternate_selectors",
"take_screenshot_debug"
]
}
@staticmethod
def get_validation_rules() -> Dict[str, Any]:
"""
Gibt Validierungsregeln für verschiedene Eingaben zurück.
Returns:
Dict[str, Any]: Validierungsregeln
"""
return {
"username": {
"min_length": 1,
"max_length": 15,
"allowed_chars": r"^[a-zA-Z0-9_]+$",
"forbidden_patterns": ["twitter", "admin", "x.com"]
},
"password": {
"min_length": 8,
"max_length": 128,
"require_uppercase": False,
"require_lowercase": True,
"require_number": True,
"require_special": False
},
"email": {
"pattern": r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$",
"forbidden_domains": ["example.com", "test.com"]
},
"age": {
"minimum": 13,
"maximum": 120
}
}