mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2024-12-20 19:06:06 +01: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
|