1.0.6 - Multi language support (TMDb), Per folder rule settings

This commit is contained in:
ponzischeme89
2026-01-18 22:07:00 +13:00
parent 675c3ef959
commit 170694bc28
13 changed files with 892 additions and 45 deletions
+41 -2
View File
@@ -74,6 +74,38 @@ export async function updateSettings(settings) {
})
}
// ============ FOLDER RULES API ============
/**
* GET /api/folder-rules - Fetch folder rules
* Returns: { success, rules: [...] }
*/
export async function getFolderRules() {
return apiFetch('/folder-rules')
}
/**
* POST /api/folder-rules - Create or update a folder rule
* Body: { directory, preferred_source?, insertion_position?, language?, subtitle_*? }
* Returns: { success }
*/
export async function saveFolderRule(rule) {
return apiFetch('/folder-rules', {
method: 'POST',
body: JSON.stringify(rule)
})
}
/**
* DELETE /api/folder-rules/<directory> - Delete a folder rule
* Returns: { success }
*/
export async function deleteFolderRule(directory) {
return apiFetch(`/folder-rules/${encodeURIComponent(directory)}`, {
method: 'DELETE'
})
}
// ============ SCAN API ============
/**
@@ -218,10 +250,17 @@ export async function getScanStatus() {
* - "full": Returns multiple results to choose from (2 API calls) - good for manual search
* Returns: { success, results: [{title, year, plot, runtime, imdb_rating, media_type, poster, imdb_id}] }
*/
export async function searchTitle(query, mode = "quick") {
export async function searchTitle(query, mode = "quick", options = {}) {
const body = { query, mode }
if (options.preferredSource) {
body.preferred_source = options.preferredSource
}
if (options.language) {
body.language = options.language
}
return apiFetch('/search', {
method: 'POST',
body: JSON.stringify({ query, mode })
body: JSON.stringify(body)
})
}
@@ -13,6 +13,7 @@
export let className = ''
export let searchable = true
export let dropup = false
export let displayPrefix = ''
let open = false
let search = ''
@@ -87,7 +88,7 @@
<span class="flex items-center gap-2">
<slot name="icon" />
<span class={selectedLabel ? 'text-foreground' : 'text-muted-foreground'}>
{selectedLabel || placeholder}
{selectedLabel ? `${displayPrefix}${selectedLabel}` : placeholder}
</span>
</span>
<svg