mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const AudioMetaTags = require('../objects/metadata/AudioMetaTags')
 | 
						|
 | 
						|
class MediaProbeData {
 | 
						|
  constructor(probeData) {
 | 
						|
    this.embeddedCoverArt = null
 | 
						|
    this.format = null
 | 
						|
    this.duration = null
 | 
						|
    this.size = null
 | 
						|
 | 
						|
    this.audioStream = null
 | 
						|
    this.videoStream = null
 | 
						|
 | 
						|
    this.bitRate = null
 | 
						|
    this.codec = null
 | 
						|
    this.timeBase = null
 | 
						|
    this.language = null
 | 
						|
    this.channelLayout = null
 | 
						|
    this.channels = null
 | 
						|
    this.sampleRate = null
 | 
						|
    this.chapters = []
 | 
						|
 | 
						|
    this.audioMetaTags = null
 | 
						|
 | 
						|
    this.trackNumber = null
 | 
						|
    this.trackTotal = null
 | 
						|
 | 
						|
    this.discNumber = null
 | 
						|
    this.discTotal = null
 | 
						|
 | 
						|
    if (probeData) {
 | 
						|
      this.construct(probeData)
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  construct(probeData) {
 | 
						|
    for (const key in probeData) {
 | 
						|
      if (key === 'audioMetaTags' && probeData[key]) {
 | 
						|
        this[key] = new AudioMetaTags(probeData[key])
 | 
						|
      } else if (this[key] !== undefined) {
 | 
						|
        this[key] = probeData[key]
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  setData(data) {
 | 
						|
    this.embeddedCoverArt = data.video_stream?.codec || null
 | 
						|
    this.format = data.format
 | 
						|
    this.duration = data.duration
 | 
						|
    this.size = data.size
 | 
						|
 | 
						|
    this.audioStream = data.audio_stream
 | 
						|
    this.videoStream = this.embeddedCoverArt ? null : data.video_stream || null
 | 
						|
 | 
						|
    this.bitRate = this.audioStream.bit_rate || data.bit_rate
 | 
						|
    this.codec = this.audioStream.codec
 | 
						|
    this.timeBase = this.audioStream.time_base
 | 
						|
    this.language = this.audioStream.language
 | 
						|
    this.channelLayout = this.audioStream.channel_layout
 | 
						|
    this.channels = this.audioStream.channels
 | 
						|
    this.sampleRate = this.audioStream.sample_rate
 | 
						|
    this.chapters = data.chapters || []
 | 
						|
 | 
						|
    this.audioMetaTags = new AudioMetaTags()
 | 
						|
    this.audioMetaTags.setData(data.tags)
 | 
						|
  }
 | 
						|
 | 
						|
  setDataFromTone(data) {
 | 
						|
    // TODO: Implement
 | 
						|
 | 
						|
    this.format = data.format
 | 
						|
    this.duration = data.duration
 | 
						|
    this.size = data.size
 | 
						|
    this.audioMetaTags = new AudioMetaTags()
 | 
						|
    this.audioMetaTags.setDataFromTone(data.tags)
 | 
						|
  }
 | 
						|
}
 | 
						|
module.exports = MediaProbeData |