mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-11-03 19:07:00 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			158 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
class AudioFile {
 | 
						|
  constructor(data) {
 | 
						|
    this.index = null
 | 
						|
    this.ino = null
 | 
						|
    this.filename = null
 | 
						|
    this.ext = null
 | 
						|
    this.path = null
 | 
						|
    this.fullPath = null
 | 
						|
    this.addedAt = null
 | 
						|
 | 
						|
    this.trackNumFromMeta = null
 | 
						|
    this.trackNumFromFilename = null
 | 
						|
 | 
						|
    this.format = null
 | 
						|
    this.duration = null
 | 
						|
    this.size = null
 | 
						|
    this.bitRate = null
 | 
						|
    this.language = null
 | 
						|
    this.codec = null
 | 
						|
    this.timeBase = null
 | 
						|
    this.channels = null
 | 
						|
    this.channelLayout = null
 | 
						|
    this.chapters = []
 | 
						|
 | 
						|
    this.tagAlbum = null
 | 
						|
    this.tagArtist = null
 | 
						|
    this.tagGenre = null
 | 
						|
    this.tagTitle = null
 | 
						|
    this.tagTrack = null
 | 
						|
 | 
						|
    this.manuallyVerified = false
 | 
						|
    this.invalid = false
 | 
						|
    this.exclude = false
 | 
						|
    this.error = null
 | 
						|
 | 
						|
    if (data) {
 | 
						|
      this.construct(data)
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  toJSON() {
 | 
						|
    return {
 | 
						|
      index: this.index,
 | 
						|
      ino: this.ino,
 | 
						|
      filename: this.filename,
 | 
						|
      ext: this.ext,
 | 
						|
      path: this.path,
 | 
						|
      fullPath: this.fullPath,
 | 
						|
      addedAt: this.addedAt,
 | 
						|
      trackNumFromMeta: this.trackNumFromMeta,
 | 
						|
      trackNumFromFilename: this.trackNumFromFilename,
 | 
						|
      manuallyVerified: !!this.manuallyVerified,
 | 
						|
      invalid: !!this.invalid,
 | 
						|
      exclude: !!this.exclude,
 | 
						|
      error: this.error || null,
 | 
						|
      format: this.format,
 | 
						|
      duration: this.duration,
 | 
						|
      size: this.size,
 | 
						|
      bitRate: this.bitRate,
 | 
						|
      language: this.language,
 | 
						|
      timeBase: this.timeBase,
 | 
						|
      channels: this.channels,
 | 
						|
      channelLayout: this.channelLayout,
 | 
						|
      chapters: this.chapters,
 | 
						|
      tagAlbum: this.tagAlbum,
 | 
						|
      tagArtist: this.tagArtist,
 | 
						|
      tagGenre: this.tagGenre,
 | 
						|
      tagTitle: this.tagTitle,
 | 
						|
      tagTrack: this.tagTrack
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  construct(data) {
 | 
						|
    this.index = data.index
 | 
						|
    this.ino = data.ino
 | 
						|
    this.filename = data.filename
 | 
						|
    this.ext = data.ext
 | 
						|
    this.path = data.path
 | 
						|
    this.fullPath = data.fullPath
 | 
						|
    this.addedAt = data.addedAt
 | 
						|
    this.manuallyVerified = !!data.manuallyVerified
 | 
						|
    this.invalid = !!data.invalid
 | 
						|
    this.exclude = !!data.exclude
 | 
						|
    this.error = data.error || null
 | 
						|
 | 
						|
    this.trackNumFromMeta = data.trackNumFromMeta || null
 | 
						|
    this.trackNumFromFilename = data.trackNumFromFilename || null
 | 
						|
 | 
						|
    this.format = data.format
 | 
						|
    this.duration = data.duration
 | 
						|
    this.size = data.size
 | 
						|
    this.bitRate = data.bitRate
 | 
						|
    this.language = data.language
 | 
						|
    this.codec = data.codec
 | 
						|
    this.timeBase = data.timeBase
 | 
						|
    this.channels = data.channels
 | 
						|
    this.channelLayout = data.channelLayout
 | 
						|
    this.chapters = data.chapters
 | 
						|
 | 
						|
    this.tagAlbum = data.tagAlbum
 | 
						|
    this.tagArtist = data.tagArtist
 | 
						|
    this.tagGenre = data.tagGenre
 | 
						|
    this.tagTitle = data.tagTitle
 | 
						|
    this.tagTrack = data.tagTrack
 | 
						|
  }
 | 
						|
 | 
						|
  setData(data) {
 | 
						|
    this.index = data.index || null
 | 
						|
    this.ino = data.ino || null
 | 
						|
    this.filename = data.filename
 | 
						|
    this.ext = data.ext
 | 
						|
    this.path = data.path
 | 
						|
    this.fullPath = data.fullPath
 | 
						|
    this.addedAt = Date.now()
 | 
						|
 | 
						|
    this.trackNumFromMeta = data.trackNumFromMeta || null
 | 
						|
    this.trackNumFromFilename = data.trackNumFromFilename || null
 | 
						|
 | 
						|
    this.manuallyVerified = !!data.manuallyVerified
 | 
						|
    this.invalid = !!data.invalid
 | 
						|
    this.exclude = !!data.exclude
 | 
						|
    this.error = data.error || null
 | 
						|
 | 
						|
    this.format = data.format
 | 
						|
    this.duration = data.duration
 | 
						|
    this.size = data.size
 | 
						|
    this.bitRate = data.bit_rate || null
 | 
						|
    this.language = data.language
 | 
						|
    this.codec = data.codec
 | 
						|
    this.timeBase = data.time_base
 | 
						|
    this.channels = data.channels
 | 
						|
    this.channelLayout = data.channel_layout
 | 
						|
    this.chapters = data.chapters || []
 | 
						|
 | 
						|
    this.tagAlbum = data.file_tag_album || null
 | 
						|
    this.tagArtist = data.file_tag_artist || null
 | 
						|
    this.tagGenre = data.file_tag_genre || null
 | 
						|
    this.tagTitle = data.file_tag_title || null
 | 
						|
    this.tagTrack = data.file_tag_track || null
 | 
						|
  }
 | 
						|
 | 
						|
  clone() {
 | 
						|
    return new AudioFile(this.toJSON())
 | 
						|
  }
 | 
						|
 | 
						|
  syncFile(newFile) {
 | 
						|
    var hasUpdates = false
 | 
						|
    var keysToSync = ['path', 'fullPath', 'ext', 'filename']
 | 
						|
    keysToSync.forEach((key) => {
 | 
						|
      if (newFile[key] !== undefined && newFile[key] !== this[key]) {
 | 
						|
        hasUpdates = true
 | 
						|
        this[key] = newFile[key]
 | 
						|
      }
 | 
						|
    })
 | 
						|
    return hasUpdates
 | 
						|
  }
 | 
						|
}
 | 
						|
module.exports = AudioFile |