mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			865 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			865 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const axios = require('axios')
 | 
						|
const Logger = require('../Logger')
 | 
						|
 | 
						|
class AudiobookCovers {
 | 
						|
  #responseTimeout = 30000
 | 
						|
 | 
						|
  constructor() {}
 | 
						|
 | 
						|
  /**
 | 
						|
   *
 | 
						|
   * @param {string} search
 | 
						|
   * @param {number} [timeout]
 | 
						|
   * @returns {Promise<{cover: string}[]>}
 | 
						|
   */
 | 
						|
  async search(search, timeout = this.#responseTimeout) {
 | 
						|
    if (!timeout || isNaN(timeout)) timeout = this.#responseTimeout
 | 
						|
 | 
						|
    const url = `https://api.audiobookcovers.com/cover/bytext/`
 | 
						|
    const params = new URLSearchParams([['q', search]])
 | 
						|
    const items = await axios
 | 
						|
      .get(url, {
 | 
						|
        params,
 | 
						|
        timeout
 | 
						|
      })
 | 
						|
      .then((res) => res?.data || [])
 | 
						|
      .catch((error) => {
 | 
						|
        Logger.error('[AudiobookCovers] Cover search error', error)
 | 
						|
        return []
 | 
						|
      })
 | 
						|
    return items.map((item) => ({ cover: item.versions.png.original }))
 | 
						|
  }
 | 
						|
}
 | 
						|
module.exports = AudiobookCovers
 |