audiobookshelf.audiobookshe.../pages/docs.vue

299 lines
13 KiB
Vue
Raw Normal View History

2021-09-26 11:45:07 -05:00
<template>
2021-09-27 16:43:18 -05:00
<div class="w-full max-w-5xl mx-auto px-2 py-8">
<div class="flex -ml-8 mb-8">
<div>
<span class="material-icons text-success text-2xl">priority_high</span>
</div>
<p class="pl-2 text-base md:text-lg">
Help needed writing documentation! This website is on <a href="https://github.com/advplyr/audiobookshelf-web" target="_blank" class="text-blue-500 underline">github</a>. Join the <a href="https://github.com/advplyr/audiobookshelf/discussions" target="_blank" class="text-blue-500 underline">discussion</a>,
<a href="https://github.com/advplyr/audiobookshelf/issues" target="_blank" class="text-blue-500 underline">report an issue</a> or contact me directly at <a href="mailto:advplyr@protonmail.com" class="text-blue-500 underline">advplyr@protonmail.com</a>.
</p>
</div>
2021-09-26 17:19:18 -05:00
<div class="flex -ml-8">
<div>
<span class="material-icons text-warning text-2xl">priority_high</span>
</div>
<p class="pl-2 text-base md:text-lg">Audiobookshelf relies on you already having an organized directory structure. This is because information is taken from your folder names. This includes the author name, series name, book title, publish year, volume number, and subtitle.</p>
2021-09-26 17:19:18 -05:00
</div>
<div class="w-full bg-white bg-opacity-20 h-px my-8" />
<h1 id="structure" class="text-3xl mb-4 -ml-8">
2021-09-26 17:19:18 -05:00
<nuxt-link to="#structure"><span class="material-icons text-xl text-gray-400 hover:text-white cursor-pointer mr-2">tag</span></nuxt-link
>Directory Structure
</h1>
2021-10-31 16:05:59 -05:00
<p class="mb-4 text-sm md:text-base">Here is an example supported directory structure</p>
2021-09-26 17:19:18 -05:00
<div class="p-4 border border-opacity-10 bg-primary bg-opacity-20 font-mono">
<div class="flex py-1 max-w-2xl">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Terry Goodkind</p>
2021-09-27 16:43:18 -05:00
<div class="hidden md:block flex-grow" />
<span class="hidden md:block text-white text-opacity-50 pl-4">&lt;-- Author</span>
2021-09-26 17:19:18 -05:00
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;</span>
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Sword of Truth</p>
2021-09-27 16:43:18 -05:00
<div class="hidden md:block flex-grow" />
<span class="hidden md:block text-white text-opacity-50 pl-4">&lt;-- Series</span>
2021-09-26 17:19:18 -05:00
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;&nbsp;-&nbsp;</span>
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Vol 1 - 1994 - Wizards First Rule</p>
2021-09-27 16:43:18 -05:00
<div class="hidden md:block flex-grow" />
<span class="hidden md:block text-white text-opacity-50 pl-4">&lt;-- Title&nbsp;</span>
2021-09-26 17:19:18 -05:00
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;&nbsp;-&nbsp;&nbsp;-&nbsp;</span>
<span class="material-icons">audiotrack</span>
<p class="pl-2">Audio Track 1.mp3</p>
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;&nbsp;-&nbsp;&nbsp;-&nbsp;</span>
<span class="material-icons">audiotrack</span>
<p class="pl-2">Audio Track 2.mp3</p>
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;&nbsp;-&nbsp;&nbsp;-&nbsp;</span>
<span class="material-icons">crop_original</span>
<p class="pl-2">Cover.jpg</p>
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;&nbsp;-&nbsp;</span>
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Vol 2 - 1995 - Stone of Tears</p>
2021-09-27 16:43:18 -05:00
<div class="hidden md:block flex-grow" />
<span class="hidden md:block text-white text-opacity-50 pl-4">&lt;-- Title&nbsp;</span>
2021-09-26 17:19:18 -05:00
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;&nbsp;-&nbsp;&nbsp;-&nbsp;</span>
<span class="material-icons">audiotrack</span>
<p class="pl-2">Audiobook.m4b</p>
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;</span>
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Heart of Black Ice - Sister of Darkness</p>
2021-09-27 16:43:18 -05:00
<div class="hidden md:block flex-grow" />
<span class="hidden md:block text-white text-opacity-50 pl-4">&lt;-- Title&nbsp;</span>
2021-09-26 17:19:18 -05:00
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;&nbsp;-&nbsp;</span>
<span class="material-icons">audiotrack</span>
<p class="pl-2">Audio File.m4a</p>
</div>
<div class="flex py-1 max-w-2xl">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Steven Levy</p>
2021-09-27 16:43:18 -05:00
<div class="hidden md:block flex-grow" />
<span class="hidden md:block text-white text-opacity-50 pl-4">&lt;-- Author</span>
2021-09-26 17:19:18 -05:00
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;</span>
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Hackers - Heroes of the Computer Revolution</p>
2021-09-27 16:43:18 -05:00
<div class="hidden md:block flex-grow" />
<span class="hidden md:block text-white text-opacity-50 pl-4">&lt;-- Title&nbsp;</span>
2021-09-26 17:19:18 -05:00
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;&nbsp;-&nbsp;</span>
<span class="material-icons">audiotrack</span>
<p class="pl-2">Audio File.m4a</p>
</div>
<div class="flex py-1 max-w-2xl">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">1945 - Animal Farm</p>
2021-09-27 16:43:18 -05:00
<div class="hidden md:block flex-grow" />
<span class="hidden md:block text-white text-opacity-50 pl-4">&lt;-- Title&nbsp;</span>
2021-09-26 17:19:18 -05:00
</div>
<div class="flex py-1 max-w-2xl">
<span class="text-white text-opacity-25">&nbsp;-&nbsp;</span>
<span class="material-icons">audiotrack</span>
<p class="pl-2">Audiobook.mp3</p>
</div>
</div>
2021-09-27 16:43:18 -05:00
<p class="my-4 text-sm md:text-base">Files must always be in a directory with the book title. <span class="text-error">Files in the root directory are ignored.</span><br />The title directory can be in the root directory, an author directory, or a series directory.</p>
2021-09-26 17:19:18 -05:00
<div class="w-full bg-white bg-opacity-20 h-px my-8" />
2021-10-31 16:05:59 -05:00
<h1 id="author-naming" class="text-3xl mb-4 -ml-8">
<nuxt-link to="#author-naming"><span class="material-icons text-lg text-gray-400 hover:text-white cursor-pointer mr-2">tag</span></nuxt-link
>Author Folder Naming Convention
</h1>
<p class="mb-4">Supports "Last, First" author naming as well as multiple authors separated by "," or "&".<br /><br />Valid author folder names:</p>
<div class="p-4 border border-opacity-10 bg-primary bg-opacity-20 font-mono">
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Ichiro Kishimi</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Kishimi, Ichiro</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Ichiro Kishimi, Fumitake Koga</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Kishimi, Ichiro, Koga, Fumitake</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Ichiro Kishimi & Fumitake Koga</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Kishimi, Ichiro & Koga, Fumitake</p>
</div>
</div>
<div class="w-full bg-white bg-opacity-20 h-px my-8" />
<h1 id="naming" class="text-3xl mb-4 -ml-8">
2021-09-26 17:19:18 -05:00
<nuxt-link to="#naming"><span class="material-icons text-xl text-gray-400 hover:text-white cursor-pointer mr-2">tag</span></nuxt-link
2021-10-31 16:05:59 -05:00
>Title Folder Naming Convention
2021-09-26 17:19:18 -05:00
</h1>
<p class="mb-4">In addition to the book title, the title folder can include the publish year, volume number, and the subtitle.</p>
<p class="mb-4">Here are a bunch of ways the same book could be named:</p>
<div class="p-4 border border-opacity-10 bg-primary bg-opacity-20 font-mono">
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Wizards First Rule</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">1994 - Wizards First Rule</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Wizards First Rule - A Really Good Subtitle</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">1994 - Book 1 - Wizards First Rule</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Vol 1 - 1994 - Wizards First Rule</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">1994 - Wizards First Rule - Volume 1</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">Vol. 1 - 1994 - Wizards First Rule - A Really Good Subtitle</p>
</div>
<div class="flex py-1">
<img src="/folder.svg" class="h-6" />
<p class="pl-2">(1994) - Wizards First Rule - A Really Good Subtitle</p>
</div>
2021-09-26 17:19:18 -05:00
</div>
2021-09-27 16:43:18 -05:00
<ul class="list-outside md:list-inside px-6 md:px-0 list-disc my-4 text-sm md:text-base">
<li class="py-1">Parsing out subtitles into a separate field is optional and must be enabled in settings.</li>
<li class="py-1">Different parts of a name should be separated by " - ", with the exception of the volume number (spaces aren't needed).</li>
<li class="py-1">The publish year must be the first part of the name OR directly after a volume number, and separated by " - " on both sides.</li>
2021-09-26 17:19:18 -05:00
</ul>
2021-09-30 18:50:48 -05:00
<div class="w-full bg-white bg-opacity-20 h-px my-8" />
<h1 id="metadata" class="text-3xl mb-4 -ml-8">
2021-09-30 18:50:48 -05:00
<nuxt-link to="#metadata"><span class="material-icons text-xl text-gray-400 hover:text-white cursor-pointer mr-2">tag</span></nuxt-link
>Audio File Metadata
</h1>
<p class="mb-4">Audiobookshelf uses the ID3 metadata tags in audio files to populate data.</p>
2021-09-30 18:50:48 -05:00
2021-10-23 18:22:43 -05:00
<div class="flex -ml-8 mb-4">
<div>
<span class="material-icons text-warning text-2xl">priority_high</span>
</div>
<p class="pl-2 text-base">Metadata is only mapped to audiobookshelf if the field is empty. Data parsed from the folder structure and filenames takes priority over ID3 tags.</p>
</div>
2021-09-30 18:50:48 -05:00
<p class="mb-4">Metadata on audio files will be mapped as follows:</p>
<table>
<tr class="bg-white bg-opacity-10 text-sm text-left font-semibold">
<th>File Metadata</th>
<th>Audiobookshelf Data</th>
2021-09-30 18:50:48 -05:00
</tr>
<tr>
<td>Artist</td>
<td>Author</td>
</tr>
<tr>
<td>Subtitle</td>
<td>Subtitle</td>
</tr>
<tr>
<td>Publisher</td>
<td>Publisher</td>
</tr>
<tr>
<td>Year</td>
<td>Publish Year</td>
</tr>
<tr>
<td>Composer</td>
<td>Narrator</td>
</tr>
2021-09-30 19:34:29 -05:00
<tr>
<td>Description</td>
<td>Description</td>
</tr>
2021-10-23 18:22:43 -05:00
<tr>
<td>Genre</td>
<td>Genres <span class="text-sm text-warning">*</span></td>
</tr>
<tr>
<td>Series</td>
<td>Series</td>
</tr>
<tr>
<td>Series-Part</td>
<td>Volume Number</td>
</tr>
2021-09-30 18:50:48 -05:00
</table>
2021-10-23 18:22:43 -05:00
<p class="text-sm pt-2"><span class="text-sm text-warning">*</span> Genre meta tag can include multiple genres separated by "/", "//", or ";". e.g. "Science Fiction/Fiction/Fantasy"</p>
2021-09-30 18:50:48 -05:00
<p class="my-4">Embedded cover art will be extracted and used.</p>
<p class="my-4">If you have a file named <span class="bg-white bg-opacity-10 text-gray-100 rounded-md p-1 font-mono">desc.txt</span> in the audiobook folder it will be used as the description.</p>
<p class="my-4">If you have a file named <span class="bg-white bg-opacity-10 text-gray-100 rounded-md p-1 font-mono">reader.txt</span> in the audiobook folder it will be used as the narrator.</p>
2021-09-26 11:45:07 -05:00
</div>
</template>
<script>
export default {
data() {
return {}
},
computed: {},
methods: {},
mounted() {}
}
2021-09-30 18:50:48 -05:00
</script>
<style>
table,
tr,
td,
th {
border: 1px solid #666;
}
table td,
th {
padding: 5px 15px;
}
</style>