Desktop-Anwendung zum gleichzeitigen Hochladen auf mehrere File-Hoster
A 36-agent adversarial sweep over the queue-persistence context surfaced three NEW, reachable defects (all renderer-only) that the v3.3.80-82 work missed: #1 retrySelectedJobs (the reuploadBtn / "erneut hochladen" path) is a THIRD re-add path that never cleared the completed-dedup guard. _completedUploadKeys gains file|hoster when a job reaches done; retry of a done row reset the job to pending and re-added its path to selectedFiles but kept the key. On a restart before the re-upload re-completes, restoreQueueStateFromConfig re-seeds the key and buildQueuePreview then refuses to recreate the row, so the deliberate re-upload silently vanished (lost work). Retry now clears the exact file|hoster keys it re-activates (per key, NOT per path, so a sibling hosters completed ghost is not resurrected). #7 The folder-monitor pre-selected-hosters branch re-adds a path and calls buildQueuePreview WITHOUT going through applyHosterSelection, so the v3.3.82 key-clear never ran. With removeFromQueueOnDone ON, a re-encoded / re-dropped file whose row was auto-removed was suppressed forever (silent no-upload that even survived a restart). The branch now clears the dedup keys for the freshly re-added paths, matching the manual modal flow. #4 Deleting one hosters row of a multi-hoster file was silently undone. A manually deleted non-completed file|hoster pair is recreated by buildQueuePreview the next time it runs (adding another file, or a folder-monitor drop), because the recreate guard only consulted _completedUploadKeys, never the per-cell deletion. Result: the file got uploaded to a hoster the user explicitly removed, burning quota and publishing an unwanted link. Introduces _suppressedPreviewKeys: a manual delete of a non-done job whose file stays selected (pinned by a sibling job) suppresses that exact file|hoster from re-creation; the suppression is persisted in pendingQueue.suppressedKeys and re-seeded on restore (mirroring completedKeys), and is cleared whenever the user deliberately re-adds the file (modal or folder monitor) so a real re-add still works. The clear-on-re-add logic for both sets is unified into clearDedupKeysForPaths() and reused by applyHosterSelection and the folder-monitor branch. Held for a separate decision/round (surfaced to the user): single-instance lock, the sync-close write-sequence guard (its ghost symptom is masked by the existing microtask-ordered removal + restore-time ts-gate; its real residual is rotation/ history integrity), and the upload-log timezone/same-basename edges (need a log format change). 362 tests pass, lint clean, smoke boots identically to baseline. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| assets | ||
| lib | ||
| renderer | ||
| scripts | ||
| tasks | ||
| tests | ||
| .gitignore | ||
| app.py | ||
| eslint.config.mjs | ||
| hosters.py | ||
| main.js | ||
| package-lock.json | ||
| package.json | ||
| preload-drop-target.js | ||
| preload.js | ||
| README.md | ||
| requirements.txt | ||
Multi-Hoster-Upload
Desktop-Anwendung zum gleichzeitigen Hochladen von Dateien auf mehrere File-Hosting-Dienste.
Unterstuetzte Hoster
- doodstream.com - API-Key basiert
- voe.sx - API-Key basiert
- vidmoly.me - Login basiert (Username/Passwort)
- byse.sx - API-Key basiert
Installation
Setup (empfohlen)
Lade die Multi-Hoster-Upload Setup X.X.X.exe aus den Releases herunter und installiere.
Portable
Lade die Multi-Hoster-Upload X.X.X.exe herunter. Keine Installation noetig.
Entwicklung
npm install
npm start
Build
npm run release:win
Erzeugt Setup + Portable EXE im release/ Ordner.
Release
GITEA_TOKEN=dein_token npm run release:gitea -- 1.0.1 "Release notes"
Features
- Drag & Drop oder Dateiauswahl
- Gleichzeitiger Upload zu mehreren Hostern
- Echtzeit-Fortschrittsanzeige
- Ergebnis-Tabelle mit Sortierung und Kopier-Funktion
- Upload-Verlauf (letzte 100 Eintraege)
- Health-Check fuer Hoster-Verbindungen
- Auto-Updater (prueft git.24-music.de)
- Log-Datei kompatibel mit File & Image Uploader Format