mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-09-10 17:58:02 +02:00
Fix various typos
Found via `codespell -L als,autor,mape,mis,te,ue`
This commit is contained in:
parent
c7c21cc137
commit
3837c7301c
@ -238,7 +238,7 @@ describe('LazyBookCard', () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
it('shows the collpased series', () => {
|
it('shows the collapsed series', () => {
|
||||||
cy.mount(LazyBookCard, mountOptions)
|
cy.mount(LazyBookCard, mountOptions)
|
||||||
|
|
||||||
cy.get('&titleImageNotReady').should('be.hidden')
|
cy.get('&titleImageNotReady').should('be.hidden')
|
||||||
|
@ -70,7 +70,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
fileTreeToItems(filetree, mediaType) {
|
fileTreeToItems(filetree, mediaType) {
|
||||||
// Has directores - Is Multi Book Drop
|
// Has directories - Is Multi Book Drop
|
||||||
if (filetree.some((f) => f.isDirectory)) {
|
if (filetree.some((f) => f.isDirectory)) {
|
||||||
var ignoredFilesInRoot = filetree.filter((f) => !f.isDirectory)
|
var ignoredFilesInRoot = filetree.filter((f) => !f.isDirectory)
|
||||||
if (ignoredFilesInRoot.length) filetree = filetree.filter((f) => f.isDirectory)
|
if (ignoredFilesInRoot.length) filetree = filetree.filter((f) => f.isDirectory)
|
||||||
|
@ -53,7 +53,7 @@ components:
|
|||||||
description: The maximum number of episodes to keep.
|
description: The maximum number of episodes to keep.
|
||||||
maxNewEpisodesToDownload:
|
maxNewEpisodesToDownload:
|
||||||
type: integer
|
type: integer
|
||||||
description: The maximum number of new episodes to download when automatically downloading epsiodes.
|
description: The maximum number of new episodes to download when automatically downloading episodes.
|
||||||
lastCoverSearch:
|
lastCoverSearch:
|
||||||
type: integer
|
type: integer
|
||||||
description: The timestamp of the last cover search.
|
description: The timestamp of the last cover search.
|
||||||
|
@ -3973,7 +3973,7 @@
|
|||||||
},
|
},
|
||||||
"maxNewEpisodesToDownload": {
|
"maxNewEpisodesToDownload": {
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"description": "The maximum number of new episodes to download when automatically downloading epsiodes."
|
"description": "The maximum number of new episodes to download when automatically downloading episodes."
|
||||||
},
|
},
|
||||||
"lastCoverSearch": {
|
"lastCoverSearch": {
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
|
@ -342,7 +342,7 @@ The `Name` needs to match the `Parameters` above `audiobookshelf`.
|
|||||||
|
|
||||||
##### Health checking:
|
##### Health checking:
|
||||||
|
|
||||||
Health checking is enabled by default. `Http check method` of `OPTIONS` is not supported on Audiobookshelf. If Health check fails, data will not be forwared. Need to do one of following:
|
Health checking is enabled by default. `Http check method` of `OPTIONS` is not supported on Audiobookshelf. If Health check fails, data will not be forwarded. Need to do one of following:
|
||||||
|
|
||||||
- To disable: Change `Health check method` to `none`.
|
- To disable: Change `Health check method` to `none`.
|
||||||
- To make Health checking function: Change `Http check method` to `HEAD` or `GET`.
|
- To make Health checking function: Change `Http check method` to `HEAD` or `GET`.
|
||||||
|
@ -405,7 +405,7 @@ class OidcAuthStrategy {
|
|||||||
// the post_logout_redirect_uri parameter at all and for other providers
|
// the post_logout_redirect_uri parameter at all and for other providers
|
||||||
// we would also need again to implement (and even before get to know somehow for 3rd party apps)
|
// we would also need again to implement (and even before get to know somehow for 3rd party apps)
|
||||||
// the correct app link like audiobookshelf://login (and maybe also provide a redirect like mobile-redirect).
|
// the correct app link like audiobookshelf://login (and maybe also provide a redirect like mobile-redirect).
|
||||||
// Instead because its null (and this way the parameter will be omitted completly), the client/app can simply append something like
|
// Instead because its null (and this way the parameter will be omitted completely), the client/app can simply append something like
|
||||||
// &post_logout_redirect_uri=audiobookshelf://login to the received logout url by itself which is the simplest solution
|
// &post_logout_redirect_uri=audiobookshelf://login to the received logout url by itself which is the simplest solution
|
||||||
// (The URL needs to be whitelisted in the config of the SSO/ID provider)
|
// (The URL needs to be whitelisted in the config of the SSO/ID provider)
|
||||||
|
|
||||||
|
@ -345,7 +345,7 @@ class BookFinder {
|
|||||||
}
|
}
|
||||||
const results = [...new Set(await Promise.all(promises))]
|
const results = [...new Set(await Promise.all(promises))]
|
||||||
filteredCandidates = results.filter((author) => author)
|
filteredCandidates = results.filter((author) => author)
|
||||||
// If no valid candidates were found, add back an aggresively cleaned author version
|
// If no valid candidates were found, add back an aggressively cleaned author version
|
||||||
if (!filteredCandidates.length && this.cleanAuthor) filteredCandidates.push(this.agressivelyCleanAuthor)
|
if (!filteredCandidates.length && this.cleanAuthor) filteredCandidates.push(this.agressivelyCleanAuthor)
|
||||||
// Always add an empty author candidate
|
// Always add an empty author candidate
|
||||||
filteredCandidates.push('')
|
filteredCandidates.push('')
|
||||||
@ -403,7 +403,7 @@ class BookFinder {
|
|||||||
|
|
||||||
// Remove underscores and parentheses with their contents, and replace with a separator
|
// Remove underscores and parentheses with their contents, and replace with a separator
|
||||||
const cleanTitle = title.replace(/\[.*?\]|\(.*?\)|{.*?}|_/g, ' - ')
|
const cleanTitle = title.replace(/\[.*?\]|\(.*?\)|{.*?}|_/g, ' - ')
|
||||||
// Split title into hypen-separated parts
|
// Split title into hyphen-separated parts
|
||||||
const titleParts = cleanTitle.split(/ - | -|- /)
|
const titleParts = cleanTitle.split(/ - | -|- /)
|
||||||
for (const titlePart of titleParts) authorCandidates.add(titlePart)
|
for (const titlePart of titleParts) authorCandidates.add(titlePart)
|
||||||
authorCandidates = await authorCandidates.getCandidates()
|
authorCandidates = await authorCandidates.getCandidates()
|
||||||
@ -659,7 +659,7 @@ function cleanTitleForCompares(title, keepSubtitle = false) {
|
|||||||
// Remove subtitle if there (i.e. "Cool Book: Coolest Ever" becomes "Cool Book")
|
// Remove subtitle if there (i.e. "Cool Book: Coolest Ever" becomes "Cool Book")
|
||||||
let stripped = keepSubtitle ? title : stripSubtitle(title)
|
let stripped = keepSubtitle ? title : stripSubtitle(title)
|
||||||
|
|
||||||
// Remove text in paranthesis (i.e. "Ender's Game (Ender's Saga)" becomes "Ender's Game")
|
// Remove text in parenthesis (i.e. "Ender's Game (Ender's Saga)" becomes "Ender's Game")
|
||||||
let cleaned = stripped.replace(/ *\([^)]*\) */g, '')
|
let cleaned = stripped.replace(/ *\([^)]*\) */g, '')
|
||||||
|
|
||||||
// Remove single quotes (i.e. "Ender's Game" becomes "Enders Game")
|
// Remove single quotes (i.e. "Ender's Game" becomes "Enders Game")
|
||||||
|
@ -67,7 +67,7 @@ function maybeCallback(cb) {
|
|||||||
return typeof cb === 'function' ? cb : rethrow();
|
return typeof cb === 'function' ? cb : rethrow();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Regexp that finds the next partion of a (partial) path
|
// Regexp that finds the next portion of a (partial) path
|
||||||
// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']
|
// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']
|
||||||
if (isWindows) {
|
if (isWindows) {
|
||||||
var nextPartRe = /(.*?)(?:[\/\\]+|$)/g;
|
var nextPartRe = /(.*?)(?:[\/\\]+|$)/g;
|
||||||
|
@ -280,7 +280,7 @@ class ArgvArray extends Array {
|
|||||||
* @static
|
* @static
|
||||||
*/
|
*/
|
||||||
function expandCombinedShortArg(arg) {
|
function expandCombinedShortArg(arg) {
|
||||||
/* remove initial hypen */
|
/* remove initial hyphen */
|
||||||
arg = arg.slice(1);
|
arg = arg.slice(1);
|
||||||
return arg.split('').map(letter => '-' + letter)
|
return arg.split('').map(letter => '-' + letter)
|
||||||
}
|
}
|
||||||
@ -875,7 +875,7 @@ class Definitions extends Array {
|
|||||||
if (someDontHaveFunctionType) {
|
if (someDontHaveFunctionType) {
|
||||||
halt(
|
halt(
|
||||||
'INVALID_DEFINITIONS',
|
'INVALID_DEFINITIONS',
|
||||||
'Invalid option definitions: the `type` property must be a setter fuction (default: `Boolean`)'
|
'Invalid option definitions: the `type` property must be a setter function (default: `Boolean`)'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1194,7 +1194,7 @@ class Option {
|
|||||||
this.state = state;
|
this.state = state;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* throw if already set on a singlar defaultOption */
|
/* throw if already set on a singular defaultOption */
|
||||||
if (!def.isMultiple() && this.state === 'set') {
|
if (!def.isMultiple() && this.state === 'set') {
|
||||||
const err = new Error(`Singular option already set [${this.definition.name}=${this.get()}]`);
|
const err = new Error(`Singular option already set [${this.definition.name}=${this.get()}]`);
|
||||||
err.name = 'ALREADY_SET';
|
err.name = 'ALREADY_SET';
|
||||||
|
@ -23,7 +23,7 @@ const pathExists = require('../path-exists').pathExists
|
|||||||
* does it will use it. If it does not, it checks if there's a file that
|
* does it will use it. If it does not, it checks if there's a file that
|
||||||
* exists that is relative to the current working directory, if does its used.
|
* exists that is relative to the current working directory, if does its used.
|
||||||
* This preserves the expectations of the original fs.symlink spec and adds
|
* This preserves the expectations of the original fs.symlink spec and adds
|
||||||
* the ability to pass in `relative to current working direcotry` paths.
|
* the ability to pass in `relative to current working directory` paths.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function symlinkPaths (srcpath, dstpath, callback) {
|
function symlinkPaths (srcpath, dstpath, callback) {
|
||||||
|
@ -159,7 +159,7 @@ class WasmModule {
|
|||||||
// const char * get_version()
|
// const char * get_version()
|
||||||
getVersion: this.cwrap('get_version', 'string', []),
|
getVersion: this.cwrap('get_version', 'string', []),
|
||||||
// void * archive_open( const void * buffer, size_t buffer_size)
|
// void * archive_open( const void * buffer, size_t buffer_size)
|
||||||
// retuns archive pointer
|
// returns archive pointer
|
||||||
openArchive: this.cwrap('archive_open', 'number', ['number', 'number', 'string']),
|
openArchive: this.cwrap('archive_open', 'number', ['number', 'number', 'string']),
|
||||||
// void * get_entry(void * archive)
|
// void * get_entry(void * archive)
|
||||||
// return archive entry pointer
|
// return archive entry pointer
|
||||||
@ -178,7 +178,7 @@ class WasmModule {
|
|||||||
/*
|
/*
|
||||||
#define AE_IFMT ((__LA_MODE_T)0170000)
|
#define AE_IFMT ((__LA_MODE_T)0170000)
|
||||||
#define AE_IFREG ((__LA_MODE_T)0100000) // Regular file
|
#define AE_IFREG ((__LA_MODE_T)0100000) // Regular file
|
||||||
#define AE_IFLNK ((__LA_MODE_T)0120000) // Sybolic link
|
#define AE_IFLNK ((__LA_MODE_T)0120000) // Symbolic link
|
||||||
#define AE_IFSOCK ((__LA_MODE_T)0140000) // Socket
|
#define AE_IFSOCK ((__LA_MODE_T)0140000) // Socket
|
||||||
#define AE_IFCHR ((__LA_MODE_T)0020000) // Character device
|
#define AE_IFCHR ((__LA_MODE_T)0020000) // Character device
|
||||||
#define AE_IFBLK ((__LA_MODE_T)0060000) // Block device
|
#define AE_IFBLK ((__LA_MODE_T)0060000) // Block device
|
||||||
|
@ -26,7 +26,7 @@ function lookup(obj, field) {
|
|||||||
* Applications must supply a `verify` callback which accepts `username` and
|
* Applications must supply a `verify` callback which accepts `username` and
|
||||||
* `password` credentials, and then calls the `done` callback supplying a
|
* `password` credentials, and then calls the `done` callback supplying a
|
||||||
* `user`, which should be set to `false` if the credentials are not valid.
|
* `user`, which should be set to `false` if the credentials are not valid.
|
||||||
* If an exception occured, `err` should be set.
|
* If an exception occurred, `err` should be set.
|
||||||
*
|
*
|
||||||
* Optionally, `options` can be used to change the fields in which the
|
* Optionally, `options` can be used to change the fields in which the
|
||||||
* credentials are found.
|
* credentials are found.
|
||||||
|
@ -74,7 +74,7 @@ function getClientIp(req) {
|
|||||||
|
|
||||||
if (is.ip(req.headers['cf-connecting-ip'])) {
|
if (is.ip(req.headers['cf-connecting-ip'])) {
|
||||||
return req.headers['cf-connecting-ip'];
|
return req.headers['cf-connecting-ip'];
|
||||||
} // Fastly and Firebase hosting header (When forwared to cloud function)
|
} // Fastly and Firebase hosting header (When forwarded to cloud function)
|
||||||
|
|
||||||
|
|
||||||
if (is.ip(req.headers['fastly-client-ip'])) {
|
if (is.ip(req.headers['fastly-client-ip'])) {
|
||||||
|
@ -427,7 +427,7 @@ function migrateAuthors(oldAuthors, oldLibraryItems) {
|
|||||||
*/
|
*/
|
||||||
function migrateSeries(oldSerieses, oldLibraryItems) {
|
function migrateSeries(oldSerieses, oldLibraryItems) {
|
||||||
const _newRecords = []
|
const _newRecords = []
|
||||||
// Originaly series were shared between libraries if they had the same name
|
// Originally series were shared between libraries if they had the same name
|
||||||
// Series will be separate between libraries
|
// Series will be separate between libraries
|
||||||
for (const oldSeries of oldSerieses) {
|
for (const oldSeries of oldSerieses) {
|
||||||
// Get an array of NEW library ids that have this series
|
// Get an array of NEW library ids that have this series
|
||||||
|
@ -105,7 +105,7 @@ module.exports = (nameToParse, partToReturn, fixCase, stopOnError, useLongLists)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initilize lists of prefixs, suffixs, and titles to detect
|
// Initialize lists of prefixs, suffixs, and titles to detect
|
||||||
// Note: These list entries must be all lowercase
|
// Note: These list entries must be all lowercase
|
||||||
if (useLongLists) {
|
if (useLongLists) {
|
||||||
suffixList = ['esq', 'esquire', 'jr', 'jnr', 'sr', 'snr', '2', 'ii', 'iii', 'iv',
|
suffixList = ['esq', 'esquire', 'jr', 'jnr', 'sr', 'snr', '2', 'ii', 'iii', 'iv',
|
||||||
|
@ -43,7 +43,7 @@ module.exports.checkFilepathIsAudioFile = checkFilepathIsAudioFile
|
|||||||
* @param {import('./fileUtils').FilePathItem[]} fileItems
|
* @param {import('./fileUtils').FilePathItem[]} fileItems
|
||||||
* @param {boolean} audiobooksOnly
|
* @param {boolean} audiobooksOnly
|
||||||
* @param {boolean} [includeNonMediaFiles=false] - Used by the watcher to re-scan when covers/metadata files are added/removed
|
* @param {boolean} [includeNonMediaFiles=false] - Used by the watcher to re-scan when covers/metadata files are added/removed
|
||||||
* @returns {Record<string,string[]>} map of files grouped into potential libarary item dirs
|
* @returns {Record<string,string[]>} map of files grouped into potential library item dirs
|
||||||
*/
|
*/
|
||||||
function groupFileItemsIntoLibraryItemDirs(mediaType, fileItems, audiobooksOnly, includeNonMediaFiles = false) {
|
function groupFileItemsIntoLibraryItemDirs(mediaType, fileItems, audiobooksOnly, includeNonMediaFiles = false) {
|
||||||
// Step 1: Filter out non-book-media files in root dir (with depth of 0)
|
// Step 1: Filter out non-book-media files in root dir (with depth of 0)
|
||||||
|
@ -200,7 +200,7 @@ describe('AuthorCandidates', () => {
|
|||||||
describe('no adds', () => {
|
describe('no adds', () => {
|
||||||
;[
|
;[
|
||||||
['adds aggressively cleaned cleanAuthor', 'fyodor dostoevsky, translated by jackie chan', ['fyodor dostoevsky']],
|
['adds aggressively cleaned cleanAuthor', 'fyodor dostoevsky, translated by jackie chan', ['fyodor dostoevsky']],
|
||||||
['adds cleanAuthor if aggresively cleaned cleanAuthor is empty', ', jackie chan', [', jackie chan']]
|
['adds cleanAuthor if aggressively cleaned cleanAuthor is empty', ', jackie chan', [', jackie chan']]
|
||||||
].forEach(([name, cleanAuthor, expected]) =>
|
].forEach(([name, cleanAuthor, expected]) =>
|
||||||
it(name, async () => {
|
it(name, async () => {
|
||||||
authorCandidates = new bookFinder.constructor.AuthorCandidates(cleanAuthor, audnexus)
|
authorCandidates = new bookFinder.constructor.AuthorCandidates(cleanAuthor, audnexus)
|
||||||
|
Loading…
Reference in New Issue
Block a user