mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-01-03 00:06:46 +01:00
Add rss details configuration
This commit is contained in:
parent
d7b287bfed
commit
0d3e6b1d0a
@ -14,6 +14,21 @@
|
|||||||
|
|
||||||
<span class="material-icons absolute right-2 bottom-2 p-0.5 text-base transition-transform duration-100 text-gray-300 hover:text-white transform hover:scale-125 cursor-pointer" @click="copyToClipboard(currentFeed.feedUrl)">content_copy</span>
|
<span class="material-icons absolute right-2 bottom-2 p-0.5 text-base transition-transform duration-100 text-gray-300 hover:text-white transform hover:scale-125 cursor-pointer" @click="copyToClipboard(currentFeed.feedUrl)">content_copy</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div v-if="currentFeed.meta" class="mt-5">
|
||||||
|
<div class="flex py-0.5">
|
||||||
|
<div class="w-48"><span class="text-white text-opacity-60 uppercase text-sm">{{ $strings.LabelRssFeedPreventIndexing }}</span></div>
|
||||||
|
<div> {{ currentFeed.meta.preventIndexing ? 'Yes' : 'No' }} </div>
|
||||||
|
</div>
|
||||||
|
<div v-if="currentFeed.meta.ownerName" class="flex py-0.5">
|
||||||
|
<div class="w-48"><span class="text-white text-opacity-60 uppercase text-sm">{{ $strings.LabelRssFeedCustomOwnerName }}</span></div>
|
||||||
|
<div> {{ currentFeed.meta.ownerName }} </div>
|
||||||
|
</div>
|
||||||
|
<div v-if="currentFeed.meta.ownerEmail" class="flex py-0.5">
|
||||||
|
<div class="w-48"><span class="text-white text-opacity-60 uppercase text-sm">{{ $strings.LabelRssFeedCustomOwnerEmail }}</span></div>
|
||||||
|
<div> {{ currentFeed.meta.ownerEmail }} </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="w-full">
|
<div v-else class="w-full">
|
||||||
<p class="text-lg font-semibold mb-4">{{ $strings.HeaderOpenRSSFeed }}</p>
|
<p class="text-lg font-semibold mb-4">{{ $strings.HeaderOpenRSSFeed }}</p>
|
||||||
@ -22,6 +37,7 @@
|
|||||||
<ui-text-input-with-label v-model="newFeedSlug" :label="$strings.LabelRSSFeedSlug" />
|
<ui-text-input-with-label v-model="newFeedSlug" :label="$strings.LabelRSSFeedSlug" />
|
||||||
<p class="text-xs text-gray-400 py-0.5 px-1">{{ $getString('MessageFeedURLWillBe', [demoFeedUrl]) }}</p>
|
<p class="text-xs text-gray-400 py-0.5 px-1">{{ $getString('MessageFeedURLWillBe', [demoFeedUrl]) }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
<widgets-rss-feed-metadata-builder v-model="metadataDetails" />
|
||||||
|
|
||||||
<p v-if="isHttp" class="w-full pt-2 text-warning text-xs">{{ $strings.NoteRSSFeedPodcastAppsHttps }}</p>
|
<p v-if="isHttp" class="w-full pt-2 text-warning text-xs">{{ $strings.NoteRSSFeedPodcastAppsHttps }}</p>
|
||||||
<p v-if="hasEpisodesWithoutPubDate" class="w-full pt-2 text-warning text-xs">{{ $strings.NoteRSSFeedPodcastAppsPubDate }}</p>
|
<p v-if="hasEpisodesWithoutPubDate" class="w-full pt-2 text-warning text-xs">{{ $strings.NoteRSSFeedPodcastAppsPubDate }}</p>
|
||||||
@ -41,7 +57,12 @@ export default {
|
|||||||
return {
|
return {
|
||||||
processing: false,
|
processing: false,
|
||||||
newFeedSlug: null,
|
newFeedSlug: null,
|
||||||
currentFeed: null
|
currentFeed: null,
|
||||||
|
metadataDetails: {
|
||||||
|
preventIndexing: true,
|
||||||
|
ownerName: '',
|
||||||
|
ownerEmail: ''
|
||||||
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@ -107,7 +128,8 @@ export default {
|
|||||||
|
|
||||||
const payload = {
|
const payload = {
|
||||||
serverAddress: window.origin,
|
serverAddress: window.origin,
|
||||||
slug: this.newFeedSlug
|
slug: this.newFeedSlug,
|
||||||
|
metadataDetails: this.metadataDetails
|
||||||
}
|
}
|
||||||
if (this.$isDev) payload.serverAddress = `http://localhost:3333${this.$config.routerBasePath}`
|
if (this.$isDev) payload.serverAddress = `http://localhost:3333${this.$config.routerBasePath}`
|
||||||
|
|
||||||
|
92
client/components/widgets/RssFeedMetadataBuilder.vue
Normal file
92
client/components/widgets/RssFeedMetadataBuilder.vue
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<template>
|
||||||
|
<div class="w-full py-2">
|
||||||
|
<div class="flex -mb-px">
|
||||||
|
<div class="w-1/2 h-6 rounded-tl-md relative border border-black-200 flex items-center justify-center cursor-pointer" :class="!showAdvancedView ? 'text-white bg-bg hover:bg-opacity-60 border-b-bg' : 'text-gray-400 hover:text-gray-300 bg-primary bg-opacity-70 hover:bg-opacity-60'" @click="showAdvancedView = false">
|
||||||
|
<p class="text-sm">{{ $strings.HeaderRSSFeedGeneral }}</p>
|
||||||
|
</div>
|
||||||
|
<div class="w-1/2 h-6 rounded-tr-md relative border border-black-200 flex items-center justify-center -ml-px cursor-pointer" :class="showAdvancedView ? 'text-white bg-bg hover:bg-opacity-60 border-b-bg' : 'text-gray-400 hover:text-gray-300 bg-primary bg-opacity-70 hover:bg-opacity-60'" @click="showAdvancedView = true">
|
||||||
|
<p class="text-sm">{{ $strings.HeaderAdvanced }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="px-2 py-4 md:p-4 border border-black-200 rounded-b-md mr-px" style="min-height: 200px">
|
||||||
|
<template v-if="!showAdvancedView">
|
||||||
|
<div class="flex-grow pt-2 mb-2">
|
||||||
|
<ui-checkbox v-model="preventIndexing" :label="$strings.LabelPreventIndexing" checkbox-bg="primary" border-color="gray-600" label-class="pl-2" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<div class="flex-grow pt-2 mb-2">
|
||||||
|
<ui-checkbox v-model="preventIndexing" :label="$strings.LabelPreventIndexing" checkbox-bg="primary" border-color="gray-600" label-class="pl-2" />
|
||||||
|
</div>
|
||||||
|
<div class="w-full relative mb-1">
|
||||||
|
<ui-text-input-with-label v-model="ownerName" :label="$strings.LabelRssFeedCustomOwnerName" />
|
||||||
|
</div>
|
||||||
|
<div class="w-full relative mb-1">
|
||||||
|
<ui-text-input-with-label v-model="ownerEmail" :label="$strings.LabelRssFeedCustomOwnerEmail" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {
|
||||||
|
preventIndexing: true,
|
||||||
|
ownerName: '',
|
||||||
|
ownerEmail: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
showAdvancedView: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {},
|
||||||
|
computed: {
|
||||||
|
preventIndexing: {
|
||||||
|
get() {
|
||||||
|
return this.value.preventIndexing
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.$emit('input', {
|
||||||
|
...this.value,
|
||||||
|
preventIndexing: value
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ownerName: {
|
||||||
|
get() {
|
||||||
|
return this.value.ownerName
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.$emit('input', {
|
||||||
|
...this.value,
|
||||||
|
ownerName: value
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ownerEmail: {
|
||||||
|
get() {
|
||||||
|
return this.value.ownerEmail
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.$emit('input', {
|
||||||
|
...this.value,
|
||||||
|
ownerEmail: value
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -127,6 +127,7 @@
|
|||||||
"HeaderRemoveEpisode": "Episode löschen",
|
"HeaderRemoveEpisode": "Episode löschen",
|
||||||
"HeaderRemoveEpisodes": "Lösche {0} Episoden",
|
"HeaderRemoveEpisodes": "Lösche {0} Episoden",
|
||||||
"HeaderRSSFeedIsOpen": "RSS-Feed ist geöffnet",
|
"HeaderRSSFeedIsOpen": "RSS-Feed ist geöffnet",
|
||||||
|
"HeaderRSSFeedGeneral": "RSS Detailss",
|
||||||
"HeaderSavedMediaProgress": "Gespeicherte Hörfortschritte",
|
"HeaderSavedMediaProgress": "Gespeicherte Hörfortschritte",
|
||||||
"HeaderSchedule": "Zeitplan",
|
"HeaderSchedule": "Zeitplan",
|
||||||
"HeaderScheduleLibraryScans": "Automatische Bibliotheksscans",
|
"HeaderScheduleLibraryScans": "Automatische Bibliotheksscans",
|
||||||
@ -304,6 +305,7 @@
|
|||||||
"LabelPodcasts": "Podcasts",
|
"LabelPodcasts": "Podcasts",
|
||||||
"LabelPodcastType": "Podcast Type",
|
"LabelPodcastType": "Podcast Type",
|
||||||
"LabelPrefixesToIgnore": "Zu ignorierende(s) Vorwort(e) (Groß- und Kleinschreibung wird nicht berücksichtigt)",
|
"LabelPrefixesToIgnore": "Zu ignorierende(s) Vorwort(e) (Groß- und Kleinschreibung wird nicht berücksichtigt)",
|
||||||
|
"LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
|
||||||
"LabelProgress": "Fortschritt",
|
"LabelProgress": "Fortschritt",
|
||||||
"LabelProvider": "Anbieter",
|
"LabelProvider": "Anbieter",
|
||||||
"LabelPubDate": "Veröffentlichungsdatum",
|
"LabelPubDate": "Veröffentlichungsdatum",
|
||||||
@ -318,6 +320,9 @@
|
|||||||
"LabelRSSFeedOpen": "RSS Feed Offen",
|
"LabelRSSFeedOpen": "RSS Feed Offen",
|
||||||
"LabelRSSFeedSlug": "RSS Feed Schlagwort",
|
"LabelRSSFeedSlug": "RSS Feed Schlagwort",
|
||||||
"LabelRSSFeedURL": "RSS Feed URL",
|
"LabelRSSFeedURL": "RSS Feed URL",
|
||||||
|
"LabelRssFeedCustomOwnerName": "Custom owner Name",
|
||||||
|
"LabelRssFeedCustomOwnerEmail": "Custom owner Email",
|
||||||
|
"LabelRssFeedPreventIndexing": "Prevent Indexing",
|
||||||
"LabelSearchTerm": "Begriff suchen",
|
"LabelSearchTerm": "Begriff suchen",
|
||||||
"LabelSearchTitle": "Titel",
|
"LabelSearchTitle": "Titel",
|
||||||
"LabelSearchTitleOrASIN": "Titel oder ASIN",
|
"LabelSearchTitleOrASIN": "Titel oder ASIN",
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
"HeaderRemoveEpisode": "Remove Episode",
|
"HeaderRemoveEpisode": "Remove Episode",
|
||||||
"HeaderRemoveEpisodes": "Remove {0} Episodes",
|
"HeaderRemoveEpisodes": "Remove {0} Episodes",
|
||||||
"HeaderRSSFeedIsOpen": "RSS Feed is Open",
|
"HeaderRSSFeedIsOpen": "RSS Feed is Open",
|
||||||
|
"HeaderRSSFeedGeneral": "RSS Detailss",
|
||||||
"HeaderSavedMediaProgress": "Saved Media Progress",
|
"HeaderSavedMediaProgress": "Saved Media Progress",
|
||||||
"HeaderSchedule": "Schedule",
|
"HeaderSchedule": "Schedule",
|
||||||
"HeaderScheduleLibraryScans": "Schedule Automatic Library Scans",
|
"HeaderScheduleLibraryScans": "Schedule Automatic Library Scans",
|
||||||
@ -304,6 +305,7 @@
|
|||||||
"LabelPodcasts": "Podcasts",
|
"LabelPodcasts": "Podcasts",
|
||||||
"LabelPodcastType": "Podcast Type",
|
"LabelPodcastType": "Podcast Type",
|
||||||
"LabelPrefixesToIgnore": "Prefixes to Ignore (case insensitive)",
|
"LabelPrefixesToIgnore": "Prefixes to Ignore (case insensitive)",
|
||||||
|
"LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
|
||||||
"LabelProgress": "Progress",
|
"LabelProgress": "Progress",
|
||||||
"LabelProvider": "Provider",
|
"LabelProvider": "Provider",
|
||||||
"LabelPubDate": "Pub Date",
|
"LabelPubDate": "Pub Date",
|
||||||
@ -318,6 +320,9 @@
|
|||||||
"LabelRSSFeedOpen": "RSS Feed Open",
|
"LabelRSSFeedOpen": "RSS Feed Open",
|
||||||
"LabelRSSFeedSlug": "RSS Feed Slug",
|
"LabelRSSFeedSlug": "RSS Feed Slug",
|
||||||
"LabelRSSFeedURL": "RSS Feed URL",
|
"LabelRSSFeedURL": "RSS Feed URL",
|
||||||
|
"LabelRssFeedCustomOwnerName": "Custom owner Name",
|
||||||
|
"LabelRssFeedCustomOwnerEmail": "Custom owner Email",
|
||||||
|
"LabelRssFeedPreventIndexing": "Prevent Indexing",
|
||||||
"LabelSearchTerm": "Search Term",
|
"LabelSearchTerm": "Search Term",
|
||||||
"LabelSearchTitle": "Search Title",
|
"LabelSearchTitle": "Search Title",
|
||||||
"LabelSearchTitleOrASIN": "Search Title or ASIN",
|
"LabelSearchTitleOrASIN": "Search Title or ASIN",
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
"HeaderRemoveEpisode": "Remove Episode",
|
"HeaderRemoveEpisode": "Remove Episode",
|
||||||
"HeaderRemoveEpisodes": "Remove {0} Episodes",
|
"HeaderRemoveEpisodes": "Remove {0} Episodes",
|
||||||
"HeaderRSSFeedIsOpen": "RSS Feed is Open",
|
"HeaderRSSFeedIsOpen": "RSS Feed is Open",
|
||||||
|
"HeaderRSSFeedGeneral": "RSS Details",
|
||||||
"HeaderSavedMediaProgress": "Saved Media Progress",
|
"HeaderSavedMediaProgress": "Saved Media Progress",
|
||||||
"HeaderSchedule": "Schedule",
|
"HeaderSchedule": "Schedule",
|
||||||
"HeaderScheduleLibraryScans": "Schedule Automatic Library Scans",
|
"HeaderScheduleLibraryScans": "Schedule Automatic Library Scans",
|
||||||
@ -304,6 +305,7 @@
|
|||||||
"LabelPodcasts": "Podcasts",
|
"LabelPodcasts": "Podcasts",
|
||||||
"LabelPodcastType": "Podcast Type",
|
"LabelPodcastType": "Podcast Type",
|
||||||
"LabelPrefixesToIgnore": "Prefixes to Ignore (case insensitive)",
|
"LabelPrefixesToIgnore": "Prefixes to Ignore (case insensitive)",
|
||||||
|
"LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
|
||||||
"LabelProgress": "Progress",
|
"LabelProgress": "Progress",
|
||||||
"LabelProvider": "Provider",
|
"LabelProvider": "Provider",
|
||||||
"LabelPubDate": "Pub Date",
|
"LabelPubDate": "Pub Date",
|
||||||
@ -318,6 +320,9 @@
|
|||||||
"LabelRSSFeedOpen": "RSS Feed Open",
|
"LabelRSSFeedOpen": "RSS Feed Open",
|
||||||
"LabelRSSFeedSlug": "RSS Feed Slug",
|
"LabelRSSFeedSlug": "RSS Feed Slug",
|
||||||
"LabelRSSFeedURL": "RSS Feed URL",
|
"LabelRSSFeedURL": "RSS Feed URL",
|
||||||
|
"LabelRssFeedCustomOwnerName": "Custom owner Name",
|
||||||
|
"LabelRssFeedCustomOwnerEmail": "Custom owner Email",
|
||||||
|
"LabelRssFeedPreventIndexing": "Prevent Indexing",
|
||||||
"LabelSearchTerm": "Search Term",
|
"LabelSearchTerm": "Search Term",
|
||||||
"LabelSearchTitle": "Search Title",
|
"LabelSearchTitle": "Search Title",
|
||||||
"LabelSearchTitleOrASIN": "Search Title or ASIN",
|
"LabelSearchTitleOrASIN": "Search Title or ASIN",
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
"HeaderRemoveEpisode": "Supprimer l'épisode",
|
"HeaderRemoveEpisode": "Supprimer l'épisode",
|
||||||
"HeaderRemoveEpisodes": "Suppression de {0} épisodes",
|
"HeaderRemoveEpisodes": "Suppression de {0} épisodes",
|
||||||
"HeaderRSSFeedIsOpen": "Le Flux RSS est actif",
|
"HeaderRSSFeedIsOpen": "Le Flux RSS est actif",
|
||||||
|
"HeaderRSSFeedGeneral": "RSS Detailss",
|
||||||
"HeaderSavedMediaProgress": "Progression de la sauvegarde des médias",
|
"HeaderSavedMediaProgress": "Progression de la sauvegarde des médias",
|
||||||
"HeaderSchedule": "Programmation",
|
"HeaderSchedule": "Programmation",
|
||||||
"HeaderScheduleLibraryScans": "Analyse automatique de la bibliothèque",
|
"HeaderScheduleLibraryScans": "Analyse automatique de la bibliothèque",
|
||||||
@ -304,6 +305,7 @@
|
|||||||
"LabelPodcasts": "Podcasts",
|
"LabelPodcasts": "Podcasts",
|
||||||
"LabelPodcastType": "Podcast Type",
|
"LabelPodcastType": "Podcast Type",
|
||||||
"LabelPrefixesToIgnore": "Préfixes à Ignorer (Insensible à la Casse)",
|
"LabelPrefixesToIgnore": "Préfixes à Ignorer (Insensible à la Casse)",
|
||||||
|
"LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
|
||||||
"LabelProgress": "Progression",
|
"LabelProgress": "Progression",
|
||||||
"LabelProvider": "Fournisseur",
|
"LabelProvider": "Fournisseur",
|
||||||
"LabelPubDate": "Date de publication",
|
"LabelPubDate": "Date de publication",
|
||||||
@ -318,6 +320,9 @@
|
|||||||
"LabelRSSFeedOpen": "Flux RSS ouvert",
|
"LabelRSSFeedOpen": "Flux RSS ouvert",
|
||||||
"LabelRSSFeedSlug": "Identificateur d'adresse du Flux RSS ",
|
"LabelRSSFeedSlug": "Identificateur d'adresse du Flux RSS ",
|
||||||
"LabelRSSFeedURL": "Adresse du flux RSS",
|
"LabelRSSFeedURL": "Adresse du flux RSS",
|
||||||
|
"LabelRssFeedCustomOwnerName": "Custom owner Name",
|
||||||
|
"LabelRssFeedCustomOwnerEmail": "Custom owner Email",
|
||||||
|
"LabelRssFeedPreventIndexing": "Prevent Indexing",
|
||||||
"LabelSearchTerm": "Terme de recherche",
|
"LabelSearchTerm": "Terme de recherche",
|
||||||
"LabelSearchTitle": "Titre de recherche",
|
"LabelSearchTitle": "Titre de recherche",
|
||||||
"LabelSearchTitleOrASIN": "Recherche du titre ou ASIN",
|
"LabelSearchTitleOrASIN": "Recherche du titre ou ASIN",
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
"HeaderRemoveEpisode": "Ukloni epizodu",
|
"HeaderRemoveEpisode": "Ukloni epizodu",
|
||||||
"HeaderRemoveEpisodes": "Ukloni {0} epizoda/-e",
|
"HeaderRemoveEpisodes": "Ukloni {0} epizoda/-e",
|
||||||
"HeaderRSSFeedIsOpen": "RSS Feed je otvoren",
|
"HeaderRSSFeedIsOpen": "RSS Feed je otvoren",
|
||||||
|
"HeaderRSSFeedGeneral": "RSS Detailss",
|
||||||
"HeaderSavedMediaProgress": "Spremljen Media Progress",
|
"HeaderSavedMediaProgress": "Spremljen Media Progress",
|
||||||
"HeaderSchedule": "Schedule",
|
"HeaderSchedule": "Schedule",
|
||||||
"HeaderScheduleLibraryScans": "Zakaži automatsko skeniranje biblioteke",
|
"HeaderScheduleLibraryScans": "Zakaži automatsko skeniranje biblioteke",
|
||||||
@ -304,6 +305,7 @@
|
|||||||
"LabelPodcasts": "Podcasts",
|
"LabelPodcasts": "Podcasts",
|
||||||
"LabelPodcastType": "Podcast Type",
|
"LabelPodcastType": "Podcast Type",
|
||||||
"LabelPrefixesToIgnore": "Prefiksi za ignorirati (mala i velika slova nisu bitna)",
|
"LabelPrefixesToIgnore": "Prefiksi za ignorirati (mala i velika slova nisu bitna)",
|
||||||
|
"LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
|
||||||
"LabelProgress": "Napredak",
|
"LabelProgress": "Napredak",
|
||||||
"LabelProvider": "Dobavljač",
|
"LabelProvider": "Dobavljač",
|
||||||
"LabelPubDate": "Datam izdavanja",
|
"LabelPubDate": "Datam izdavanja",
|
||||||
@ -318,6 +320,9 @@
|
|||||||
"LabelRSSFeedOpen": "RSS Feed Open",
|
"LabelRSSFeedOpen": "RSS Feed Open",
|
||||||
"LabelRSSFeedSlug": "RSS Feed Slug",
|
"LabelRSSFeedSlug": "RSS Feed Slug",
|
||||||
"LabelRSSFeedURL": "RSS Feed URL",
|
"LabelRSSFeedURL": "RSS Feed URL",
|
||||||
|
"LabelRssFeedCustomOwnerName": "Custom owner Name",
|
||||||
|
"LabelRssFeedCustomOwnerEmail": "Custom owner Email",
|
||||||
|
"LabelRssFeedPreventIndexing": "Prevent Indexing",
|
||||||
"LabelSearchTerm": "Traži pojam",
|
"LabelSearchTerm": "Traži pojam",
|
||||||
"LabelSearchTitle": "Traži naslov",
|
"LabelSearchTitle": "Traži naslov",
|
||||||
"LabelSearchTitleOrASIN": "Traži naslov ili ASIN",
|
"LabelSearchTitleOrASIN": "Traži naslov ili ASIN",
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
"HeaderRemoveEpisode": "Rimuovi Episodi",
|
"HeaderRemoveEpisode": "Rimuovi Episodi",
|
||||||
"HeaderRemoveEpisodes": "Rimuovi {0} Episodi",
|
"HeaderRemoveEpisodes": "Rimuovi {0} Episodi",
|
||||||
"HeaderRSSFeedIsOpen": "RSS Feed è aperto",
|
"HeaderRSSFeedIsOpen": "RSS Feed è aperto",
|
||||||
|
"HeaderRSSFeedGeneral": "RSS Detailss",
|
||||||
"HeaderSavedMediaProgress": "Progressi salvati",
|
"HeaderSavedMediaProgress": "Progressi salvati",
|
||||||
"HeaderSchedule": "Schedula",
|
"HeaderSchedule": "Schedula",
|
||||||
"HeaderScheduleLibraryScans": "Schedula la scansione della libreria",
|
"HeaderScheduleLibraryScans": "Schedula la scansione della libreria",
|
||||||
@ -304,6 +305,7 @@
|
|||||||
"LabelPodcasts": "Podcasts",
|
"LabelPodcasts": "Podcasts",
|
||||||
"LabelPodcastType": "Podcast Type",
|
"LabelPodcastType": "Podcast Type",
|
||||||
"LabelPrefixesToIgnore": "Suffissi da ignorare (specificando maiuscole e minuscole)",
|
"LabelPrefixesToIgnore": "Suffissi da ignorare (specificando maiuscole e minuscole)",
|
||||||
|
"LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
|
||||||
"LabelProgress": "Cominciati",
|
"LabelProgress": "Cominciati",
|
||||||
"LabelProvider": "Provider",
|
"LabelProvider": "Provider",
|
||||||
"LabelPubDate": "Data Pubblicazione",
|
"LabelPubDate": "Data Pubblicazione",
|
||||||
@ -318,6 +320,9 @@
|
|||||||
"LabelRSSFeedOpen": "RSS Feed Aperto",
|
"LabelRSSFeedOpen": "RSS Feed Aperto",
|
||||||
"LabelRSSFeedSlug": "RSS Feed Slug",
|
"LabelRSSFeedSlug": "RSS Feed Slug",
|
||||||
"LabelRSSFeedURL": "RSS Feed URL",
|
"LabelRSSFeedURL": "RSS Feed URL",
|
||||||
|
"LabelRssFeedCustomOwnerName": "Custom owner Name",
|
||||||
|
"LabelRssFeedCustomOwnerEmail": "Custom owner Email",
|
||||||
|
"LabelRssFeedPreventIndexing": "Prevent Indexing",
|
||||||
"LabelSearchTerm": "Ricerca",
|
"LabelSearchTerm": "Ricerca",
|
||||||
"LabelSearchTitle": "Cerca Titolo",
|
"LabelSearchTitle": "Cerca Titolo",
|
||||||
"LabelSearchTitleOrASIN": "Cerca titolo o ASIN",
|
"LabelSearchTitleOrASIN": "Cerca titolo o ASIN",
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
"HeaderRemoveEpisode": "Usuń odcinek",
|
"HeaderRemoveEpisode": "Usuń odcinek",
|
||||||
"HeaderRemoveEpisodes": "Usuń {0} odcinków",
|
"HeaderRemoveEpisodes": "Usuń {0} odcinków",
|
||||||
"HeaderRSSFeedIsOpen": "Kanał RSS jest otwarty",
|
"HeaderRSSFeedIsOpen": "Kanał RSS jest otwarty",
|
||||||
|
"HeaderRSSFeedGeneral": "RSS Detailss",
|
||||||
"HeaderSavedMediaProgress": "Zapisany postęp",
|
"HeaderSavedMediaProgress": "Zapisany postęp",
|
||||||
"HeaderSchedule": "Harmonogram",
|
"HeaderSchedule": "Harmonogram",
|
||||||
"HeaderScheduleLibraryScans": "Zaplanuj automatyczne skanowanie biblioteki",
|
"HeaderScheduleLibraryScans": "Zaplanuj automatyczne skanowanie biblioteki",
|
||||||
@ -304,6 +305,7 @@
|
|||||||
"LabelPodcasts": "Podcasty",
|
"LabelPodcasts": "Podcasty",
|
||||||
"LabelPodcastType": "Podcast Type",
|
"LabelPodcastType": "Podcast Type",
|
||||||
"LabelPrefixesToIgnore": "Ignorowane prefiksy (wielkość liter nie ma znaczenia)",
|
"LabelPrefixesToIgnore": "Ignorowane prefiksy (wielkość liter nie ma znaczenia)",
|
||||||
|
"LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
|
||||||
"LabelProgress": "Postęp",
|
"LabelProgress": "Postęp",
|
||||||
"LabelProvider": "Dostawca",
|
"LabelProvider": "Dostawca",
|
||||||
"LabelPubDate": "Data publikacji",
|
"LabelPubDate": "Data publikacji",
|
||||||
@ -318,6 +320,9 @@
|
|||||||
"LabelRSSFeedOpen": "RSS Feed otwarty",
|
"LabelRSSFeedOpen": "RSS Feed otwarty",
|
||||||
"LabelRSSFeedSlug": "RSS Feed Slug",
|
"LabelRSSFeedSlug": "RSS Feed Slug",
|
||||||
"LabelRSSFeedURL": "URL kanały RSS",
|
"LabelRSSFeedURL": "URL kanały RSS",
|
||||||
|
"LabelRssFeedCustomOwnerName": "Custom owner Name",
|
||||||
|
"LabelRssFeedCustomOwnerEmail": "Custom owner Email",
|
||||||
|
"LabelRssFeedPreventIndexing": "Prevent Indexing",
|
||||||
"LabelSearchTerm": "Wyszukiwanie frazy",
|
"LabelSearchTerm": "Wyszukiwanie frazy",
|
||||||
"LabelSearchTitle": "Wyszukaj tytuł",
|
"LabelSearchTitle": "Wyszukaj tytuł",
|
||||||
"LabelSearchTitleOrASIN": "Szukaj tytuł lub ASIN",
|
"LabelSearchTitleOrASIN": "Szukaj tytuł lub ASIN",
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
"HeaderRemoveEpisode": "Удалить Эпизод",
|
"HeaderRemoveEpisode": "Удалить Эпизод",
|
||||||
"HeaderRemoveEpisodes": "Удалить {0} Эпизодов",
|
"HeaderRemoveEpisodes": "Удалить {0} Эпизодов",
|
||||||
"HeaderRSSFeedIsOpen": "RSS-канал Открыт",
|
"HeaderRSSFeedIsOpen": "RSS-канал Открыт",
|
||||||
|
"HeaderRSSFeedGeneral": "RSS Detailss",
|
||||||
"HeaderSavedMediaProgress": "Прогресс Медиа Сохранен",
|
"HeaderSavedMediaProgress": "Прогресс Медиа Сохранен",
|
||||||
"HeaderSchedule": "Планировщик",
|
"HeaderSchedule": "Планировщик",
|
||||||
"HeaderScheduleLibraryScans": "Планировщик Автоматического Сканирования Библиотеки",
|
"HeaderScheduleLibraryScans": "Планировщик Автоматического Сканирования Библиотеки",
|
||||||
@ -304,6 +305,7 @@
|
|||||||
"LabelPodcasts": "Подкасты",
|
"LabelPodcasts": "Подкасты",
|
||||||
"LabelPodcastType": "Podcast Type",
|
"LabelPodcastType": "Podcast Type",
|
||||||
"LabelPrefixesToIgnore": "Игнорируемые Префиксы (без учета регистра)",
|
"LabelPrefixesToIgnore": "Игнорируемые Префиксы (без учета регистра)",
|
||||||
|
"LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
|
||||||
"LabelProgress": "Прогресс",
|
"LabelProgress": "Прогресс",
|
||||||
"LabelProvider": "Провайдер",
|
"LabelProvider": "Провайдер",
|
||||||
"LabelPubDate": "Дата Публикации",
|
"LabelPubDate": "Дата Публикации",
|
||||||
@ -318,6 +320,9 @@
|
|||||||
"LabelRSSFeedOpen": "Открыть RSS-канал",
|
"LabelRSSFeedOpen": "Открыть RSS-канал",
|
||||||
"LabelRSSFeedSlug": "Встроить RSS-канал",
|
"LabelRSSFeedSlug": "Встроить RSS-канал",
|
||||||
"LabelRSSFeedURL": "URL RSS-канала",
|
"LabelRSSFeedURL": "URL RSS-канала",
|
||||||
|
"LabelRssFeedCustomOwnerName": "Custom owner Name",
|
||||||
|
"LabelRssFeedCustomOwnerEmail": "Custom owner Email",
|
||||||
|
"LabelRssFeedPreventIndexing": "Prevent Indexing",
|
||||||
"LabelSearchTerm": "Поисковый Запрос",
|
"LabelSearchTerm": "Поисковый Запрос",
|
||||||
"LabelSearchTitle": "Поиск по Названию",
|
"LabelSearchTitle": "Поиск по Названию",
|
||||||
"LabelSearchTitleOrASIN": "Поиск по Названию или ASIN",
|
"LabelSearchTitleOrASIN": "Поиск по Названию или ASIN",
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
"HeaderRemoveEpisode": "移除剧集",
|
"HeaderRemoveEpisode": "移除剧集",
|
||||||
"HeaderRemoveEpisodes": "移除 {0} 剧集",
|
"HeaderRemoveEpisodes": "移除 {0} 剧集",
|
||||||
"HeaderRSSFeedIsOpen": "RSS 源已打开",
|
"HeaderRSSFeedIsOpen": "RSS 源已打开",
|
||||||
|
"HeaderRSSFeedGeneral": "RSS Detailss",
|
||||||
"HeaderSavedMediaProgress": "保存媒体进度",
|
"HeaderSavedMediaProgress": "保存媒体进度",
|
||||||
"HeaderSchedule": "计划任务",
|
"HeaderSchedule": "计划任务",
|
||||||
"HeaderScheduleLibraryScans": "自动扫描媒体库",
|
"HeaderScheduleLibraryScans": "自动扫描媒体库",
|
||||||
@ -304,6 +305,7 @@
|
|||||||
"LabelPodcasts": "播客",
|
"LabelPodcasts": "播客",
|
||||||
"LabelPodcastType": "Podcast Type",
|
"LabelPodcastType": "Podcast Type",
|
||||||
"LabelPrefixesToIgnore": "忽略的前缀 (不区分大小写)",
|
"LabelPrefixesToIgnore": "忽略的前缀 (不区分大小写)",
|
||||||
|
"LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
|
||||||
"LabelProgress": "进度",
|
"LabelProgress": "进度",
|
||||||
"LabelProvider": "供应商",
|
"LabelProvider": "供应商",
|
||||||
"LabelPubDate": "出版日期",
|
"LabelPubDate": "出版日期",
|
||||||
@ -318,6 +320,9 @@
|
|||||||
"LabelRSSFeedOpen": "打开 RSS 源",
|
"LabelRSSFeedOpen": "打开 RSS 源",
|
||||||
"LabelRSSFeedSlug": "RSS 源段",
|
"LabelRSSFeedSlug": "RSS 源段",
|
||||||
"LabelRSSFeedURL": "RSS 源 URL",
|
"LabelRSSFeedURL": "RSS 源 URL",
|
||||||
|
"LabelRssFeedCustomOwnerName": "Custom owner Name",
|
||||||
|
"LabelRssFeedCustomOwnerEmail": "Custom owner Email",
|
||||||
|
"LabelRssFeedPreventIndexing": "Prevent Indexing",
|
||||||
"LabelSearchTerm": "搜索项",
|
"LabelSearchTerm": "搜索项",
|
||||||
"LabelSearchTitle": "搜索标题",
|
"LabelSearchTitle": "搜索标题",
|
||||||
"LabelSearchTitleOrASIN": "搜索标题或 ASIN",
|
"LabelSearchTitleOrASIN": "搜索标题或 ASIN",
|
||||||
|
@ -18,7 +18,7 @@ class RSSFeedController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check request body options exist
|
// Check request body options exist
|
||||||
if (!options.serverAddress || !options.slug) {
|
if (!options.serverAddress || !options.slug || options.metadataDetails == null) {
|
||||||
Logger.error(`[RSSFeedController] Invalid request body to open RSS feed`)
|
Logger.error(`[RSSFeedController] Invalid request body to open RSS feed`)
|
||||||
return res.status(400).send('Invalid request body')
|
return res.status(400).send('Invalid request body')
|
||||||
}
|
}
|
||||||
@ -49,7 +49,7 @@ class RSSFeedController {
|
|||||||
if (!collection) return res.sendStatus(404)
|
if (!collection) return res.sendStatus(404)
|
||||||
|
|
||||||
// Check request body options exist
|
// Check request body options exist
|
||||||
if (!options.serverAddress || !options.slug) {
|
if (!options.serverAddress || !options.slug || options.metadataDetails == null) {
|
||||||
Logger.error(`[RSSFeedController] Invalid request body to open RSS feed`)
|
Logger.error(`[RSSFeedController] Invalid request body to open RSS feed`)
|
||||||
return res.status(400).send('Invalid request body')
|
return res.status(400).send('Invalid request body')
|
||||||
}
|
}
|
||||||
@ -83,7 +83,7 @@ class RSSFeedController {
|
|||||||
if (!series) return res.sendStatus(404)
|
if (!series) return res.sendStatus(404)
|
||||||
|
|
||||||
// Check request body options exist
|
// Check request body options exist
|
||||||
if (!options.serverAddress || !options.slug) {
|
if (!options.serverAddress || !options.slug || options.metadataDetails == null) {
|
||||||
Logger.error(`[RSSFeedController] Invalid request body to open RSS feed`)
|
Logger.error(`[RSSFeedController] Invalid request body to open RSS feed`)
|
||||||
return res.status(400).send('Invalid request body')
|
return res.status(400).send('Invalid request body')
|
||||||
}
|
}
|
||||||
@ -134,4 +134,4 @@ class RSSFeedController {
|
|||||||
next()
|
next()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
module.exports = new RSSFeedController()
|
module.exports = new RSSFeedController()
|
||||||
|
@ -188,9 +188,12 @@ class RssFeedManager {
|
|||||||
async openFeedForItem(user, libraryItem, options) {
|
async openFeedForItem(user, libraryItem, options) {
|
||||||
const serverAddress = options.serverAddress
|
const serverAddress = options.serverAddress
|
||||||
const slug = options.slug
|
const slug = options.slug
|
||||||
|
const preventIndexing = options.metadataDetails.preventIndexing
|
||||||
|
const ownerName = options.metadataDetails.ownerName
|
||||||
|
const ownerEmail = options.metadataDetails.ownerEmail
|
||||||
|
|
||||||
const feed = new Feed()
|
const feed = new Feed()
|
||||||
feed.setFromItem(user.id, slug, libraryItem, serverAddress)
|
feed.setFromItem(user.id, slug, libraryItem, serverAddress, preventIndexing, ownerName, ownerEmail)
|
||||||
this.feeds[feed.id] = feed
|
this.feeds[feed.id] = feed
|
||||||
|
|
||||||
Logger.debug(`[RssFeedManager] Opened RSS feed "${feed.feedUrl}"`)
|
Logger.debug(`[RssFeedManager] Opened RSS feed "${feed.feedUrl}"`)
|
||||||
@ -202,9 +205,12 @@ class RssFeedManager {
|
|||||||
async openFeedForCollection(user, collectionExpanded, options) {
|
async openFeedForCollection(user, collectionExpanded, options) {
|
||||||
const serverAddress = options.serverAddress
|
const serverAddress = options.serverAddress
|
||||||
const slug = options.slug
|
const slug = options.slug
|
||||||
|
const preventIndexing = options.metadataDetails.preventIndexing
|
||||||
|
const ownerName = options.metadataDetails.ownerName
|
||||||
|
const ownerEmail = options.metadataDetails.ownerEmail
|
||||||
|
|
||||||
const feed = new Feed()
|
const feed = new Feed()
|
||||||
feed.setFromCollection(user.id, slug, collectionExpanded, serverAddress)
|
feed.setFromCollection(user.id, slug, collectionExpanded, serverAddress, preventIndexing, ownerName, ownerEmail)
|
||||||
this.feeds[feed.id] = feed
|
this.feeds[feed.id] = feed
|
||||||
|
|
||||||
Logger.debug(`[RssFeedManager] Opened RSS feed "${feed.feedUrl}"`)
|
Logger.debug(`[RssFeedManager] Opened RSS feed "${feed.feedUrl}"`)
|
||||||
@ -216,9 +222,12 @@ class RssFeedManager {
|
|||||||
async openFeedForSeries(user, seriesExpanded, options) {
|
async openFeedForSeries(user, seriesExpanded, options) {
|
||||||
const serverAddress = options.serverAddress
|
const serverAddress = options.serverAddress
|
||||||
const slug = options.slug
|
const slug = options.slug
|
||||||
|
const preventIndexing = options.metadataDetails.preventIndexing
|
||||||
|
const ownerName = options.metadataDetails.ownerName
|
||||||
|
const ownerEmail = options.metadataDetails.ownerEmail
|
||||||
|
|
||||||
const feed = new Feed()
|
const feed = new Feed()
|
||||||
feed.setFromSeries(user.id, slug, seriesExpanded, serverAddress)
|
feed.setFromSeries(user.id, slug, seriesExpanded, serverAddress, preventIndexing, ownerName, ownerEmail)
|
||||||
this.feeds[feed.id] = feed
|
this.feeds[feed.id] = feed
|
||||||
|
|
||||||
Logger.debug(`[RssFeedManager] Opened RSS feed "${feed.feedUrl}"`)
|
Logger.debug(`[RssFeedManager] Opened RSS feed "${feed.feedUrl}"`)
|
||||||
@ -246,4 +255,4 @@ class RssFeedManager {
|
|||||||
return this.handleCloseFeed(feed)
|
return this.handleCloseFeed(feed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
module.exports = RssFeedManager
|
module.exports = RssFeedManager
|
||||||
|
@ -70,7 +70,8 @@ class Feed {
|
|||||||
id: this.id,
|
id: this.id,
|
||||||
entityType: this.entityType,
|
entityType: this.entityType,
|
||||||
entityId: this.entityId,
|
entityId: this.entityId,
|
||||||
feedUrl: this.feedUrl
|
feedUrl: this.feedUrl,
|
||||||
|
meta: this.meta.toJSONMinified(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,7 +81,7 @@ class Feed {
|
|||||||
return episode.fullPath
|
return episode.fullPath
|
||||||
}
|
}
|
||||||
|
|
||||||
setFromItem(userId, slug, libraryItem, serverAddress) {
|
setFromItem(userId, slug, libraryItem, serverAddress, preventIndexing = true, ownerName = null, ownerEmail = null) {
|
||||||
const media = libraryItem.media
|
const media = libraryItem.media
|
||||||
const mediaMetadata = media.metadata
|
const mediaMetadata = media.metadata
|
||||||
const isPodcast = libraryItem.mediaType === 'podcast'
|
const isPodcast = libraryItem.mediaType === 'podcast'
|
||||||
@ -108,6 +109,9 @@ class Feed {
|
|||||||
this.meta.explicit = !!mediaMetadata.explicit
|
this.meta.explicit = !!mediaMetadata.explicit
|
||||||
this.meta.type = mediaMetadata.type
|
this.meta.type = mediaMetadata.type
|
||||||
this.meta.language = mediaMetadata.language
|
this.meta.language = mediaMetadata.language
|
||||||
|
this.meta.preventIndexing = preventIndexing
|
||||||
|
this.meta.ownerName = ownerName
|
||||||
|
this.meta.ownerEmail = ownerEmail
|
||||||
|
|
||||||
this.episodes = []
|
this.episodes = []
|
||||||
if (isPodcast) { // PODCAST EPISODES
|
if (isPodcast) { // PODCAST EPISODES
|
||||||
|
@ -9,6 +9,9 @@ class FeedMeta {
|
|||||||
this.explicit = null
|
this.explicit = null
|
||||||
this.type = null
|
this.type = null
|
||||||
this.language = null
|
this.language = null
|
||||||
|
this.preventIndexing = null
|
||||||
|
this.ownerName = null
|
||||||
|
this.ownerEmail = null
|
||||||
|
|
||||||
if (meta) {
|
if (meta) {
|
||||||
this.construct(meta)
|
this.construct(meta)
|
||||||
@ -25,6 +28,9 @@ class FeedMeta {
|
|||||||
this.explicit = meta.explicit
|
this.explicit = meta.explicit
|
||||||
this.type = meta.type
|
this.type = meta.type
|
||||||
this.language = meta.language
|
this.language = meta.language
|
||||||
|
this.preventIndexing = meta.preventIndexing
|
||||||
|
this.ownerName = meta.ownerName
|
||||||
|
this.ownerEmail = meta.ownerEmail
|
||||||
}
|
}
|
||||||
|
|
||||||
toJSON() {
|
toJSON() {
|
||||||
@ -37,7 +43,20 @@ class FeedMeta {
|
|||||||
link: this.link,
|
link: this.link,
|
||||||
explicit: this.explicit,
|
explicit: this.explicit,
|
||||||
type: this.type,
|
type: this.type,
|
||||||
language: this.language
|
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +71,8 @@ class FeedMeta {
|
|||||||
custom_namespaces: {
|
custom_namespaces: {
|
||||||
'itunes': 'http://www.itunes.com/dtds/podcast-1.0.dtd',
|
'itunes': 'http://www.itunes.com/dtds/podcast-1.0.dtd',
|
||||||
'psc': 'http://podlove.org/simple-chapters',
|
'psc': 'http://podlove.org/simple-chapters',
|
||||||
'podcast': 'https://podcastindex.org/namespace/1.0'
|
'podcast': 'https://podcastindex.org/namespace/1.0',
|
||||||
|
'googleplay': 'http://www.google.com/schemas/play-podcasts/1.0'
|
||||||
},
|
},
|
||||||
custom_elements: [
|
custom_elements: [
|
||||||
{ 'language': this.language || 'en' },
|
{ 'language': this.language || 'en' },
|
||||||
@ -69,13 +89,13 @@ class FeedMeta {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
'itunes:owner': [
|
'itunes:owner': [
|
||||||
{ 'itunes:name': this.author || '' },
|
{ 'itunes:name': this.ownerName || this.author || '' },
|
||||||
{ 'itunes:email': '' }
|
{ 'itunes:email': this.ownerEmail || '' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{ 'itunes:explicit': !!this.explicit },
|
||||||
"itunes:explicit": !!this.explicit
|
{ 'itunes:block': !!this.preventIndexing },
|
||||||
}
|
{ 'googleplay:block': !!this.preventIndexing }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user