mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-26 08:12:25 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const axios = require('axios')
 | |
| const packageJson = require('../../package.json')
 | |
| const Logger = require('../Logger')
 | |
| const { isNullOrNaN } = require('../utils/index')
 | |
| 
 | |
| class MusicBrainz {
 | |
|   constructor() { }
 | |
| 
 | |
|   get userAgentString() {
 | |
|     return `audiobookshelf/${packageJson.version} (https://audiobookshelf.org)`
 | |
|   }
 | |
| 
 | |
|   // https://musicbrainz.org/doc/MusicBrainz_API/Search
 | |
|   searchTrack(options) {
 | |
|     let luceneParts = []
 | |
|     if (options.artist) {
 | |
|       luceneParts.push(`artist:${options.artist}`)
 | |
|     }
 | |
|     if (options.isrc) {
 | |
|       luceneParts.push(`isrc:${options.isrc}`)
 | |
|     }
 | |
|     if (options.title) {
 | |
|       luceneParts.push(`recording:${options.title}`)
 | |
|     }
 | |
|     if (options.album) {
 | |
|       luceneParts.push(`release:${options.album}`)
 | |
|     }
 | |
|     if (!luceneParts.length) {
 | |
|       Logger.error(`[MusicBrainz] Invalid search options - must have at least one of artist, isrc, title, album`)
 | |
|       return []
 | |
|     }
 | |
| 
 | |
|     const query = {
 | |
|       query: luceneParts.join(' AND '),
 | |
|       limit: isNullOrNaN(options.limit) ? 15 : Number(options.limit),
 | |
|       fmt: 'json'
 | |
|     }
 | |
|     const config = {
 | |
|       headers: {
 | |
|         'User-Agent': this.userAgentString
 | |
|       }
 | |
|     }
 | |
|     return axios.get('https://musicbrainz.org/ws/2/recording', { params: query }, config).then((response) => {
 | |
|       return response.data.recordings || []
 | |
|     }).catch((error) => {
 | |
|       Logger.error(`[MusicBrainz] search request error`, error)
 | |
|       return []
 | |
|     })
 | |
|   }
 | |
| }
 | |
| module.exports = MusicBrainz |