Maschinenübersetzung
Diese Seite wurde automatisch von KI übersetzt und kann Fehler enthalten. Bei Unklarheiten konsultieren Sie die englische Quelle.
Konfiguration¶
pplx-export speichert Ihre Identitätsdaten – das Kontoregister (Anzeigenamen, Login-E-Mails, Benutzer-IDs) und den BOT-Space – in einer benutzerspezifischen TOML-Datei, die sich außerhalb des Repositorys befindet. Diese Seite behandelt, wo diese Datei liegt, jedes Feld, das sie akzeptiert, was passiert, wenn sie fehlt, und wie das Register die Multi-Account-Cookie-Verwaltung steuert.
a. Warum die Konfiguration außerhalb des Repositorys liegt¶
Das Kontoregister und der BOT-Space sind persönliche Daten und werden niemals in das Repository übertragen (pplx_export/config.py:7-12). Das Repository enthält nur eine Platzhaltervorlage, config.example.toml; Ihre tatsächlichen Werte gehen in eine private Kopie. Alles andere, was das Tool benötigt – die Site-Domain, API-URLs, das Standard-Archiv-Root – ist eine Code-Konstante (pplx_export/config.py:50-58), keine Benutzerkonfiguration.
Die TOML enthält nur Identitätsdaten. Die Cookie-Quelle und die Transportauswahl sind pro Aufruf über CLI-Flags festgelegt, keine Konfigurationsfelder – siehe CLI-Flags, keine Konfigurationsfelder unten.
b. Speicherort und Ladepriorität¶
configure() (pplx_export/config.py:113) ermittelt den Konfigurationspfad mit dieser Priorität (pplx_export/config.py:95-110):
| Priorität | Quelle | Zählt als explizit |
|---|---|---|
| 1 | --config PATH CLI-Flag |
ja |
| 2 | PPLX_EXPORT_CONFIG Umgebungsvariable |
ja |
| 3 | ~/.config/pplx-export/config.toml (Standardpfad) |
nein |
„Explizit“ ist wichtig für das Fehlerverhalten, wenn die Datei fehlt – siehe Degradierter Modus. Beide CLI-Einträge laden die Konfiguration nach der Argumentanalyse im strikten Modus neu (pplx_export/cli.py:223, pplx_export/ask_cli.py:278); das Laden zum Importzeitpunkt (pplx_export/config.py:174-179) ist fehlertolerant, sodass das Importieren des Pakets niemals aufgrund einer fehlenden Datei fehlschlägt.
c. Erstellen Ihrer Konfiguration¶
Automatische Alternative
pplx-export init kann diese Datei automatisch generieren – es erkennt die angemeldeten Konten aus Ihren Browser-Cookies und schreibt die TOML mit Berechtigungen 0600. Siehe pplx-export → init.
mkdir -p ~/.config/pplx-export
cp config.example.toml ~/.config/pplx-export/config.toml
chmod 600 ~/.config/pplx-export/config.toml
Bearbeiten Sie dann die Kopie. Die Vorlage verwendet reine Platzhalter – kopieren Sie die Struktur, ersetzen Sie jeden Wert:
# Default account used when --account is not given (a key of [accounts.<name>] below)
default_account = "alice"
# Account registry: key = account username (the username in thread URLs / library)
[accounts.alice]
# Full display name: used for archive directory naming (web_archive/<display name>/…)
display_name = "Alice Example"
# Login email: verifies cookie ownership
email = "alice@example.com"
# Account uid (required for thread-viewed telemetry)
user_id = "00000000-0000-4000-8000-0000000000aa"
[accounts.bob]
display_name = "Bob Example"
email = "bob@example.com"
user_id = "00000000-0000-4000-8000-0000000000bb"
# BOT space: where threads created by pplx-ask are collected after completion
[bot_space]
uuid = "00000000-0000-4000-8000-0000000000b0"
slug = "bot-EXAMPLE"
Platzhalter-Stil: alice/bob sind erfundene Kontobenutzernamen, E-Mails verwenden example.com und UUIDs verwenden die Nullform 00000000-0000-4000-8000-…. In Ihrer echten Datei muss der Tabellenschlüssel der tatsächliche Kontobenutzername sein, wie er in Thread-URLs und Ihrer Bibliothek erscheint.
Privat halten
Die echte Konfiguration enthält persönliche Daten (E-Mails, Benutzer-IDs). Empfohlene Berechtigung ist 0o600; übertragen Sie sie niemals in ein Git-Repository (config.example.toml:4-6).
d. Feldreferenz¶
d.1 Oberste Ebene¶
| Feld | Typ | Bedeutung |
|---|---|---|
default_account |
string | Schlüssel einer [accounts.<name>]-Tabelle, verwendet wenn --account nicht angegeben ist (pplx_export/commands/common.py:84-85). Leer/fehlend = degradierter Modus. |
archive_root |
string | Optional. Ausgabe-Root des Archivs, das als --out-Fallback verwendet wird, sodass tägliche Befehle --out weglassen können. Priorität: --out > archive_root > ./web_archive (pplx_export/config.py, geladen in ARCHIVE_ROOT; aufgelöst in cli.py / ask_cli.py). ~ wird expandiert. |
[models] (Tabelle) |
table | Automatisch verwaltet, nicht manuell erstellt. Aktualisierbarer Modellkatalog, geschrieben von pplx-ask models --refresh und initialisiert von pplx-export init; überschreibt die festgelegte Basislinie in pplx_export/sites/perplexity/platform.py. Schlüssel: last_refreshed (UTC), source_version, auto_refresh (bool), mode_defaults, council_defaults, search_models und eine vollständige [models.catalog] (id → {label, provider, mode}). Anfragen lesen daraus (mit der platform.py-Basislinie als Fallback); eine TTL von 7 Tagen gibt eine Aktualisierungserinnerung aus oder aktualisiert automatisch, wenn auto_refresh = true. Der Round-Trip-Schreibvorgang bewahrt Ihre anderen Tabellen und Kommentare (über die tomlkit-Laufzeitabhängigkeit) und bleibt 0600. |
d.2 [accounts.<name>]¶
Eine Tabelle pro Konto; <name> ist der Kontobenutzername. Das Register lädt in drei Dicts, die nach Benutzername indiziert sind: ACCOUNT_DISPLAY_NAMES, ACCOUNT_EMAIL, ACCOUNT_UID (pplx_export/config.py:65-75).
| Feld | Typ | Erforderlich | Bedeutung |
|---|---|---|---|
display_name |
string | nein | Vollständiger Anzeigename, verwendet für die Archivverzeichnisbenennung (web_archive/<display name>/…); fällt auf den Benutzernamen zurück, wenn nicht angegeben. Siehe Archiv-Layout. |
email |
string | empfohlen | Login-E-Mail. Der Transport überprüft den Cookie-Besitz damit, um „einen Export für Konto B, der die Sitzung von Konto A trägt“ zu verhindern (pplx_export/config.py:69-72). Bei Nichtübereinstimmung zählt das Tool die Sitzungstoken pro Konto im Browser auf und wechselt automatisch – siehe Multi-Account-Cookie-Modell. |
user_id |
string | für pplx-ask-Telemetrie |
Konto-UID, erforderlich für die Thread-Ansichts-Telemetrie (pplx_export/config.py:73-75). Lesen Sie sie von GET /api/auth/linked-accounts, das für jedes angemeldete Konto user_id / email / display_name zurückgibt – siehe API-Authentifizierung. |
d.3 [bot_space]¶
Der BOT-Space ist der Sammelpunkt für Threads, die von pplx-ask nach deren Abschluss erstellt wurden (pplx_export/config.py:76-79). Erstellen Sie den Space selbst mit pplx-ask space-create (siehe pplx-ask), und registrieren Sie ihn dann hier.
| Feld | Typ | Bedeutung |
|---|---|---|
uuid |
string | Space-UUID. pplx-ask verschiebt abgeschlossene Threads hierher (pplx_export/ask_cli.py:156-158); wenn leer, wird der Schritt übersprungen. |
slug |
string | Der URL-Slug des Spaces. Geladen in BOT_SPACE_SLUG (pplx_export/config.py:79); die Laufzeit-CLI liest ihn nicht – das Fixture-Wartungstool konsumiert ihn und erstellt daraus ein Identitätsersatzpaar (tests/scrub_fixtures.py:446-447). |
d.4 CLI-Flags, keine Konfigurationsfelder¶
Die TOML enthält keine Transport- oder Cookie-Einstellungen. Diese werden pro Aufruf gewählt:
| Bereich | Wo festgelegt |
|---|---|
| Konfigurationsdateipfad | --config PATH oder PPLX_EXPORT_CONFIG |
| Cookie-Quelle | --cookies-from BROWSER / --cookies FILE |
| Transport | --transport cookie\|webbridge (nur pplx-export; Standard cookie) |
| Start-Kontoprüfung überspringen | --skip-auth-check (beide Einträge) – siehe Multi-Account-Cookie-Modell |
Siehe pplx-export für die vollständige Flag-Referenz.
e. Fehlende Konfiguration: Degradierter Modus¶
Wenn nichts geladen ist, bleiben die Modulebene-Register leer und LOADED_CONFIG_PATH ist None (pplx_export/config.py:83-85). Verhalten nach Szenario (resolve_cli_account, pplx_export/commands/common.py:51-90):
| Szenario | Verhalten |
|---|---|
Keine Konfiguration am Standardpfad, --account nicht angegeben |
Degradierter Modus: eine Warnung wird protokolliert und Befehle laufen mit einem Platzhalterkonto (username='default'); die E-Mail-Besitzprüfung wird übersprungen. Tägliche Offline-Befehle sind nicht betroffen (pplx_export/commands/common.py:86-90). |
Keine Konfiguration, explizites --account |
SystemExit nennt die Suchreihenfolge und verweist auf config.example.toml (pplx_export/commands/common.py:67-74). |
Konfiguration geladen, --account nicht registriert |
SystemExit nennt die geladene Datei und bittet Sie, [accounts.<name>] hinzuzufügen (pplx_export/commands/common.py:77-82). |
Expliziter Pfad (--config / Umgebungsvariable) existiert nicht |
ConfigError im strikten Modus (pplx_export/config.py:140-146). |
| Datei existiert, kann aber nicht geparst werden | Immer ConfigError – eine beschädigte Konfiguration darf nicht stillschweigend degradieren (pplx_export/config.py:147-150). |
--account ausgelassen, Konfiguration geladen |
default_account wird verwendet (pplx_export/commands/common.py:84-85). |
Was „Offline-Befehle“ abdecken und wie degradierte Läufe mit dem Archiv interagieren, wird in Offline-Operationen detailliert beschrieben.
f. Multi-Account-Cookie-Modell¶
Wenn mehrere Konten im selben Browser angemeldet sind, enthält der Speicher ein Sitzungscookie pro Konto, und das email-Feld der Konfiguration teilt dem Tool mit, welches es benötigt:
- Jedes angemeldete Konto hat ein
__Secure-pplx.session.<uid>-Cookie (ACCOUNT_SESSION_PREFIX,pplx_export/core/cookies/loaders.py:171); das Suffix<uid>ist dieuser_iddes Kontos. - Das aktive Konto ist dasjenige, dessen Token sich derzeit in
__Secure-next-auth.session-tokenbefindet (ACTIVE_SESSION_COOKIE,pplx_export/core/cookies/loaders.py:172). Konten wechseln = den Wert des konto-spezifischen Cookies des Zielkontos in dieses Cookie schreiben – keine Browser-UI erforderlich (pplx_export/core/cookies/loaders.py:180-187). - Beim Start prüft der Transport
GET https://www.perplexity.ai/api/auth/sessionund vergleicht die zurückgegebene E-Mail mitaccounts.<name>.email(pplx_export/commands/common.py:126-130). - Bei Nichtübereinstimmung zählt
_try_switch_account(pplx_export/commands/common.py:190-215) jedes Konto-Token im Browser überlist_account_tokensauf (pplx_export/core/cookies/loaders.py:175-206, bevorzugt Einträge auf der Subdomainwww.), probiert jedes in__Secure-next-auth.session-tokenaus und baut den Transport bei der ersten Übereinstimmung neu auf. - Wenn kein Token übereinstimmt, beendet sich der Befehl mit Nennung beider E-Mails und der Aufforderung, das Zielkonto zuerst im Browser anzumelden (
pplx_export/commands/common.py:142-145) – siehe Fehlerbehebung. - Ein Konto ohne registriertes
emailwird ungeprüft durchgeführt, mit einer Warnung, die Sie bittet, den Browser-Login selbst zu bestätigen (pplx_export/commands/common.py:146-149).
Für den vollständigen Wechselablauf und die Semantik der Sitzungsendpunkte siehe Ask und Konten und API-Authentifizierung.
Prüfung überspringen (--skip-auth-check). Die obige Start-Sitzungsprüfung
tauscht ein paar Sekunden – manchmal Minuten bei schlechtem Netzwerk – gegen die
Besitzsicherung „Konto B als Konto A verwendet“. Wenn Sie wissen, dass der
Browser im richtigen Konto angemeldet ist, überspringt --skip-auth-check (geteilt
von pplx-export und pplx-ask) diese Prüfung vollständig und geht
direkt zur Arbeit (pplx_export/commands/common.py,
make_transport):
- Kein
GET /api/auth/sessionbeim Start, sodass ein unzuverlässiges Netzwerk nicht mehr eine lange stille Wartezeit (jetzt mit Heartbeat) vor der ersten echten Anfrage erzeugt. - Das Tool vertraut dem aktuell angemeldeten Konto; die vorgelagerte E-Mail-Besitzprüfung und der automatische Multi-Account-Wechsel oben werden nicht ausgeführt.
- Aufgeschobenes Sicherheitsnetz: in
batch, sobald generische Exportfehler akkumuliert sind (drei Fehlschläge), wird eine einmalige Kontoprüfung durchgeführt und warnt Sie, was gefunden wurde – das Cookie ist abgelaufen, das Konto stimmt nicht mit dem Ziel überein oder das Konto ist in Ordnung (die Fehler sind also Netzwerk-/Ratenbegrenzungs-, nicht Authentifizierungsfehler) (pplx_export/commands/common.py,report_account_status;pplx_export/commands/batch_cmd.py). - Kompromiss: Die aufgeschobene Prüfung fängt ein abgelaufenes Cookie,
kann aber kein falsches, aber gültiges Konto erkennen, das ohne Fehler
exportiert – mit
--skip-auth-checkübernehmen Sie die Verantwortung, dass das angemeldete Konto das beabsichtigte ist.
Verwenden Sie es für schnelle, unbeaufsichtigte Läufe mit einem bekanntermaßen guten Login; lassen Sie es weg, wenn Sie auf die vorgelagerte Besitzsicherung oder den automatischen Kontowechsel angewiesen sind.
g. Cookie-Cache¶
Nach erfolgreicher Validierung werden die aufgelösten Cookies zwischengespeichert, sodass spätere Läufe den Browser überspringen:
| Eigenschaft | Wert |
|---|---|
| Pfad | <archive root>/index/.cookies.json – folgt --out (pplx_export/commands/common.py:111) |
| Aktualität | 12 Stunden (CACHE_MAX_AGE_S = 12 * 3600, pplx_export/core/cookies/cache.py:22); ein veralteter oder beschädigter Cache wird als nicht vorhanden behandelt |
| Inhalt | fetched_at, source, account_email, cookies (pplx_export/core/cookies/cache.py:62-66) |
| Schreiben | Atomar: temporäre Datei mit Modus 0o600 erstellt, dann os.replace (pplx_export/core/cookies/cache.py:49-67) |
| Git | Abgedeckt von .gitignore (**/index/.cookies.json) |
Cookie-Auflösungsreihenfolge (cookies.resolve, pplx_export/core/cookies/loaders.py:270-302): explizites --cookies-from → explizite --cookies-Datei → frischer Cache → automatische Browsererkennung (Edge → Chrome → Firefox → Safari). Der Cache wird nach jeder erfolgreichen Konto-Validierung aktualisiert (pplx_export/commands/common.py:150).
h. Schützen Ihrer Dateien¶
chmod 600Ihreconfig.toml– sie enthält persönliche Daten (E-Mails, Benutzer-IDs).- Der Cookie-Cache wird bereits mit Modus
0o600vom Tool geschrieben; Sitzungscookies sind anmeldeäquivalente Anmeldeinformationen. - Wenn Sie manuell eine Cookie-Datei für
--cookieserstellen, wenden Sie auchchmod 600darauf an.
i. Wenn die Authentifizierung fehlschlägt¶
Abgelaufene Cookies, ein Konto, das die automatische Umschaltung nicht finden kann, Berechtigungsfehler des Browser-Schlüsselbunds und andere Authentifizierungsfehler werden in Fehlerbehebung behandelt.