remove unused pages

This commit is contained in:
yazninja 2022-07-11 16:40:50 +08:00
parent 3f8e9b99db
commit f940bcf1e0
8 changed files with 557 additions and 1917 deletions

View file

@ -63,7 +63,6 @@ export class BrowserWindow {
"pages/browse",
"pages/groupings",
"pages/charts",
"pages/settings",
//"pages/installed-themes",
"pages/listen_now",
"pages/radio",

View file

@ -6,7 +6,6 @@
"pages/library-artists",
"pages/browse",
"pages/groupings",
"pages/settings",
"pages/installed-themes",
"pages/listen_now",
"pages/radio",

View file

@ -1,325 +0,0 @@
//Not used for Now
<!-- <script type="text/x-template" id="keybinds-settings">
<div class="keybinds-page">
<div class="md-option-header">
<span>{{$root.getLz('settings.option.general.keybindings')}}</span>
</div>
<div class="settings-option-body">
<div class="md-option-header-sub">
<span>{{$root.getLz('settings.option.general.keybindings.library')}}</span>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.search')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('search')">
{{app.cfg.general.keybindings.search.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.listnow')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('listnow')">
{{app.cfg.general.keybindings.listnow.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.browse')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('browse')">
{{app.cfg.general.keybindings.browse.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.recentAdd')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('recentAdd')">
{{app.cfg.general.keybindings.recentAdd.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.songs')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('songs')">
{{app.cfg.general.keybindings.songs.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.albums')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('albums')">
{{app.cfg.general.keybindings.albums.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.artists')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('artists')">
{{app.cfg.general.keybindings.artists.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-header-sub">
<span>{{$root.getLz('settings.option.general.keybindings.session')}}</span>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.private')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('togglePrivateSession')">
{{app.cfg.general.keybindings.togglePrivateSession.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-header-sub">
<span>{{$root.getLz('settings.option.general.keybindings.control')}}</span>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.remote')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('webRemote')">
{{app.cfg.general.keybindings.webRemote.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.audio')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('audioSettings')">
{{app.cfg.general.keybindings.audioSettings.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.plugins')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('pluginMenu')">
{{app.cfg.general.keybindings.pluginMenu.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.cast')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('castToDevices')">
{{app.cfg.general.keybindings.castToDevices.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.settings')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('settings')">
{{app.cfg.general.keybindings.settings.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-header-sub" v-if="app.platform !== 'darwin'">
<span>{{$root.getLz('settings.option.general.keybindings.interface')}}</span>
</div>
<div class="md-option-line" v-if="app.platform !== 'darwin'">
<div class="md-option-segment">
{{$root.getLz('term.zoomin')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('zoomn')">
{{app.cfg.general.keybindings.zoomn.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line" v-if="app.platform !== 'darwin'">
<div class="md-option-segment">
{{$root.getLz('term.zoomout')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('zoomt')">
{{app.cfg.general.keybindings.zoomt.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-line" v-if="app.platform !== 'darwin'">
<div class="md-option-segment">
{{$root.getLz('term.zoomreset')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('zoomrst')">
{{app.cfg.general.keybindings.zoomrst.join(' + ')}}
</button>
</div>
</div>
<div class="md-option-header-sub">
<span>{{$root.getLz('settings.option.general.keybindings.advanced')}}</span>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.description.developer')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn md-btn-small md-btn-block"
@click="keyBindUpdate('openDeveloperTools')">
{{app.cfg.general.keybindings.openDeveloperTools.join(' + ')}}
</button>
</div>
</div>
<button class="md-btn md-btn-large md-btn-block" @click="keyBindReset()">
{{$root.getLz('term.reset')}}
</button>
</div>
</div>
</script>
<script>
Vue.component('keybinds-settings', {
template: "#keybinds-settings",
props: [],
data: function () {
return {
app: this.$root
}
},
methods: {
keyBindUpdate: function (action) {
const blur = document.createElement('div');
blur.className = 'blur';
blur.style.backgroundColor = 'rgba(0,0,0,0.25)';
blur.style.position = 'fixed';
blur.style.top = '0';
blur.style.left = '0';
blur.style.width = '100%';
blur.style.height = '100%';
blur.style.zIndex = '9999';
blur.style.display = 'flex';
blur.style.alignItems = 'center';
blur.style.justifyContent = 'center';
blur.style.fontSize = '2em';
blur.style.color = 'white';
blur.innerHTML = `<center>${app.getLz('settings.option.general.keybindings.pressCombination')}<br />${app.getLz('settings.option.general.keybindings.pressEscape')}</center>`
document.body.appendChild(blur);
let keyBind = [];
const keyBindTimeout = setTimeout(function () {
keyBind = [];
document.body.removeChild(blur);
}, 30000);
const keyBindUpdate = function (e) {
if (document.body.contains(blur)) {
if (e.key == 'Escape') {
document.body.removeChild(blur);
clearTimeout(keyBindTimeout);
return;
} else {
if (e.keyCode >= 65 && e.keyCode <= 90 && e.keyCode <= 97 && e.keyCode <= 122) {
keyBind.push(e.key.toUpperCase());
} else {
keyBind.push(e.key);
}
if (keyBind.length === 2) {
if (keyBind[0] !== keyBind[1]) {
app.cfg.general.keybindings[action] = keyBind
document.body.removeChild(blur);
clearTimeout(keyBindTimeout);
notyf.success(app.getLz('settings.notyf.general.keybindings.update.success'));
app.confirm(app.getLz("settings.prompt.general.keybindings.update.success"), (ok) => {
if (ok) ipcRenderer.invoke("relaunchApp")
})
} else {
keyBind = [];
}
}
}
}
};
document.addEventListener('keydown', keyBindUpdate);
},
keyBindReset: function () {
app.cfg.general.keybindings.search = [app.platform == "darwin" ? "Command" : "Control", "F"];
app.cfg.general.keybindings.listnow = [app.platform == "darwin" ? "Command" : "Control", "L"];
app.cfg.general.keybindings.browse = [app.platform == "darwin" ? "Command" : "Control", "B"];
app.cfg.general.keybindings.recentAdd = [app.platform == "darwin" ? "Command" : "Control", "G"];
app.cfg.general.keybindings.songs = [app.platform == "darwin" ? "Command" : "Control", "J"];
app.cfg.general.keybindings.albums = [app.platform == "darwin" ? "Command" : "Control", "A"];
app.cfg.general.keybindings.artists = [app.platform == "darwin" ? "Command" : "Control", "D"];
app.cfg.general.keybindings.togglePrivateSession = [app.platform == "darwin" ? "Command" : "Control", "P"];
app.cfg.general.keybindings.webRemote = [app.platform == "darwin" ? "Command" : "Control",app.platform == "darwin" ? "Option" : (app.platform == "linux" ? "Shift" : "Alt"), "W"];
app.cfg.general.keybindings.audioSettings = [app.platform == "darwin" ? "Command" : "Control",app.platform == "darwin" ? "Option" : (app.platform == "linux" ? "Shift" : "Alt"), "A"];
app.cfg.general.keybindings.pluginMenu = [app.platform == "darwin" ? "Command" : "Control",app.platform == "darwin" ? "Option" : (app.platform == "linux" ? "Shift" : "Alt"), "P"];
app.cfg.general.keybindings.castToDevices = [app.platform == "darwin" ? "Command" : "Control",app.platform == "darwin" ? "Option" : (app.platform == "linux" ? "Shift" : "Alt"), "C"];
app.cfg.general.keybindings.settings = [app.platform == "darwin" ? "Command" : "Control", ","];
app.cfg.general.keybindings.zoomn = [app.platform == "darwin" ? "Command" : "Control", "numadd"];
app.cfg.general.keybindings.zoomt = [app.platform == "darwin" ? "Command" : "Control", "numsub"];
app.cfg.general.keybindings.zoomrst = [app.platform == "darwin" ? "Command" : "Control", "num0"];
app.cfg.general.keybindings.openDeveloperTools = [app.platform == "darwin" ? "Command" : "Control", app.platform == "darwin" ? "Option" : "Shift", "I"];
notyf.success(app.getLz('settings.notyf.general.keybindings.update.success'));
app.confirm(app.getLz("settings.prompt.general.keybindings.update.success"), (ok) => {
if (ok) ipcRenderer.invoke("relaunchApp")
})
},
getLanguages: function () {
let langs = this.$root.lzListing
let categories = {
"main": [],
"fun": [],
"unsorted": []
}
// sort by category if category is undefined or empty put it in "unsorted"
for (let i = 0; i < langs.length; i++) {
if (langs[i].category === undefined || langs[i].category === "") {
categories.unsorted.push(langs[i])
} else {
categories[langs[i].category].push(langs[i])
}
}
// return
return categories
},
}
})
</script> -->

View file

@ -1,49 +0,0 @@
<div class="content-inner">
<div class="row">
<div class="col" style="padding:0;">
<h1 class="header-text">{{$root.getLz('term.artists')}}</h1>
</div>
</div>
<div class="row">
<div class="col" style="padding:0;">
<div class="search-input-container" style="width:100%;margin: 16px 0;">
<div class="search-input--icon"></div>
<input type="search" style="width:100%;" spellcheck="false" :placeholder="$root.getLz('term.search') + '...'" @input="searchLibraryArtists" v-model="library.artists.search" class="search-input">
</div>
</div>
<div class="col-auto flex-center">
<div class="row">
<!-- <div class="col">
<select class="md-select" v-model="library.artists.sorting[1]" @change="searchLibraryArtists(1)">
<optgroup label="Sort By">
<option v-for="(sort, index) in library.artists.sortingOptions" :value="index">{{ sort }}</option>
</optgroup>
</select>
</div> -->
<div class="col">
<select class="md-select" v-model="library.artists.sortOrder[1]" @change="searchLibraryArtists(1)">
<optgroup :label="$root.getLz('term.sortOrder')">
<option value="asc">{{$root.getLz('term.sortOrder.ascending')}}</option>
<option value="desc">{{$root.getLz('term.sortOrder.descending')}}</option>
</optgroup>
</select>
</div>
<!-- <div class="col">
<select class="md-select" v-model="library.artists.viewAs">
<optgroup label="View As">
<option value="covers">Cover Art</option>
<option value="list">List</option>
</optgroup>
</select>
</div> -->
</div>
</div>
</div>
<div class="well">
<!-- <mediaitem-square v-if="library.artists.viewAs == 'covers'" :item="item" v-for="item in library.artists.displayListing">
</mediaitem-square> -->
<libraryartist-item :show-duration="false" :show-meta-data="true" :show-library-status="false" :item="item" v-for="item in library.artists.displayListing">
</libraryartist-item>
</div>
</div>

View file

@ -1,16 +0,0 @@
<script type="text/x-template" id="hello-world">
<div class="content-inner">
</div>
</script>
<script>
Vue.component('library-songs', {
template: '#library-songs',
methods: {
sayHello: function () {
alert('Hello world!');
}
}
});
</script>

View file

@ -1,191 +0,0 @@
//Not used for Now
<!-- <script type="text/x-template" id="plugins-github">
<div class="github-themes-page">
<div class="gh-header">
<div class="row">
<div class="col nopadding">
<h1 class="header-text">{{$root.getLz('settings.header.visual.plugin.github.page')}}</h1>
</div>
<div class="col-auto nopadding flex-center">
<button class="md-btn md-btn-small md-btn-block" @click="installThemeURL()">
{{$root.getLz('settings.option.visual.plugin.github.download')}}
</button>
</div>
</div>
</div>
<div class="gh-content">
<div class="repos-list">
<ul class="list-group list-group-flush">
<li @click="showRepo(repo)" class="list-group-item list-group-item-dark"
:style="{'background': (repo.id == openRepo.id) ? 'var(--keyColor)' : ''}"
v-for="repo in repos">
<div class="row">
<div class="col flex-center">
<div>
<h4 class="repo-name">{{ (repo.description != null) ? repo.description : repo.full_name }}</h4>
<div>⭐ {{ repo.stargazers_count }}</div>
</div>
</div>
</div>
</li>
</ul>
</div>
<div class="github-preview" v-if="openRepo.full_name">
<div class="gh-preview-header">
<div class="row nopadding">
<div class="col nopadding flex-center">
<div>
<h3 class="repo-preview-name">{{ openRepo.description }}</h3>
<div>
<div class="svg-icon inline" :style="{'--url': 'url(\'./assets/github.svg\')'}"></div>
<a class="repo-url" target="_blank" :href="openRepo.html_url">{{ openRepo.full_name
}}</a></div>
<div>⭐ {{ openRepo.stargazers_count }}</div>
</div>
</div>
<div class="col-auto nopadding flex-center">
<button class="md-btn md-btn-primary" @click="installThemeRepo(openRepo)">
<span v-if="!themesInstalled.includes(openRepo.full_name)">{{$root.getLz('action.install')}}</span>
<span v-else>{{$root.getLz('action.update')}}</span>
</button>
</div>
</div>
</div>
<hr>
<div v-html="openRepo.readme" class="github-content"></div>
</div>
<div class="github-preview" v-else>
</div>
</transition>
</div>
</div>
</script>
<script>
Vue.component('plugins-github', {
template: "#plugins-github",
props: [],
data: function () {
return {
repos: [],
openRepo: {
id: -1,
name: '',
description: '',
html_url: '',
stargazers_count: 0,
owner: {
avatar_url: ''
},
readme: ""
},
themesInstalled: []
}
},
mounted() {
this.getRepos();
// this.getInstalledThemes();
},
methods: {
getInstalledThemes() {
let self = this
const themes = ipcRenderer.sendSync("get-themes")
// for each theme, get the github_repo property and push it to the themesInstalled array, if not blank
themes.forEach(theme => {
if (theme.github_repo !== "") {
self.themesInstalled.push(theme.github_repo)
}
})
},
showRepo(repo) {
const self = this
const readmeUrl = `https://raw.githubusercontent.com/${repo.full_name}/main/README.md`;
var requestOptions = {
method: 'GET',
redirect: 'follow'
};
fetch(readmeUrl, requestOptions)
.then(response => response.text())
.then(result => {
self.openRepo = repo
self.openRepo.readme = self.convertReadMe(result);
})
.catch(error => {
self.openRepo = repo
self.openRepo.readme = `This repository doesn't have a README.md file.`;
console.log('error', error)
});
},
convertReadMe(text) {
return marked.parse(text)
},
installThemeRepo(repo) {
let self = this
let msg = app.stringTemplateParser(app.getLz('settings.option.visual.plugin.github.install.confirm'), {
repo: repo.full_name
});
app.confirm(msg, (res) => {
if (res) {
ipcRenderer.once("plugin-installed", (event, arg) => {
if (arg.success) {
self.themes = []
notyf.success(app.getLz('settings.notyf.visual.plugin.install.success'));
app.confirm(app.getLz("settings.prompt.visual.plugin.github.success"), (ok)=>{
if (ok) {
ipcRenderer.invoke("relaunchApp")
} else {
return
}
})
} else {
notyf.error(app.getLz('settings.notyf.visual.plugin.install.error'));
}
});
ipcRenderer.invoke("get-github-plugin", repo.html_url)
}
})
},
installThemeURL() {
let self = this
app.prompt(app.getLz('settings.prompt.visual.plugin.github.URL'), (result) => {
if (result) {
ipcRenderer.once("plugin-installed", (event, arg) => {
if (arg.success) {
self.themes = ipcRenderer.sendSync("get-themes")
app.confirm(app.getLz("settings.prompt.visual.plugin.github.success"), (ok)=>{
if (ok) {
ipcRenderer.invoke("relaunchApp")
} else {
return
}
})
notyf.success(app.getLz('settings.notyf.visual.plugin.install.success'));
} else {
notyf.error(app.getLz('settings.notyf.visual.plugin.install.error'));
}
});
ipcRenderer.invoke("get-github-plugin", result)
}
});
},
getRepos() {
let self = this
var requestOptions = {
method: 'GET',
redirect: 'follow'
};
fetch("https://api.github.com/search/repositories?q=topic:cidermusicplugin fork:true&per_page=100", requestOptions)
.then(response => response.text())
.then(result => {
self.repos = JSON.parse(result).items
})
.catch(error => console.log('error', error));
}
}
})
</script>
-->

File diff suppressed because it is too large Load diff

557
src/smth.json Normal file
View file

@ -0,0 +1,557 @@
{
"CookieSPAEnabled": false,
"MultiVariantTestingEnabled": false,
"UseV2": true,
"MobileSDK": false,
"SkipGeolocation": false,
"ScriptType": "PRODUCTION",
"Version": "6.26.0",
"OptanonDataJSON": "50da44be-0564-43df-b139-329aedcf267b",
"GeolocationUrl": "https://geolocation.onetrust.com/cookieconsentpub/v1/geo/location",
"BulkDomainCheckUrl": "https://cookies-data.onetrust.io/bannersdk/v1/domaingroupcheck",
"RuleSet": [
{
"Id": "fb7c8fa7-d912-4e6b-a0ef-181d7466bd99",
"Name": "Standard Notice Banner",
"Countries": [
"ps",
"hk",
"pw",
"ht",
"qa",
"id",
"il",
"ae",
"in",
"ag",
"za",
"al",
"am",
"ao",
"zm",
"au",
"az",
"zw",
"ba",
"bb",
"rs",
"bd",
"ru",
"jm",
"bf",
"jo",
"rw",
"bi",
"bj",
"bn",
"sa",
"sb",
"sc",
"bs",
"bt",
"sg",
"bw",
"by",
"bz",
"sl",
"sm",
"ke",
"sn",
"kg",
"kh",
"ki",
"ca",
"sr",
"st",
"kn",
"ch",
"ci",
"sz",
"kr",
"cm",
"cn",
"kw",
"kz",
"td",
"cv",
"tg",
"cw",
"th",
"la",
"lb",
"lc",
"tl",
"to",
"tr",
"lk",
"tt",
"tv",
"dj",
"tz",
"lr",
"ls",
"dm",
"ug",
"ma",
"md",
"me",
"mg",
"mh",
"us",
"mk",
"ml",
"mn",
"eg",
"mr",
"uz",
"mu",
"mv",
"mw",
"my",
"mz",
"vc",
"na",
"ne",
"vn",
"ng",
"vu",
"np",
"nr",
"fj",
"fm",
"nz",
"ga",
"ws",
"gd",
"om",
"ge",
"gh",
"gm",
"gn",
"gq",
"gw",
"gy",
"pg",
"ph",
"pk"
],
"States": {},
"LanguageSwitcherPlaceholder": {
"hi": "hi",
"de": "de",
"es-BO": "es-BO",
"zh-Hans": "zh-Hans",
"zh-Hant": "zh-Hant",
"es-BZ": "es-BZ",
"uk": "uk",
"es-CC": "es-CC",
"id": "id",
"ur": "ur",
"af": "af",
"es-SV": "es-SV",
"ms": "ms",
"es-GT": "es-GT",
"es-CR": "es-CR",
"it": "it",
"es-CL": "es-CL",
"es": "es",
"es-CO": "es-CO",
"es-PE": "es-PE",
"ar": "ar",
"vi": "vi",
"es-PA": "es-PA",
"ne": "ne",
"ja": "ja",
"az": "az",
"zu": "zu",
"nl": "nl",
"es-HN": "es-HN",
"ru": "ru",
"es-PR": "es-PR",
"es-PY": "es-PY",
"fr": "fr",
"bn": "bn",
"es-DO": "es-DO",
"default": "en",
"es-EC": "es-EC",
"en-PH": "en-PH",
"sr": "sr",
"sw": "sw",
"ko": "ko",
"pt-BR": "pt-BR",
"es-UY": "es-UY",
"es-VE": "es-VE",
"ta": "ta",
"es-MX": "es-MX",
"th": "th",
"es-AR": "es-AR",
"he": "he",
"tr": "tr",
"es-NI": "es-NI"
},
"BannerPushesDown": false,
"Default": false,
"Global": false,
"Type": "GENERIC",
"UseGoogleVendors": false,
"VariantEnabled": false,
"TestEndTime": null,
"Variants": [],
"TemplateName": "Spotify - Standard Notice Banner",
"Conditions": [],
"GCEnable": false
},
{
"Id": "87b34903-3ed8-41e8-873f-df7208bf4ac7",
"Name": "IAB 2.0 - Germany",
"Countries": [
"de"
],
"States": {},
"LanguageSwitcherPlaceholder": {
"default": "de"
},
"BannerPushesDown": false,
"Default": false,
"Global": false,
"Type": "IAB2",
"UseGoogleVendors": false,
"VariantEnabled": false,
"TestEndTime": null,
"Variants": [],
"TemplateName": "Spotify - GDPR IAB Banner (Germany)",
"Conditions": [],
"GCEnable": false
},
{
"Id": "047479d5-e10c-4c37-bb58-b85a33337d90",
"Name": "IAB 2.0 - Reject All Button",
"Countries": [
"fr"
],
"States": {},
"LanguageSwitcherPlaceholder": {
"no": "no",
"de": "de",
"sv": "sv",
"fi": "fi",
"pt": "pt",
"bg": "bg",
"el": "el",
"lt": "lt",
"en": "en",
"lv": "lv",
"is": "is",
"hr": "hr",
"it": "it",
"hu": "hu",
"es": "es",
"et": "et",
"cs": "cs",
"default": "fr",
"sk": "sk",
"sl": "sl",
"pl": "pl",
"ro": "ro",
"da": "da",
"nl": "nl"
},
"BannerPushesDown": false,
"Default": false,
"Global": false,
"Type": "IAB2",
"UseGoogleVendors": false,
"VariantEnabled": false,
"TestEndTime": null,
"Variants": [],
"TemplateName": "Spotify - GDPR IAB Banner (Reject all button)",
"Conditions": [],
"GCEnable": false
},
{
"Id": "9ffca9ee-89d4-4e64-9807-8f72fd75528a",
"Name": "IAB 2.0",
"Countries": [
"no",
"fi",
"be",
"pt",
"bg",
"dk",
"lt",
"lu",
"lv",
"hr",
"hu",
"se",
"si",
"sk",
"gb",
"ie",
"ee",
"mt",
"is",
"it",
"gr",
"es",
"at",
"cy",
"cz",
"pl",
"li",
"ro",
"nl"
],
"States": {},
"LanguageSwitcherPlaceholder": {
"no": "no",
"de": "de",
"sv": "sv",
"fi": "fi",
"pt": "pt",
"bg": "bg",
"el": "el",
"lt": "lt",
"lv": "lv",
"is": "is",
"hr": "hr",
"it": "it",
"fr": "fr",
"hu": "hu",
"es": "es",
"et": "et",
"cs": "cs",
"default": "en",
"sk": "sk",
"sl": "sl",
"pl": "pl",
"ro": "ro",
"da": "da",
"nl": "nl"
},
"BannerPushesDown": false,
"Default": true,
"Global": false,
"Type": "IAB2",
"UseGoogleVendors": false,
"VariantEnabled": false,
"TestEndTime": null,
"Variants": [],
"TemplateName": "Spotify - GDPR IAB Banner",
"Conditions": [],
"GCEnable": false
},
{
"Id": "74eec303-d5c3-4488-a6df-cb21b90c2b8c",
"Name": "Global",
"Countries": [
"pr",
"tw",
"hm",
"hn",
"py",
"do",
"ye",
"ua",
"ly",
"dz",
"um",
"ec",
"mm",
"mo",
"mp",
"eh",
"ad",
"im",
"uy",
"af",
"ms",
"io",
"iq",
"ai",
"ir",
"va",
"mx",
"er",
"ve",
"et",
"aq",
"vg",
"ar",
"as",
"vi",
"nc",
"aw",
"nf",
"ni",
"je",
"fk",
"bh",
"jp",
"nu",
"fo",
"bl",
"bm",
"bo",
"wf",
"bq",
"br",
"sd",
"bv",
"sh",
"sj",
"so",
"gg",
"cc",
"ss",
"cd",
"km",
"gi",
"cf",
"sv",
"cg",
"gl",
"sx",
"kp",
"sy",
"ck",
"cl",
"co",
"gs",
"gt",
"gu",
"ky",
"cr",
"tc",
"pa",
"tf",
"cu",
"pe",
"cx",
"pf",
"tj",
"tk",
"tm",
"tn",
"pm",
"pn"
],
"States": {},
"LanguageSwitcherPlaceholder": {
"hi": "hi",
"de": "de",
"es-BO": "es-BO",
"zh-Hans": "zh-Hans",
"zh-Hant": "zh-Hant",
"es-BZ": "es-BZ",
"uk": "uk",
"es-CC": "es-CC",
"id": "id",
"ur": "ur",
"af": "af",
"es-SV": "es-SV",
"ms": "ms",
"es-GT": "es-GT",
"es-CR": "es-CR",
"it": "it",
"es-CL": "es-CL",
"es": "es",
"es-CO": "es-CO",
"es-PE": "es-PE",
"ar": "ar",
"vi": "vi",
"es-PA": "es-PA",
"ne": "ne",
"ja": "ja",
"az": "az",
"zu": "zu",
"nl": "nl",
"es-HN": "es-HN",
"ru": "ru",
"es-PR": "es-PR",
"es-PY": "es-PY",
"fr": "fr",
"bn": "bn",
"es-DO": "es-DO",
"default": "en",
"es-EC": "es-EC",
"en-PH": "en-PH",
"sr": "sr",
"sw": "sw",
"ko": "ko",
"pt-BR": "pt-BR",
"es-UY": "es-UY",
"es-VE": "es-VE",
"ta": "ta",
"es-MX": "es-MX",
"th": "th",
"es-AR": "es-AR",
"he": "he",
"tr": "tr",
"es-NI": "es-NI"
},
"BannerPushesDown": false,
"Default": false,
"Global": true,
"Type": "GENERIC",
"UseGoogleVendors": false,
"VariantEnabled": false,
"TestEndTime": null,
"Variants": [],
"TemplateName": "Spotify - Standard Notice Banner",
"Conditions": [],
"GCEnable": false
}
],
"IabData": {
"cookieVersion": "1",
"createdTime": "2022-05-23T15:50:11.758903",
"updatedTime": "2022-05-23T15:50:11.758919",
"cmpId": "28",
"cmpVersion": "1",
"consentScreen": "1",
"consentLanguage": null,
"vendorListVersion": 0,
"maxVendorId": 0,
"encodingType": "0",
"globalVendorListUrl": "https://cdn.cookielaw.org/vendorlist/iabData.json"
},
"IabV2Data": {
"cookieVersion": "1",
"createdTime": "2022-05-23T15:50:11.809823",
"updatedTime": "2022-05-23T15:50:11.809837",
"cmpId": "28",
"cmpVersion": "1",
"consentScreen": "1",
"consentLanguage": null,
"vendorListVersion": 144,
"maxVendorId": 0,
"encodingType": "0",
"globalVendorListUrl": "https://cdn.cookielaw.org/vendorlist/iab2Data.json"
},
"GoogleData": {
"vendorListVersion": 1,
"googleVendorListUrl": "https://cdn.cookielaw.org/vendorlist/googleData.json"
},
"ScriptDynamicLoadEnabled": false,
"TenantFeatures": {
"CookieV2BannerFocus": true,
"CookieV2TargetedTemplates": true,
"CookieV2GPC": true,
"CookieV2AssignTemplateRule": true,
"CookieV2GeolocationJsonApi": true,
"CookieV2TCF21": true,
"CookieV2RemoveSettingsIcon": true,
"CookieV2GeneralVendors": true
},
"IsSuppressBanner": false,
"IsSuppressPC": false,
"PublisherCC": "DE",
"Domain": "spotify.com",
"TenantGuid": "f1b38160-cf19-4625-89df-35263d2d97c0",
"EnvId": "app-de-prod",
"RemoteActionsEnabled": false,
"GeoRuleGroupName": "Spotify Domains",
"GATrackToggle": true,
"GATrackAssignedCategory": "AS"
}