Add anikoto backup downloader

- add a config toggle for backup downloads and retry failed ani-cli jobs with anikoto-cli
- install anikoto-cli systemwide in the container with its required dependencies
- bump the project version to 0.46.1 and publish the release notes
This commit is contained in:
Dymas
2026-07-09 12:54:14 +02:00
parent 332ec670fc
commit 4dd56b72f6
10 changed files with 268 additions and 62 deletions
+12 -1
View File
@@ -461,6 +461,7 @@ CONFIG_HTML = r"""<!doctype html>
<div class="stack muted">
<p id="versionLine">Loading version...</p>
<p id="aniCliVersionLine">Detecting ani-cli version...</p>
<p id="anikotoCliVersionLine">Detecting anikoto-cli version...</p>
<p>Saved settings live in `.ani-cli-web/config.json` inside this project.</p>
</div>
<button class="ghost wide-button" id="openChangelogBtn" type="button">Changelog</button>
@@ -502,8 +503,14 @@ CONFIG_HTML = r"""<!doctype html>
<option value="480">480p</option>
</select>
</label>
<label>Backup downloader
<select id="downloadBackupEnabled">
<option value="false">Disabled</option>
<option value="true">Enabled</option>
</select>
</label>
</div>
<div class="field-hint">Tip: these are the saved defaults only. The active search form can still be adjusted per download.</div>
<div class="field-hint">Tip: these are the saved defaults only. The active search form can still be adjusted per download. When backup downloads are enabled, failed `ani-cli` jobs retry automatically with `anikoto-cli`.</div>
</section>
<section class="settings settings-main">
@@ -666,6 +673,7 @@ CONFIG_HTML = r"""<!doctype html>
mode: "sub",
quality: "best",
download_dir: "",
download_backup_enabled: false,
watchlist_auto_refresh_enabled: false,
watchlist_auto_refresh_minutes: 60,
watchlist_refresh_delay_seconds: 5,
@@ -732,6 +740,7 @@ CONFIG_HTML = r"""<!doctype html>
download_dir: $("downloadDir").value,
mode: $("configMode").value,
quality: $("configQuality").value,
download_backup_enabled: $("downloadBackupEnabled").value === "true",
watchlist_auto_refresh_enabled: $("watchlistAutoRefreshEnabled").value === "true",
watchlist_auto_refresh_minutes: $("watchlistAutoRefreshMinutes").value,
watchlist_refresh_delay_seconds: $("watchlistRefreshDelaySeconds").value,
@@ -751,6 +760,7 @@ CONFIG_HTML = r"""<!doctype html>
$("downloadDir").value = data.download_dir;
$("configMode").value = data.mode;
$("configQuality").value = data.quality;
$("downloadBackupEnabled").value = String(Boolean(data.download_backup_enabled));
$("watchlistAutoRefreshEnabled").value = String(Boolean(data.watchlist_auto_refresh_enabled));
$("watchlistAutoRefreshMinutes").value = data.watchlist_auto_refresh_minutes;
$("watchlistRefreshDelaySeconds").value = data.watchlist_refresh_delay_seconds;
@@ -960,6 +970,7 @@ CONFIG_HTML = r"""<!doctype html>
const data = await api("/api/version");
$("versionLine").textContent = `${data.name} ${data.version}`;
$("aniCliVersionLine").textContent = `ani-cli ${data.ani_cli_version || "Unavailable"}`;
$("anikotoCliVersionLine").textContent = `anikoto-cli ${data.anikoto_cli_version || "Unavailable"}`;
}
async function openChangelog() {