0.13.0 DVD Series

This commit is contained in:
2026-04-10 18:44:41 +00:00
parent 43702b0138
commit 974b7bfad3
36 changed files with 9666 additions and 739 deletions
+25
View File
@@ -363,6 +363,12 @@ export const api = {
getDetectedDrives() {
return request('/settings/drives');
},
forceUnlockDrive(payload = {}) {
return request('/settings/drives/force-unlock', {
method: 'POST',
body: JSON.stringify(payload || {})
});
},
async getHandBrakePresets(options = {}) {
const result = await requestCachedGet('/settings/handbrake-presets', {
ttlMs: 10 * 60 * 1000,
@@ -547,6 +553,14 @@ export const api = {
searchOmdb(q) {
return request(`/pipeline/omdb/search?q=${encodeURIComponent(q)}`);
},
searchTmdbSeries(q, seasonNumber = null) {
const params = new URLSearchParams();
params.set('q', String(q || ''));
if (seasonNumber !== undefined && seasonNumber !== null && String(seasonNumber).trim() !== '') {
params.set('season', String(seasonNumber).trim());
}
return request(`/pipeline/tmdb/series/search?${params.toString()}`);
},
searchMusicBrainz(q) {
return request(`/pipeline/cd/musicbrainz/search?q=${encodeURIComponent(q)}`);
},
@@ -675,6 +689,7 @@ export const api = {
const body = {};
if (options.keepBoth) body.keepBoth = true;
if (Array.isArray(options.deleteFolders) && options.deleteFolders.length > 0) body.deleteFolders = options.deleteFolders;
if (options.restartMode) body.restartMode = options.restartMode;
const result = await request(`/pipeline/restart-encode/${jobId}`, {
method: 'POST',
body: Object.keys(body).length > 0 ? JSON.stringify(body) : undefined
@@ -743,6 +758,9 @@ export const api = {
if (params.lite) {
query.set('lite', '1');
}
if (params.includeChildren) {
query.set('includeChildren', '1');
}
const suffix = query.toString() ? `?${query.toString()}` : '';
return request(`/history${suffix}`);
},
@@ -773,6 +791,13 @@ export const api = {
afterMutationInvalidate(['/history']);
return result;
},
async acknowledgeJobError(jobId) {
const result = await request(`/history/${jobId}/error/ack`, {
method: 'POST'
});
afterMutationInvalidate(['/history']);
return result;
},
async deleteJobFiles(jobId, target = 'both') {
const result = await request(`/history/${jobId}/delete-files`, {
method: 'POST',