Async Download to Library with progress; Download to client
Backend: - DownloadTask model + background thread runner: streams the file with progress (%, bytes, speed) and a cancel flag, then indexes it, names it J-<id>.<ext> and applies the e621 metadata - DownloadTaskViewSet (create/retrieve/cancel) replaces the synchronous endpoint; the status footer's worker counts now reflect download jobs - Client download proxy (/api/online/file/) streams an e621 original to the browser with Content-Disposition: attachment, restricted to the configured e621 CDN hosts so it cannot be used as an open proxy Frontend: - Online detail: progress bar with percentage, transferred size, speed and cancel while downloading; success links to the new J-ID - New 'Download to client' button available to everyone (guests too)
This commit is contained in:
@@ -144,6 +144,15 @@ WATCHED_FOLDER = str(WATCHED_FOLDER)
|
||||
|
||||
E621_BASE_URL = os.getenv("E621_BASE_URL", "https://e621.net").rstrip("/")
|
||||
USER_AGENT = os.getenv("USER_AGENT", "J621/0.1 (by J621 on e621)")
|
||||
# Hosts the client-download proxy is allowed to stream from.
|
||||
E621_MEDIA_HOSTS = [
|
||||
host.strip()
|
||||
for host in os.getenv(
|
||||
"E621_MEDIA_HOSTS",
|
||||
"static1.e621.net,static2.e621.net,static3.e621.net",
|
||||
).split(",")
|
||||
if host.strip()
|
||||
]
|
||||
|
||||
# Guest visibility: e621's anonymous default blacklist is mirrored into the
|
||||
# cache by `manage.py refresh_guest_blacklist`. This fallback is used until
|
||||
|
||||
Reference in New Issue
Block a user