Clean and parse author name from directory, sort by author last name, scan for covers

This commit is contained in:
advplyr 2021-08-24 20:24:40 -05:00
parent 759be593b6
commit 51357195e2
28 changed files with 783 additions and 59 deletions

View file

@ -1,5 +1,5 @@
<template>
<div class="bg-bg page overflow-hidden relative" :class="streamAudiobook ? 'streaming' : ''">
<div id="ab-page-wrapper" class="bg-bg page overflow-hidden relative" :class="streamAudiobook ? 'streaming' : ''">
<div v-show="saving" class="absolute z-20 w-full h-full flex items-center justify-center">
<ui-loading-indicator />
</div>

View file

@ -1,5 +1,5 @@
<template>
<div class="bg-bg page overflow-hidden" :class="streamAudiobook ? 'streaming' : ''">
<div id="ab-page-wrapper" class="bg-bg page overflow-hidden" :class="streamAudiobook ? 'streaming' : ''">
<div class="w-full h-full overflow-y-auto p-8">
<div class="flex max-w-6xl mx-auto">
<div class="w-52" style="min-width: 208px">
@ -10,7 +10,11 @@
</div>
<div class="flex-grow px-10">
<div class="flex">
<h1 class="text-2xl">{{ title }}</h1>
<div class="mb-2">
<h1 class="text-2xl font-book leading-7">{{ title }}</h1>
<h3 v-if="series" class="font-book text-gray-300 text-lg leading-7">{{ seriesText }}</h3>
<p class="text-sm text-gray-100 leading-7">by {{ author }}</p>
</div>
<div class="flex-grow" />
</div>
<p class="text-gray-300 text-sm my-1">
@ -133,6 +137,17 @@ export default {
author() {
return this.book.author || 'Unknown'
},
series() {
return this.book.series || null
},
volumeNumber() {
return this.book.volumeNumber || null
},
seriesText() {
if (!this.series) return ''
if (!this.volumeNumber) return this.series
return `${this.series} #${this.volumeNumber}`
},
durationPretty() {
return this.audiobook.durationPretty
},

View file

@ -26,10 +26,15 @@
</table>
</div>
<div class="h-0.5 bg-primary bg-opacity-50 w-full" />
<div class="flex items-center py-4 mb-8">
<p class="text-2xl">Scanner</p>
<div class="flex-grow" />
<ui-btn color="success" @click="scan">Scan</ui-btn>
<div class="py-4 mb-8">
<div class="flex items-start py-2">
<p class="text-2xl">Scanner</p>
<div class="flex-grow" />
<div class="w-40 flex flex-col">
<ui-btn color="success" class="mb-4" :loading="isScanning" :disabled="isScanningCovers" @click="scan">Scan</ui-btn>
<ui-btn color="primary" small :padding-x="2" :loading="isScanningCovers" :disabled="isScanning" @click="scanCovers">Scan for Covers</ui-btn>
</div>
</div>
</div>
<div class="h-0.5 bg-primary bg-opacity-50 w-full" />
@ -68,6 +73,12 @@ export default {
computed: {
streamAudiobook() {
return this.$store.state.streamAudiobook
},
isScanning() {
return this.$store.state.isScanning
},
isScanningCovers() {
return this.$store.state.isScanningCovers
}
},
methods: {
@ -79,6 +90,9 @@ export default {
scan() {
this.$root.socket.emit('scan')
},
scanCovers() {
this.$root.socket.emit('scan_covers')
},
clickAddUser() {
this.$toast.info('Under Construction: User management coming soon.')
},