mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Fix:Crash when matching with author names ending in ??? by escaping regex strings #2265
This commit is contained in:
		
							parent
							
								
									2ef11e5ad0
								
							
						
					
					
						commit
						9616d99640
					
				| @ -6,7 +6,7 @@ const Audnexus = require('../providers/Audnexus') | ||||
| const FantLab = require('../providers/FantLab') | ||||
| const AudiobookCovers = require('../providers/AudiobookCovers') | ||||
| const Logger = require('../Logger') | ||||
| const { levenshteinDistance } = require('../utils/index') | ||||
| const { levenshteinDistance, escapeRegExp } = require('../utils/index') | ||||
| 
 | ||||
| class BookFinder { | ||||
|   constructor() { | ||||
| @ -201,7 +201,7 @@ class BookFinder { | ||||
|     add(title, position = 0) { | ||||
|       // if title contains the author, remove it
 | ||||
|       if (this.cleanAuthor) { | ||||
|         const authorRe = new RegExp(`(^| | by |)${this.cleanAuthor}(?= |$)`, "g") | ||||
|         const authorRe = new RegExp(`(^| | by |)${escapeRegExp(this.cleanAuthor)}(?= |$)`, "g") | ||||
|         title = this.bookFinder.cleanAuthorForCompares(title).replace(authorRe, '').trim() | ||||
|       } | ||||
| 
 | ||||
|  | ||||
| @ -192,4 +192,16 @@ module.exports.asciiOnlyToLowerCase = (str) => { | ||||
|     } | ||||
|   } | ||||
|   return temp | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Escape string used in RegExp | ||||
|  * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
 | ||||
|  *  | ||||
|  * @param {string} str  | ||||
|  * @returns {string} | ||||
|  */ | ||||
| module.exports.escapeRegExp = (str) => { | ||||
|   if (typeof str !== 'string') return '' | ||||
|   return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user