Update:Remove unused missing/invalid audiobook parts logic and keys

This commit is contained in:
advplyr 2024-03-21 14:38:52 -05:00
parent 8d7530254c
commit ff5226fa93
33 changed files with 19 additions and 190 deletions

View File

@ -358,7 +358,7 @@ export default {
}, },
showError() { showError() {
if (this.recentEpisode) return false // Dont show podcast error on episode card if (this.recentEpisode) return false // Dont show podcast error on episode card
return this.numInvalidAudioFiles || this.numMissingParts || this.isMissing || this.isInvalid return this.isMissing || this.isInvalid
}, },
libraryItemIdStreaming() { libraryItemIdStreaming() {
return this.store.getters['getLibraryItemIdStreaming'] return this.store.getters['getLibraryItemIdStreaming']
@ -388,29 +388,13 @@ export default {
isInvalid() { isInvalid() {
return this._libraryItem.isInvalid return this._libraryItem.isInvalid
}, },
numMissingParts() {
if (this.isPodcast) return 0
return this.media.numMissingParts
},
numInvalidAudioFiles() {
if (this.isPodcast) return 0
return this.media.numInvalidAudioFiles
},
errorText() { errorText() {
if (this.isMissing) return 'Item directory is missing!' if (this.isMissing) return 'Item directory is missing!'
else if (this.isInvalid) { else if (this.isInvalid) {
if (this.isPodcast) return 'Podcast has no episodes' if (this.isPodcast) return 'Podcast has no episodes'
return 'Item has no audio tracks & ebook' return 'Item has no audio tracks & ebook'
} }
let txt = '' return 'Unknown Error'
if (this.numMissingParts) {
txt += `${this.numMissingParts} missing parts.`
}
if (this.numInvalidAudioFiles) {
if (txt) txt += ' '
txt += `${this.numInvalidAudioFiles} invalid audio files.`
}
return txt || 'Unknown Error'
}, },
overlayWrapperClasslist() { overlayWrapperClasslist() {
const classes = [] const classes = []

View File

@ -1,84 +0,0 @@
<template>
<div class="w-full">
<div v-if="missingParts.length" class="bg-error border-red-800 shadow-md p-4">
<p class="text-sm mb-2">
{{ $strings.LabelMissingParts }} <span class="text-sm">({{ missingParts.length }})</span>
</p>
<p class="text-sm font-mono">{{ missingPartChunks.join(', ') }}</p>
</div>
<div v-if="invalidParts.length" class="bg-error border-red-800 shadow-md p-4">
<p class="text-sm mb-2">
{{ $strings.LabelInvalidParts }} <span class="text-sm">({{ invalidParts.length }})</span>
</p>
<div>
<p v-for="part in invalidParts" :key="part.filename" class="text-sm font-mono">{{ part.filename }}: {{ part.error }}</p>
</div>
</div>
<tables-tracks-table :title="$strings.LabelStatsAudioTracks" :tracks="tracksWithAudioFile" :is-file="isFile" :library-item-id="libraryItemId" class="mt-6" />
</div>
</template>
<script>
export default {
props: {
libraryItemId: String,
media: {
type: Object,
default: () => {}
},
isFile: Boolean
},
data() {
return {}
},
computed: {
tracksWithAudioFile() {
return this.media.tracks.map((track) => {
track.audioFile = this.media.audioFiles.find((af) => af.metadata.path === track.metadata.path)
return track
})
},
missingPartChunks() {
if (this.missingParts === 1) return this.missingParts[0]
var chunks = []
var currentIndex = this.missingParts[0]
var currentChunk = [this.missingParts[0]]
for (let i = 1; i < this.missingParts.length; i++) {
var partIndex = this.missingParts[i]
if (currentIndex === partIndex - 1) {
currentChunk.push(partIndex)
currentIndex = partIndex
} else {
// console.log('Chunk ended', currentChunk.join(', '), currentIndex, partIndex)
if (currentChunk.length === 0) {
console.error('How is current chunk 0?', currentChunk.join(', '))
}
chunks.push(currentChunk)
currentChunk = [partIndex]
currentIndex = partIndex
}
}
if (currentChunk.length) {
chunks.push(currentChunk)
}
chunks = chunks.map((chunk) => {
if (chunk.length === 1) return chunk[0]
else return `${chunk[0]}-${chunk[chunk.length - 1]}`
})
return chunks
},
missingParts() {
return this.media.missingParts || []
},
invalidParts() {
return this.media.invalidParts || []
}
},
methods: {},
mounted() {}
}
</script>

View File

@ -281,7 +281,7 @@ export default {
return this.media.audioFiles || [] return this.media.audioFiles || []
}, },
audioTracks() { audioTracks() {
return this.audioFiles.filter((af) => !af.exclude && !af.invalid) return this.audioFiles.filter((af) => !af.exclude)
}, },
selectedChapterId() { selectedChapterId() {
return this.selectedChapter ? this.selectedChapter.id : null return this.selectedChapter ? this.selectedChapter.id : null

View File

@ -137,9 +137,6 @@ export default {
}) })
return count return count
}, },
missingParts() {
return this.media.missingParts || []
},
libraryItemId() { libraryItemId() {
return this.libraryItem.id return this.libraryItem.id
}, },

View File

@ -249,7 +249,7 @@ export default {
return this.media.metadata || {} return this.media.metadata || {}
}, },
audioFiles() { audioFiles() {
return (this.media.audioFiles || []).filter((af) => !af.exclude && !af.invalid) return (this.media.audioFiles || []).filter((af) => !af.exclude)
}, },
isSingleM4b() { isSingleM4b() {
return this.audioFiles.length === 1 && this.audioFiles[0].metadata.ext.toLowerCase() === '.m4b' return this.audioFiles.length === 1 && this.audioFiles[0].metadata.ext.toLowerCase() === '.m4b'

View File

@ -131,15 +131,9 @@
</button> </button>
</div> </div>
<div v-if="invalidAudioFiles.length" class="bg-error border-red-800 shadow-md p-4">
<p class="text-sm mb-2">Invalid audio files</p>
<p v-for="audioFile in invalidAudioFiles" :key="audioFile.id" class="text-xs pl-2">- {{ audioFile.metadata.filename }} ({{ audioFile.error }})</p>
</div>
<tables-chapters-table v-if="chapters.length" :library-item="libraryItem" class="mt-6" /> <tables-chapters-table v-if="chapters.length" :library-item="libraryItem" class="mt-6" />
<widgets-audiobook-data v-if="tracks.length" :library-item-id="libraryItemId" :is-file="isFile" :media="media" /> <tables-tracks-table v-if="tracks.length" :title="$strings.LabelStatsAudioTracks" :tracks="tracksWithAudioFile" :is-file="isFile" :library-item-id="libraryItemId" class="mt-6" />
<tables-podcast-lazy-episodes-table v-if="isPodcast" :library-item="libraryItem" /> <tables-podcast-lazy-episodes-table v-if="isPodcast" :library-item="libraryItem" />
@ -239,10 +233,6 @@ export default {
isAbridged() { isAbridged() {
return !!this.mediaMetadata.abridged return !!this.mediaMetadata.abridged
}, },
invalidAudioFiles() {
if (!this.isBook) return []
return this.libraryItem.media.audioFiles.filter((af) => af.invalid)
},
showPlayButton() { showPlayButton() {
if (this.isMissing || this.isInvalid) return false if (this.isMissing || this.isInvalid) return false
if (this.isMusic) return !!this.audioFile if (this.isMusic) return !!this.audioFile
@ -275,6 +265,12 @@ export default {
tracks() { tracks() {
return this.media.tracks || [] return this.media.tracks || []
}, },
tracksWithAudioFile() {
return this.tracks.map((track) => {
track.audioFile = this.media.audioFiles?.find((af) => af.metadata.path === track.metadata.path)
return track
})
},
podcastEpisodes() { podcastEpisodes() {
return this.media.episodes || [] return this.media.episodes || []
}, },

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Každých 6 hodin", "LabelIntervalEvery6Hours": "Každých 6 hodin",
"LabelIntervalEveryDay": "Každý den", "LabelIntervalEveryDay": "Každý den",
"LabelIntervalEveryHour": "Každou hodinu", "LabelIntervalEveryHour": "Každou hodinu",
"LabelInvalidParts": "Neplatné části",
"LabelInvert": "Invertovat", "LabelInvert": "Invertovat",
"LabelItem": "Položka", "LabelItem": "Položka",
"LabelLanguage": "Jazyk", "LabelLanguage": "Jazyk",
@ -357,7 +356,6 @@
"LabelMinute": "Minuta", "LabelMinute": "Minuta",
"LabelMissing": "Chybějící", "LabelMissing": "Chybějící",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Chybějící díly",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Hver 6. time", "LabelIntervalEvery6Hours": "Hver 6. time",
"LabelIntervalEveryDay": "Hver dag", "LabelIntervalEveryDay": "Hver dag",
"LabelIntervalEveryHour": "Hver time", "LabelIntervalEveryHour": "Hver time",
"LabelInvalidParts": "Ugyldige dele",
"LabelInvert": "Inverter", "LabelInvert": "Inverter",
"LabelItem": "Element", "LabelItem": "Element",
"LabelLanguage": "Sprog", "LabelLanguage": "Sprog",
@ -357,7 +356,6 @@
"LabelMinute": "Minut", "LabelMinute": "Minut",
"LabelMissing": "Mangler", "LabelMissing": "Mangler",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Manglende dele",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Alle 6 Stunden", "LabelIntervalEvery6Hours": "Alle 6 Stunden",
"LabelIntervalEveryDay": "Jeden Tag", "LabelIntervalEveryDay": "Jeden Tag",
"LabelIntervalEveryHour": "Jede Stunde", "LabelIntervalEveryHour": "Jede Stunde",
"LabelInvalidParts": "Ungültige Teile",
"LabelInvert": "Umkehren", "LabelInvert": "Umkehren",
"LabelItem": "Medium", "LabelItem": "Medium",
"LabelLanguage": "Sprache", "LabelLanguage": "Sprache",
@ -357,7 +356,6 @@
"LabelMinute": "Minute", "LabelMinute": "Minute",
"LabelMissing": "Fehlend", "LabelMissing": "Fehlend",
"LabelMissingEbook": "E-Book fehlt", "LabelMissingEbook": "E-Book fehlt",
"LabelMissingParts": "Fehlende Teile",
"LabelMissingSupplementaryEbook": "Ergänzendes E-Book fehlt", "LabelMissingSupplementaryEbook": "Ergänzendes E-Book fehlt",
"LabelMobileRedirectURIs": "Erlaubte Weiterleitungs-URIs für die mobile App", "LabelMobileRedirectURIs": "Erlaubte Weiterleitungs-URIs für die mobile App",
"LabelMobileRedirectURIsDescription": "Dies ist eine Whitelist gültiger Umleitungs-URIs für mobile Apps. Der Standardwert ist <code>audiobookshelf://oauth</code>, den du entfernen oder durch zusätzliche URIs für die Integration von Drittanbieter-Apps ergänzen kannst. Die Verwendung eines Sternchens (<code>*</code>) als alleiniger Eintrag erlaubt jede URI.", "LabelMobileRedirectURIsDescription": "Dies ist eine Whitelist gültiger Umleitungs-URIs für mobile Apps. Der Standardwert ist <code>audiobookshelf://oauth</code>, den du entfernen oder durch zusätzliche URIs für die Integration von Drittanbieter-Apps ergänzen kannst. Die Verwendung eines Sternchens (<code>*</code>) als alleiniger Eintrag erlaubt jede URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Every 6 hours", "LabelIntervalEvery6Hours": "Every 6 hours",
"LabelIntervalEveryDay": "Every day", "LabelIntervalEveryDay": "Every day",
"LabelIntervalEveryHour": "Every hour", "LabelIntervalEveryHour": "Every hour",
"LabelInvalidParts": "Invalid Parts",
"LabelInvert": "Invert", "LabelInvert": "Invert",
"LabelItem": "Item", "LabelItem": "Item",
"LabelLanguage": "Language", "LabelLanguage": "Language",
@ -357,7 +356,6 @@
"LabelMinute": "Minute", "LabelMinute": "Minute",
"LabelMissing": "Missing", "LabelMissing": "Missing",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Missing Parts",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Cada 6 Horas", "LabelIntervalEvery6Hours": "Cada 6 Horas",
"LabelIntervalEveryDay": "Cada Día", "LabelIntervalEveryDay": "Cada Día",
"LabelIntervalEveryHour": "Cada Hora", "LabelIntervalEveryHour": "Cada Hora",
"LabelInvalidParts": "Partes Inválidas",
"LabelInvert": "Invertir", "LabelInvert": "Invertir",
"LabelItem": "Elemento", "LabelItem": "Elemento",
"LabelLanguage": "Lenguaje", "LabelLanguage": "Lenguaje",
@ -357,7 +356,6 @@
"LabelMinute": "Minuto", "LabelMinute": "Minuto",
"LabelMissing": "Ausente", "LabelMissing": "Ausente",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Partes Ausentes",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "URIs de redirección a móviles permitidos", "LabelMobileRedirectURIs": "URIs de redirección a móviles permitidos",
"LabelMobileRedirectURIsDescription": "Esta es una lista de URIs válidos para redireccionamiento de apps móviles. La URI por defecto es <code>audiobookshelf://oauth</code>, la cual puedes remover or corroborar con URIs adicionales para la integración con apps de terceros. Utilizando un asterisco (<code>*</code>) como el único punto de entrada permite cualquier URI.", "LabelMobileRedirectURIsDescription": "Esta es una lista de URIs válidos para redireccionamiento de apps móviles. La URI por defecto es <code>audiobookshelf://oauth</code>, la cual puedes remover or corroborar con URIs adicionales para la integración con apps de terceros. Utilizando un asterisco (<code>*</code>) como el único punto de entrada permite cualquier URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Iga 6 tunni tagant", "LabelIntervalEvery6Hours": "Iga 6 tunni tagant",
"LabelIntervalEveryDay": "Iga päev", "LabelIntervalEveryDay": "Iga päev",
"LabelIntervalEveryHour": "Iga tunni tagant", "LabelIntervalEveryHour": "Iga tunni tagant",
"LabelInvalidParts": "Vigased osad",
"LabelInvert": "Pööra ümber", "LabelInvert": "Pööra ümber",
"LabelItem": "Kirje", "LabelItem": "Kirje",
"LabelLanguage": "Keel", "LabelLanguage": "Keel",
@ -357,7 +356,6 @@
"LabelMinute": "Minut", "LabelMinute": "Minut",
"LabelMissing": "Puudub", "LabelMissing": "Puudub",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Puuduvad osad",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Lubatud mobiilile suunamise URI-d", "LabelMobileRedirectURIs": "Lubatud mobiilile suunamise URI-d",
"LabelMobileRedirectURIsDescription": "See on mobiilirakenduste jaoks kehtivate suunamise URI-de lubatud nimekiri. Vaikimisi on selleks <code>audiobookshelf://oauth</code>, mida saate eemaldada või täiendada täiendavate URI-dega kolmanda osapoole rakenduste integreerimiseks. Tärni (<code>*</code>) ainukese kirjena kasutamine võimaldab mis tahes URI-d.", "LabelMobileRedirectURIsDescription": "See on mobiilirakenduste jaoks kehtivate suunamise URI-de lubatud nimekiri. Vaikimisi on selleks <code>audiobookshelf://oauth</code>, mida saate eemaldada või täiendada täiendavate URI-dega kolmanda osapoole rakenduste integreerimiseks. Tärni (<code>*</code>) ainukese kirjena kasutamine võimaldab mis tahes URI-d.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Toutes les 6 heures", "LabelIntervalEvery6Hours": "Toutes les 6 heures",
"LabelIntervalEveryDay": "Tous les jours", "LabelIntervalEveryDay": "Tous les jours",
"LabelIntervalEveryHour": "Toutes les heures", "LabelIntervalEveryHour": "Toutes les heures",
"LabelInvalidParts": "Parties invalides",
"LabelInvert": "Inverser", "LabelInvert": "Inverser",
"LabelItem": "Article", "LabelItem": "Article",
"LabelLanguage": "Langue", "LabelLanguage": "Langue",
@ -357,7 +356,6 @@
"LabelMinute": "Minute", "LabelMinute": "Minute",
"LabelMissing": "Manquant", "LabelMissing": "Manquant",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Parties manquantes",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "URI de redirection mobile autorisés", "LabelMobileRedirectURIs": "URI de redirection mobile autorisés",
"LabelMobileRedirectURIsDescription": "Il s'agit d'une liste blanche dURI de redirection valides pour les applications mobiles. Celui par défaut est <code>audiobookshelf://oauth</code>, que vous pouvez supprimer ou compléter avec des URIs supplémentaires pour l'intégration d'applications tierces. Lutilisation dun astérisque (<code>*</code>) comme seule entrée autorise nimporte quel URI.", "LabelMobileRedirectURIsDescription": "Il s'agit d'une liste blanche dURI de redirection valides pour les applications mobiles. Celui par défaut est <code>audiobookshelf://oauth</code>, que vous pouvez supprimer ou compléter avec des URIs supplémentaires pour l'intégration d'applications tierces. Lutilisation dun astérisque (<code>*</code>) comme seule entrée autorise nimporte quel URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Every 6 hours", "LabelIntervalEvery6Hours": "Every 6 hours",
"LabelIntervalEveryDay": "Every day", "LabelIntervalEveryDay": "Every day",
"LabelIntervalEveryHour": "Every hour", "LabelIntervalEveryHour": "Every hour",
"LabelInvalidParts": "Invalid Parts",
"LabelInvert": "Invert", "LabelInvert": "Invert",
"LabelItem": "Item", "LabelItem": "Item",
"LabelLanguage": "Language", "LabelLanguage": "Language",
@ -357,7 +356,6 @@
"LabelMinute": "Minute", "LabelMinute": "Minute",
"LabelMissing": "Missing", "LabelMissing": "Missing",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Missing Parts",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "כל 6 שעות", "LabelIntervalEvery6Hours": "כל 6 שעות",
"LabelIntervalEveryDay": "כל יום", "LabelIntervalEveryDay": "כל יום",
"LabelIntervalEveryHour": "כל שעה", "LabelIntervalEveryHour": "כל שעה",
"LabelInvalidParts": "חלקים לא תקינים",
"LabelInvert": "הפוך", "LabelInvert": "הפוך",
"LabelItem": "פריט", "LabelItem": "פריט",
"LabelLanguage": "שפה", "LabelLanguage": "שפה",
@ -357,7 +356,6 @@
"LabelMinute": "דקה", "LabelMinute": "דקה",
"LabelMissing": "חסר", "LabelMissing": "חסר",
"LabelMissingEbook": "אין ספר אלקטרוני", "LabelMissingEbook": "אין ספר אלקטרוני",
"LabelMissingParts": "חלקים חסרים",
"LabelMissingSupplementaryEbook": "אין ספר אלקטרוני נלווה", "LabelMissingSupplementaryEbook": "אין ספר אלקטרוני נלווה",
"LabelMobileRedirectURIs": "כתובות משדר ניידות מורשות", "LabelMobileRedirectURIs": "כתובות משדר ניידות מורשות",
"LabelMobileRedirectURIsDescription": "זהו רשימה לבניה של כתובות ה-URI הנתמכות להפניות עבור אפליקציות ניידות. הברירת מחדל היא <code>audiobookshelf://oauth</code>, שניתן להסיר או להוסיף לה כתובות נוספות לאינטגרציה עם אפליקציות צד שלישי. שימוש בכוכבית (<code>*</code>) כקלט בודד מאפשר כל URI.", "LabelMobileRedirectURIsDescription": "זהו רשימה לבניה של כתובות ה-URI הנתמכות להפניות עבור אפליקציות ניידות. הברירת מחדל היא <code>audiobookshelf://oauth</code>, שניתן להסיר או להוסיף לה כתובות נוספות לאינטגרציה עם אפליקציות צד שלישי. שימוש בכוכבית (<code>*</code>) כקלט בודד מאפשר כל URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Every 6 hours", "LabelIntervalEvery6Hours": "Every 6 hours",
"LabelIntervalEveryDay": "Every day", "LabelIntervalEveryDay": "Every day",
"LabelIntervalEveryHour": "Every hour", "LabelIntervalEveryHour": "Every hour",
"LabelInvalidParts": "Invalid Parts",
"LabelInvert": "Invert", "LabelInvert": "Invert",
"LabelItem": "Item", "LabelItem": "Item",
"LabelLanguage": "Language", "LabelLanguage": "Language",
@ -357,7 +356,6 @@
"LabelMinute": "Minute", "LabelMinute": "Minute",
"LabelMissing": "Missing", "LabelMissing": "Missing",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Missing Parts",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Every 6 hours", "LabelIntervalEvery6Hours": "Every 6 hours",
"LabelIntervalEveryDay": "Every day", "LabelIntervalEveryDay": "Every day",
"LabelIntervalEveryHour": "Every hour", "LabelIntervalEveryHour": "Every hour",
"LabelInvalidParts": "Nevaljajuči dijelovi",
"LabelInvert": "Invert", "LabelInvert": "Invert",
"LabelItem": "Stavka", "LabelItem": "Stavka",
"LabelLanguage": "Jezik", "LabelLanguage": "Jezik",
@ -357,7 +356,6 @@
"LabelMinute": "Minuta", "LabelMinute": "Minuta",
"LabelMissing": "Nedostaje", "LabelMissing": "Nedostaje",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Nedostajali dijelovi",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Minden 6 órában", "LabelIntervalEvery6Hours": "Minden 6 órában",
"LabelIntervalEveryDay": "Minden nap", "LabelIntervalEveryDay": "Minden nap",
"LabelIntervalEveryHour": "Minden órában", "LabelIntervalEveryHour": "Minden órában",
"LabelInvalidParts": "Érvénytelen részek",
"LabelInvert": "Megfordítás", "LabelInvert": "Megfordítás",
"LabelItem": "Elem", "LabelItem": "Elem",
"LabelLanguage": "Nyelv", "LabelLanguage": "Nyelv",
@ -357,7 +356,6 @@
"LabelMinute": "Perc", "LabelMinute": "Perc",
"LabelMissing": "Hiányzó", "LabelMissing": "Hiányzó",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Hiányzó részek",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Engedélyezett mobil átirányítási URI-k", "LabelMobileRedirectURIs": "Engedélyezett mobil átirányítási URI-k",
"LabelMobileRedirectURIsDescription": "Ez egy fehérlista az érvényes mobilalkalmazás-átirányítási URI-k számára. Az alapértelmezett <code>audiobookshelf://oauth</code>, amely eltávolítható vagy kiegészíthető további URI-kkal harmadik féltől származó alkalmazásintegráció érdekében. Ha az egyetlen bejegyzés egy csillag (<code>*</code>), akkor bármely URI engedélyezett.", "LabelMobileRedirectURIsDescription": "Ez egy fehérlista az érvényes mobilalkalmazás-átirányítási URI-k számára. Az alapértelmezett <code>audiobookshelf://oauth</code>, amely eltávolítható vagy kiegészíthető további URI-kkal harmadik féltől származó alkalmazásintegráció érdekében. Ha az egyetlen bejegyzés egy csillag (<code>*</code>), akkor bármely URI engedélyezett.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Ogni 6 ore", "LabelIntervalEvery6Hours": "Ogni 6 ore",
"LabelIntervalEveryDay": "Ogni Giorno", "LabelIntervalEveryDay": "Ogni Giorno",
"LabelIntervalEveryHour": "Ogni ora", "LabelIntervalEveryHour": "Ogni ora",
"LabelInvalidParts": "Parti Invalide",
"LabelInvert": "Inverti", "LabelInvert": "Inverti",
"LabelItem": "Oggetti", "LabelItem": "Oggetti",
"LabelLanguage": "Lingua", "LabelLanguage": "Lingua",
@ -357,7 +356,6 @@
"LabelMinute": "Minuto", "LabelMinute": "Minuto",
"LabelMissing": "Altro", "LabelMissing": "Altro",
"LabelMissingEbook": "Non ha ebook", "LabelMissingEbook": "Non ha ebook",
"LabelMissingParts": "Parti rimanenti",
"LabelMissingSupplementaryEbook": "Non ha ebook supplementare", "LabelMissingSupplementaryEbook": "Non ha ebook supplementare",
"LabelMobileRedirectURIs": "URI di reindirizzamento mobile consentiti", "LabelMobileRedirectURIs": "URI di reindirizzamento mobile consentiti",
"LabelMobileRedirectURIsDescription": "Questa è una lista bianca di URI di reindirizzamento validi per le app mobili. Quello predefinito è <code>audiobookshelf://oauth</code>, che puoi rimuovere o integrare con URI aggiuntivi per l'integrazione di app di terze parti. Utilizzando un asterisco (<code>*</code>) poiché l'unica voce consente qualsiasi URI.", "LabelMobileRedirectURIsDescription": "Questa è una lista bianca di URI di reindirizzamento validi per le app mobili. Quello predefinito è <code>audiobookshelf://oauth</code>, che puoi rimuovere o integrare con URI aggiuntivi per l'integrazione di app di terze parti. Utilizzando un asterisco (<code>*</code>) poiché l'unica voce consente qualsiasi URI.",
@ -778,4 +776,4 @@
"ToastSocketFailedToConnect": "Socket non riesce a connettersi", "ToastSocketFailedToConnect": "Socket non riesce a connettersi",
"ToastUserDeleteFailed": "Errore eliminazione utente", "ToastUserDeleteFailed": "Errore eliminazione utente",
"ToastUserDeleteSuccess": "Utente eliminato" "ToastUserDeleteSuccess": "Utente eliminato"
} }

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Kas 6 valandas", "LabelIntervalEvery6Hours": "Kas 6 valandas",
"LabelIntervalEveryDay": "Kasdien", "LabelIntervalEveryDay": "Kasdien",
"LabelIntervalEveryHour": "Kiekvieną valandą", "LabelIntervalEveryHour": "Kiekvieną valandą",
"LabelInvalidParts": "Netinkamos dalys",
"LabelInvert": "Apversti", "LabelInvert": "Apversti",
"LabelItem": "Elementas", "LabelItem": "Elementas",
"LabelLanguage": "Kalba", "LabelLanguage": "Kalba",
@ -357,7 +356,6 @@
"LabelMinute": "Minutė", "LabelMinute": "Minutė",
"LabelMissing": "Trūksta", "LabelMissing": "Trūksta",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Trūkstamos dalys",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Iedere 6 uur", "LabelIntervalEvery6Hours": "Iedere 6 uur",
"LabelIntervalEveryDay": "Iedere dag", "LabelIntervalEveryDay": "Iedere dag",
"LabelIntervalEveryHour": "Ieder uur", "LabelIntervalEveryHour": "Ieder uur",
"LabelInvalidParts": "Ongeldige delen",
"LabelInvert": "Omdraaien", "LabelInvert": "Omdraaien",
"LabelItem": "Onderdeel", "LabelItem": "Onderdeel",
"LabelLanguage": "Taal", "LabelLanguage": "Taal",
@ -357,7 +356,6 @@
"LabelMinute": "Minuut", "LabelMinute": "Minuut",
"LabelMissing": "Ontbrekend", "LabelMissing": "Ontbrekend",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Ontbrekende delen",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Hver 6. timer", "LabelIntervalEvery6Hours": "Hver 6. timer",
"LabelIntervalEveryDay": "Hver dag", "LabelIntervalEveryDay": "Hver dag",
"LabelIntervalEveryHour": "Hver time", "LabelIntervalEveryHour": "Hver time",
"LabelInvalidParts": "Ugyldige deler",
"LabelInvert": "Inverter", "LabelInvert": "Inverter",
"LabelItem": "Enhet", "LabelItem": "Enhet",
"LabelLanguage": "Språk", "LabelLanguage": "Språk",
@ -357,7 +356,6 @@
"LabelMinute": "Minutt", "LabelMinute": "Minutt",
"LabelMissing": "Mangler", "LabelMissing": "Mangler",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Manglende deler",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Co 6 godzin", "LabelIntervalEvery6Hours": "Co 6 godzin",
"LabelIntervalEveryDay": "Każdego dnia", "LabelIntervalEveryDay": "Każdego dnia",
"LabelIntervalEveryHour": "Każdej godziny", "LabelIntervalEveryHour": "Każdej godziny",
"LabelInvalidParts": "Nieprawidłowe części",
"LabelInvert": "Invert", "LabelInvert": "Invert",
"LabelItem": "Pozycja", "LabelItem": "Pozycja",
"LabelLanguage": "Język", "LabelLanguage": "Język",
@ -357,7 +356,6 @@
"LabelMinute": "Minuta", "LabelMinute": "Minuta",
"LabelMissing": "Brakujący", "LabelMissing": "Brakujący",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Brakujące cześci",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "A cada 6 horas", "LabelIntervalEvery6Hours": "A cada 6 horas",
"LabelIntervalEveryDay": "Todo dia", "LabelIntervalEveryDay": "Todo dia",
"LabelIntervalEveryHour": "Toda hora", "LabelIntervalEveryHour": "Toda hora",
"LabelInvalidParts": "Partes Inválidas",
"LabelInvert": "Inverter", "LabelInvert": "Inverter",
"LabelItem": "Item", "LabelItem": "Item",
"LabelLanguage": "Idioma", "LabelLanguage": "Idioma",
@ -357,7 +356,6 @@
"LabelMinute": "Minuto", "LabelMinute": "Minuto",
"LabelMissing": "Ausente", "LabelMissing": "Ausente",
"LabelMissingEbook": "Ebook não existe", "LabelMissingEbook": "Ebook não existe",
"LabelMissingParts": "Partes Ausentes",
"LabelMissingSupplementaryEbook": "Ebook complementar não existe", "LabelMissingSupplementaryEbook": "Ebook complementar não existe",
"LabelMobileRedirectURIs": "URIs de redirecionamento móveis permitidas", "LabelMobileRedirectURIs": "URIs de redirecionamento móveis permitidas",
"LabelMobileRedirectURIsDescription": "Essa é uma lista de permissionamento para URIs válidas para o redirecionamento de aplicativos móveis. A padrão é <code>audiobookshelf://oauth</code>, que pode ser removida ou acrescentada com novas URIs para integração com apps de terceiros. Usando um asterisco (<code>*</code>) como um item único dará permissão para qualquer URI.", "LabelMobileRedirectURIsDescription": "Essa é uma lista de permissionamento para URIs válidas para o redirecionamento de aplicativos móveis. A padrão é <code>audiobookshelf://oauth</code>, que pode ser removida ou acrescentada com novas URIs para integração com apps de terceiros. Usando um asterisco (<code>*</code>) como um item único dará permissão para qualquer URI.",
@ -778,4 +776,4 @@
"ToastSocketFailedToConnect": "Falha na conexão do socket", "ToastSocketFailedToConnect": "Falha na conexão do socket",
"ToastUserDeleteFailed": "Falha ao apagar usuário", "ToastUserDeleteFailed": "Falha ao apagar usuário",
"ToastUserDeleteSuccess": "Usuário apagado" "ToastUserDeleteSuccess": "Usuário apagado"
} }

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Каждые 6 часов", "LabelIntervalEvery6Hours": "Каждые 6 часов",
"LabelIntervalEveryDay": "Каждый день", "LabelIntervalEveryDay": "Каждый день",
"LabelIntervalEveryHour": "Каждый час", "LabelIntervalEveryHour": "Каждый час",
"LabelInvalidParts": "Неверные части",
"LabelInvert": "Инвертировать", "LabelInvert": "Инвертировать",
"LabelItem": "Элемент", "LabelItem": "Элемент",
"LabelLanguage": "Язык", "LabelLanguage": "Язык",
@ -357,7 +356,6 @@
"LabelMinute": "Минуты", "LabelMinute": "Минуты",
"LabelMissing": "Потеряно", "LabelMissing": "Потеряно",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Потерянные части",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Разрешенные URI перенаправления с мобильных устройств", "LabelMobileRedirectURIs": "Разрешенные URI перенаправления с мобильных устройств",
"LabelMobileRedirectURIsDescription": "Это белый список допустимых URI перенаправления для мобильных приложений. По умолчанию используется <code>audiobookshelf://oauth</code>, который можно удалить или дополнить дополнительными URI для интеграции со сторонними приложениями. Использование звездочки (<code>*</code>) в качестве единственной записи разрешает любой URI.", "LabelMobileRedirectURIsDescription": "Это белый список допустимых URI перенаправления для мобильных приложений. По умолчанию используется <code>audiobookshelf://oauth</code>, который можно удалить или дополнить дополнительными URI для интеграции со сторонними приложениями. Использование звездочки (<code>*</code>) в качестве единственной записи разрешает любой URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Var 6:e timme", "LabelIntervalEvery6Hours": "Var 6:e timme",
"LabelIntervalEveryDay": "Varje dag", "LabelIntervalEveryDay": "Varje dag",
"LabelIntervalEveryHour": "Varje timme", "LabelIntervalEveryHour": "Varje timme",
"LabelInvalidParts": "Ogiltiga delar",
"LabelInvert": "Invertera", "LabelInvert": "Invertera",
"LabelItem": "Objekt", "LabelItem": "Objekt",
"LabelLanguage": "Språk", "LabelLanguage": "Språk",
@ -357,7 +356,6 @@
"LabelMinute": "Minut", "LabelMinute": "Minut",
"LabelMissing": "Saknad", "LabelMissing": "Saknad",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "Saknade delar",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Кожні 6 годин", "LabelIntervalEvery6Hours": "Кожні 6 годин",
"LabelIntervalEveryDay": "Щодня", "LabelIntervalEveryDay": "Щодня",
"LabelIntervalEveryHour": "Щогодини", "LabelIntervalEveryHour": "Щогодини",
"LabelInvalidParts": "Недопустимі частини",
"LabelInvert": "Інвертувати", "LabelInvert": "Інвертувати",
"LabelItem": "Елемент", "LabelItem": "Елемент",
"LabelLanguage": "Мова", "LabelLanguage": "Мова",
@ -357,7 +356,6 @@
"LabelMinute": "Хвилина", "LabelMinute": "Хвилина",
"LabelMissing": "Бракує", "LabelMissing": "Бракує",
"LabelMissingEbook": "Без електронної книги", "LabelMissingEbook": "Без електронної книги",
"LabelMissingParts": "Відсутні частини",
"LabelMissingSupplementaryEbook": "Без додаткової електронної книги", "LabelMissingSupplementaryEbook": "Без додаткової електронної книги",
"LabelMobileRedirectURIs": "Дозволені адреси перенаправлення", "LabelMobileRedirectURIs": "Дозволені адреси перенаправлення",
"LabelMobileRedirectURIsDescription": "Це білий список наявних URI, що перенаправляють у мобільний додаток. За замовчуванням це <code>audiobookshelf://oauth</code>, який ви можете видалити або ж додати інші адреси для сторонніх інтеграцій. Використайте зірочку (<code>*</code>), аби дозволити будь-яке URI.", "LabelMobileRedirectURIsDescription": "Це білий список наявних URI, що перенаправляють у мобільний додаток. За замовчуванням це <code>audiobookshelf://oauth</code>, який ви можете видалити або ж додати інші адреси для сторонніх інтеграцій. Використайте зірочку (<code>*</code>), аби дозволити будь-яке URI.",
@ -778,4 +776,4 @@
"ToastSocketFailedToConnect": "Не вдалося під'єднатися до сокета", "ToastSocketFailedToConnect": "Не вдалося під'єднатися до сокета",
"ToastUserDeleteFailed": "Не вдалося видалити користувача", "ToastUserDeleteFailed": "Не вдалося видалити користувача",
"ToastUserDeleteSuccess": "Користувача видалено" "ToastUserDeleteSuccess": "Користувача видалено"
} }

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "Mỗi 6 giờ", "LabelIntervalEvery6Hours": "Mỗi 6 giờ",
"LabelIntervalEveryDay": "Mỗi ngày", "LabelIntervalEveryDay": "Mỗi ngày",
"LabelIntervalEveryHour": "Mỗi giờ", "LabelIntervalEveryHour": "Mỗi giờ",
"LabelInvalidParts": "Phần không hợp lệ",
"LabelInvert": "Nghịch đảo", "LabelInvert": "Nghịch đảo",
"LabelItem": "Mục", "LabelItem": "Mục",
"LabelLanguage": "Ngôn ngữ", "LabelLanguage": "Ngôn ngữ",
@ -357,7 +356,6 @@
"LabelMinute": "Phút", "LabelMinute": "Phút",
"LabelMissing": "Thiếu", "LabelMissing": "Thiếu",
"LabelMissingEbook": "Không có ebook", "LabelMissingEbook": "Không có ebook",
"LabelMissingParts": "Các phần thiếu",
"LabelMissingSupplementaryEbook": "Không có ebook bổ sung", "LabelMissingSupplementaryEbook": "Không có ebook bổ sung",
"LabelMobileRedirectURIs": "URI chuyển hướng di động được cho phép", "LabelMobileRedirectURIs": "URI chuyển hướng di động được cho phép",
"LabelMobileRedirectURIsDescription": "Đây là danh sách trắng các URI chuyển hướng hợp lệ cho ứng dụng di động. Mặc định là <code>audiobookshelf://oauth</code>, bạn có thể loại bỏ hoặc bổ sung thêm các URI cho tích hợp ứng dụng bên thứ ba. Sử dụng dấu hoa thị (<code>*</code>) như một mục duy nhất cho phép bất kỳ URI nào.", "LabelMobileRedirectURIsDescription": "Đây là danh sách trắng các URI chuyển hướng hợp lệ cho ứng dụng di động. Mặc định là <code>audiobookshelf://oauth</code>, bạn có thể loại bỏ hoặc bổ sung thêm các URI cho tích hợp ứng dụng bên thứ ba. Sử dụng dấu hoa thị (<code>*</code>) như một mục duy nhất cho phép bất kỳ URI nào.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "每 6 小时", "LabelIntervalEvery6Hours": "每 6 小时",
"LabelIntervalEveryDay": "每天", "LabelIntervalEveryDay": "每天",
"LabelIntervalEveryHour": "每小时", "LabelIntervalEveryHour": "每小时",
"LabelInvalidParts": "无效部件",
"LabelInvert": "倒转", "LabelInvert": "倒转",
"LabelItem": "项目", "LabelItem": "项目",
"LabelLanguage": "语言", "LabelLanguage": "语言",
@ -357,7 +356,6 @@
"LabelMinute": "分钟", "LabelMinute": "分钟",
"LabelMissing": "丢失", "LabelMissing": "丢失",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "丢失的部分",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "允许移动应用重定向 URI", "LabelMobileRedirectURIs": "允许移动应用重定向 URI",
"LabelMobileRedirectURIsDescription": "这是移动应用程序的有效重定向 URI 白名单. 默认值为 <code>audiobookshelf://oauth</code>,您可以删除它或添加其他 URI 以进行第三方应用集成. 使用星号 (<code>*</code>) 作为唯一条目允许任何 URI.", "LabelMobileRedirectURIsDescription": "这是移动应用程序的有效重定向 URI 白名单. 默认值为 <code>audiobookshelf://oauth</code>,您可以删除它或添加其他 URI 以进行第三方应用集成. 使用星号 (<code>*</code>) 作为唯一条目允许任何 URI.",

View File

@ -320,7 +320,6 @@
"LabelIntervalEvery6Hours": "每 6 小時", "LabelIntervalEvery6Hours": "每 6 小時",
"LabelIntervalEveryDay": "每天", "LabelIntervalEveryDay": "每天",
"LabelIntervalEveryHour": "每小時", "LabelIntervalEveryHour": "每小時",
"LabelInvalidParts": "無效部件",
"LabelInvert": "倒轉", "LabelInvert": "倒轉",
"LabelItem": "項目", "LabelItem": "項目",
"LabelLanguage": "語言", "LabelLanguage": "語言",
@ -357,7 +356,6 @@
"LabelMinute": "分鐘", "LabelMinute": "分鐘",
"LabelMissing": "丟失", "LabelMissing": "丟失",
"LabelMissingEbook": "Has no ebook", "LabelMissingEbook": "Has no ebook",
"LabelMissingParts": "丟失的部分",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "允許移動應用重定向 URI", "LabelMobileRedirectURIs": "允許移動應用重定向 URI",
"LabelMobileRedirectURIsDescription": "這是移動應用程序的有效重定向 URI 白名單. 預設值為 <code>audiobookshelf://oauth</code>,您可以刪除它或加入其他 URI 以進行第三方應用集成. 使用星號 (<code>*</code>) 作為唯一條目允許任何 URI.", "LabelMobileRedirectURIsDescription": "這是移動應用程序的有效重定向 URI 白名單. 預設值為 <code>audiobookshelf://oauth</code>,您可以刪除它或加入其他 URI 以進行第三方應用集成. 使用星號 (<code>*</code>) 作為唯一條目允許任何 URI.",
@ -466,6 +464,8 @@
"LabelSettingsHideSingleBookSeriesHelp": "只有一本書的系列將從系列頁面和主頁書架中隱藏.", "LabelSettingsHideSingleBookSeriesHelp": "只有一本書的系列將從系列頁面和主頁書架中隱藏.",
"LabelSettingsHomePageBookshelfView": "首頁使用書架視圖", "LabelSettingsHomePageBookshelfView": "首頁使用書架視圖",
"LabelSettingsLibraryBookshelfView": "媒體庫使用書架視圖", "LabelSettingsLibraryBookshelfView": "媒體庫使用書架視圖",
"LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
"LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
"LabelSettingsParseSubtitles": "解析副標題", "LabelSettingsParseSubtitles": "解析副標題",
"LabelSettingsParseSubtitlesHelp": "從有聲書資料夾中提取副標題.<br>副標題必須用 \" - \" 分隔.<br>例: \"書名 - 這裡是副標題\" 則顯示副標題 \"這裡是副標題\"", "LabelSettingsParseSubtitlesHelp": "從有聲書資料夾中提取副標題.<br>副標題必須用 \" - \" 分隔.<br>例: \"書名 - 這裡是副標題\" 則顯示副標題 \"這裡是副標題\"",
"LabelSettingsPreferMatchedMetadata": "首選匹配的元數據", "LabelSettingsPreferMatchedMetadata": "首選匹配的元數據",
@ -776,4 +776,4 @@
"ToastSocketFailedToConnect": "網路連接失敗", "ToastSocketFailedToConnect": "網路連接失敗",
"ToastUserDeleteFailed": "刪除使用者失敗", "ToastUserDeleteFailed": "刪除使用者失敗",
"ToastUserDeleteSuccess": "使用者已刪除" "ToastUserDeleteSuccess": "使用者已刪除"
} }

View File

@ -7,7 +7,7 @@ const Logger = require('../Logger')
* @property {string} ebookFormat * @property {string} ebookFormat
* @property {number} addedAt * @property {number} addedAt
* @property {number} updatedAt * @property {number} updatedAt
* @property {{filename:string, ext:string, path:string, relPath:string, size:number, mtimeMs:number, ctimeMs:number, birthtimeMs:number}} metadata * @property {{filename:string, ext:string, path:string, relPath:strFing, size:number, mtimeMs:number, ctimeMs:number, birthtimeMs:number}} metadata
*/ */
/** /**

View File

@ -32,7 +32,6 @@ class AudioFile {
this.metaTags = null this.metaTags = null
this.manuallyVerified = false this.manuallyVerified = false
this.invalid = false
this.exclude = false this.exclude = false
this.error = null this.error = null
@ -53,7 +52,6 @@ class AudioFile {
trackNumFromFilename: this.trackNumFromFilename, trackNumFromFilename: this.trackNumFromFilename,
discNumFromFilename: this.discNumFromFilename, discNumFromFilename: this.discNumFromFilename,
manuallyVerified: !!this.manuallyVerified, manuallyVerified: !!this.manuallyVerified,
invalid: !!this.invalid,
exclude: !!this.exclude, exclude: !!this.exclude,
error: this.error || null, error: this.error || null,
format: this.format, format: this.format,
@ -78,7 +76,6 @@ class AudioFile {
this.addedAt = data.addedAt this.addedAt = data.addedAt
this.updatedAt = data.updatedAt this.updatedAt = data.updatedAt
this.manuallyVerified = !!data.manuallyVerified this.manuallyVerified = !!data.manuallyVerified
this.invalid = !!data.invalid
this.exclude = !!data.exclude this.exclude = !!data.exclude
this.error = data.error || null this.error = data.error || null
@ -112,10 +109,6 @@ class AudioFile {
} }
} }
get isValidTrack() {
return !this.invalid && !this.exclude
}
// New scanner creates AudioFile from AudioFileScanner // New scanner creates AudioFile from AudioFileScanner
setDataFromProbe(libraryFile, probeData) { setDataFromProbe(libraryFile, probeData) {
this.ino = libraryFile.ino || null this.ino = libraryFile.ino || null

View File

@ -17,7 +17,6 @@ class Book {
this.audioFiles = [] this.audioFiles = []
this.chapters = [] this.chapters = []
this.missingParts = []
this.ebookFile = null this.ebookFile = null
this.lastCoverSearch = null this.lastCoverSearch = null
@ -36,7 +35,6 @@ class Book {
this.tags = [...book.tags] this.tags = [...book.tags]
this.audioFiles = book.audioFiles.map(f => new AudioFile(f)) this.audioFiles = book.audioFiles.map(f => new AudioFile(f))
this.chapters = book.chapters.map(c => ({ ...c })) this.chapters = book.chapters.map(c => ({ ...c }))
this.missingParts = book.missingParts ? [...book.missingParts] : []
this.ebookFile = book.ebookFile ? new EBookFile(book.ebookFile) : null this.ebookFile = book.ebookFile ? new EBookFile(book.ebookFile) : null
this.lastCoverSearch = book.lastCoverSearch || null this.lastCoverSearch = book.lastCoverSearch || null
this.lastCoverSearchQuery = book.lastCoverSearchQuery || null this.lastCoverSearchQuery = book.lastCoverSearchQuery || null
@ -51,7 +49,6 @@ class Book {
tags: [...this.tags], tags: [...this.tags],
audioFiles: this.audioFiles.map(f => f.toJSON()), audioFiles: this.audioFiles.map(f => f.toJSON()),
chapters: this.chapters.map(c => ({ ...c })), chapters: this.chapters.map(c => ({ ...c })),
missingParts: [...this.missingParts],
ebookFile: this.ebookFile ? this.ebookFile.toJSON() : null ebookFile: this.ebookFile ? this.ebookFile.toJSON() : null
} }
} }
@ -65,8 +62,6 @@ class Book {
numTracks: this.tracks.length, numTracks: this.tracks.length,
numAudioFiles: this.audioFiles.length, numAudioFiles: this.audioFiles.length,
numChapters: this.chapters.length, numChapters: this.chapters.length,
numMissingParts: this.missingParts.length,
numInvalidAudioFiles: this.invalidAudioFiles.length,
duration: this.duration, duration: this.duration,
size: this.size, size: this.size,
ebookFormat: this.ebookFile?.ebookFormat ebookFormat: this.ebookFile?.ebookFormat
@ -85,7 +80,6 @@ class Book {
duration: this.duration, duration: this.duration,
size: this.size, size: this.size,
tracks: this.tracks.map(t => t.toJSON()), tracks: this.tracks.map(t => t.toJSON()),
missingParts: [...this.missingParts],
ebookFile: this.ebookFile?.toJSON() || null ebookFile: this.ebookFile?.toJSON() || null
} }
} }
@ -109,11 +103,8 @@ class Book {
get hasMediaEntities() { get hasMediaEntities() {
return !!this.tracks.length || this.ebookFile return !!this.tracks.length || this.ebookFile
} }
get invalidAudioFiles() {
return this.audioFiles.filter(af => af.invalid)
}
get includedAudioFiles() { get includedAudioFiles() {
return this.audioFiles.filter(af => !af.exclude && !af.invalid) return this.audioFiles.filter(af => !af.exclude)
} }
get tracks() { get tracks() {
let startOffset = 0 let startOffset = 0
@ -238,7 +229,6 @@ class Book {
this.audioFiles = orderedFileData.map((fileData) => { this.audioFiles = orderedFileData.map((fileData) => {
const audioFile = this.audioFiles.find(af => af.ino === fileData.ino) const audioFile = this.audioFiles.find(af => af.ino === fileData.ino)
audioFile.manuallyVerified = true audioFile.manuallyVerified = true
audioFile.invalid = false
audioFile.error = null audioFile.error = null
if (fileData.exclude !== undefined) { if (fileData.exclude !== undefined) {
audioFile.exclude = !!fileData.exclude audioFile.exclude = !!fileData.exclude
@ -257,7 +247,6 @@ class Book {
rebuildTracks() { rebuildTracks() {
Logger.debug(`[Book] Tracks being rebuilt...!`) Logger.debug(`[Book] Tracks being rebuilt...!`)
this.audioFiles.sort((a, b) => a.index - b.index) this.audioFiles.sort((a, b) => a.index - b.index)
this.missingParts = []
} }
// Only checks container format // Only checks container format