mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-11-03 19:07:00 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			107 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
class FeedMeta {
 | 
						|
  constructor(meta) {
 | 
						|
    this.title = null
 | 
						|
    this.description = null
 | 
						|
    this.author = null
 | 
						|
    this.imageUrl = null
 | 
						|
    this.feedUrl = null
 | 
						|
    this.link = null
 | 
						|
    this.explicit = null
 | 
						|
    this.type = null
 | 
						|
    this.language = null
 | 
						|
    this.preventIndexing = null
 | 
						|
    this.ownerName = null
 | 
						|
    this.ownerEmail = null
 | 
						|
 | 
						|
    if (meta) {
 | 
						|
      this.construct(meta)
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  construct(meta) {
 | 
						|
    this.title = meta.title
 | 
						|
    this.description = meta.description
 | 
						|
    this.author = meta.author
 | 
						|
    this.imageUrl = meta.imageUrl
 | 
						|
    this.feedUrl = meta.feedUrl
 | 
						|
    this.link = meta.link
 | 
						|
    this.explicit = meta.explicit
 | 
						|
    this.type = meta.type
 | 
						|
    this.language = meta.language
 | 
						|
    this.preventIndexing = meta.preventIndexing
 | 
						|
    this.ownerName = meta.ownerName
 | 
						|
    this.ownerEmail = meta.ownerEmail
 | 
						|
  }
 | 
						|
 | 
						|
  toJSON() {
 | 
						|
    return {
 | 
						|
      title: this.title,
 | 
						|
      description: this.description,
 | 
						|
      author: this.author,
 | 
						|
      imageUrl: this.imageUrl,
 | 
						|
      feedUrl: this.feedUrl,
 | 
						|
      link: this.link,
 | 
						|
      explicit: this.explicit,
 | 
						|
      type: this.type,
 | 
						|
      language: this.language,
 | 
						|
      preventIndexing: this.preventIndexing,
 | 
						|
      ownerName: this.ownerName,
 | 
						|
      ownerEmail: this.ownerEmail
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  toJSONMinified() {
 | 
						|
    return {
 | 
						|
      title: this.title,
 | 
						|
      description: this.description,
 | 
						|
      preventIndexing: this.preventIndexing,
 | 
						|
      ownerName: this.ownerName,
 | 
						|
      ownerEmail: this.ownerEmail
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  getRSSData() {
 | 
						|
    const blockTags = [
 | 
						|
      { 'itunes:block': 'yes' },
 | 
						|
      { 'googleplay:block': 'yes' }
 | 
						|
    ]
 | 
						|
    return {
 | 
						|
      title: this.title,
 | 
						|
      description: this.description || '',
 | 
						|
      generator: 'Audiobookshelf',
 | 
						|
      feed_url: this.feedUrl,
 | 
						|
      site_url: this.link,
 | 
						|
      image_url: this.imageUrl,
 | 
						|
      custom_namespaces: {
 | 
						|
        'itunes': 'http://www.itunes.com/dtds/podcast-1.0.dtd',
 | 
						|
        'psc': 'http://podlove.org/simple-chapters',
 | 
						|
        'podcast': 'https://podcastindex.org/namespace/1.0',
 | 
						|
        'googleplay': 'http://www.google.com/schemas/play-podcasts/1.0'
 | 
						|
      },
 | 
						|
      custom_elements: [
 | 
						|
        { 'language': this.language || 'en' },
 | 
						|
        { 'author': this.author || 'advplyr' },
 | 
						|
        { 'itunes:author': this.author || 'advplyr' },
 | 
						|
        { 'itunes:summary': this.description || '' },
 | 
						|
        { 'itunes:type': this.type },
 | 
						|
        {
 | 
						|
          'itunes:image': {
 | 
						|
            _attr: {
 | 
						|
              href: this.imageUrl
 | 
						|
            }
 | 
						|
          }
 | 
						|
        },
 | 
						|
        {
 | 
						|
          'itunes:owner': [
 | 
						|
            { 'itunes:name': this.ownerName || this.author || '' },
 | 
						|
            { 'itunes:email': this.ownerEmail || '' }
 | 
						|
          ]
 | 
						|
        },
 | 
						|
        { 'itunes:explicit': !!this.explicit },
 | 
						|
        ...(this.preventIndexing ? blockTags : [])
 | 
						|
      ]
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
module.exports = FeedMeta
 |