mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-30 18:12:25 -04: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 |