diff --git a/core/carousel/carousel.js b/core/carousel/carousel.js index 6107293..0e86988 100644 --- a/core/carousel/carousel.js +++ b/core/carousel/carousel.js @@ -6,6 +6,7 @@ const path = require('path'); const cClass = require("./classList.json"); const songdb = loadJsonFile('Platforms/openparty-all/songdbs.json', '../database/Platforms/openparty-all/songdbs.json'); const helper = require('../helper') +const settings = require('../../settings.json') var mostPlayed = {} mostPlayed = loadJsonFile('carousel/mostplayed.json', '../database/carousel/mostplayed.json'); @@ -197,11 +198,11 @@ exports.generateCarousel = (search, type = "partyMap") => { // Dynamic Carousel System - addCategories(generateCategories("Just Dance Unlimited Mod", filterSongs(songdbs, song => true), type)); + addCategories(generateCategories(settings.server.modName, filterSongs(songdbs, song => true), type)); addCategories(generateCategories("Recommended For You", CloneObject(shuffleArray(songdbs), type))); addCategories(generateCategories("[icon:PLAYLIST]Recently Added!", CloneObject(filterSongsByTags(songdbs, 'NEW')), type)); - generateWeeklyRecommendedSong(readDatabaseJson("carousel/playlist.json"), type); - processPlaylists(readDatabaseJson("carousel/playlist.json"), type); + generateWeeklyRecommendedSong(loadJsonFile('carousel/playlist.json', '../database/carousel/playlist.json'), type); + processPlaylists(loadJsonFile('carousel/playlist.json', '../database/carousel/playlist.json'), type); addJDVersion(songdbs, type); addCategories(generateCategories(`Most Played Weekly!`, CloneObject(getGlobalPlayedSong()), type)); addCategories(Object.assign({}, cClass.searchCategoryClass)); diff --git a/core/lib/playlist-Class.json b/core/lib/playlist-Class.json new file mode 100644 index 0000000..0371b5f --- /dev/null +++ b/core/lib/playlist-Class.json @@ -0,0 +1,117 @@ +{ + "playlistdb": { + "__class": "PlaylistDbResponse", + "db": {} + }, + "playlistcategory": { + "__class": "JD_CarouselContent", + "categories": [ + { + "__class": "Category", + "title": "Recommended", + "act": "ui_carousel", + "isc": "grp_row", + "categoryType": "playlist", + "items": [ + { + "__class": "Item", + "isc": "grp_row", + "act": "ui_carousel", + "actionList": "_None", + "actionListUpsell": "_None", + "components": [ + { + "__class": "JD_CarouselContentComponent_Playlist", + "playlistID": "reco-top_country", + "displayCode": 1, + "displayMethod": "manual" + } + ] + }, + { + "__class": "Item", + "isc": "grp_row", + "act": "ui_carousel", + "actionList": "_None", + "actionListUpsell": "_None", + "components": [ + { + "__class": "JD_CarouselContentComponent_Playlist", + "playlistID": "reco-discover", + "displayCode": 2, + "displayMethod": "manual" + } + ] + }, + { + "__class": "Item", + "isc": "grp_row", + "act": "ui_carousel", + "actionList": "_None", + "actionListUpsell": "_None", + "components": [ + { + "__class": "JD_CarouselContentComponent_Playlist", + "playlistID": "reco-for_you", + "displayCode": 3, + "displayMethod": "manual" + } + ] + }, + { + "__class": "Item", + "isc": "grp_row", + "act": "ui_carousel", + "actionList": "_None", + "actionListUpsell": "_None", + "components": [ + { + "__class": "JD_CarouselContentComponent_Playlist", + "playlistID": "reco-top_played", + "displayCode": 4, + "displayMethod": "manual" + } + ] + }, + { + "__class": "Item", + "isc": "grp_row", + "act": "ui_carousel", + "actionList": "_None", + "actionListUpsell": "_None", + "components": [ + { + "__class": "JD_CarouselContentComponent_Playlist", + "playlistID": "reco-top_replayed", + "displayCode": 5, + "displayMethod": "manual" + } + ] + } + ] + }, + { + "__class": "Category", + "title": "Themed Playlists", + "act": "ui_carousel", + "isc": "grp_row", + "categoryType": "playlist", + "items": [] + } + ], + "actionLists": { + "_None": { + "__class": "ActionList", + "actions": [ + { + "__class": "Action", + "title": "None", + "type": "do-nothing" + } + ], + "itemType": "map" + } + }, + "songItemLists": {} + } +} \ No newline at end of file diff --git a/core/lib/playlist.js b/core/lib/playlist.js new file mode 100644 index 0000000..721b602 --- /dev/null +++ b/core/lib/playlist.js @@ -0,0 +1,52 @@ +const { loadJsonFile } = require('../helper') +const inputJson = loadJsonFile('carousel/playlist.json', '../database/carousel/playlist.json'); +const ClassList = require('./playlist-Class.json') +const WEEKLY_PLAYLIST_PREFIX = 'DFRecommendedFU'; + +const generatePlaylist = () => { + let playlistdb = ClassList.playlistdb; + let playlistcategory = ClassList.playlistcategory; + + let a = 6 + inputJson.forEach(item => { + if (!item.name.startsWith(WEEKLY_PLAYLIST_PREFIX)) { + playlistdb.db[item.id] = { + "filters": item.filters, + "maps": item.songlist, + "__class": "PlaylistDbService::Playlist", + "title": item.name, + "description": item.description, + "coverURL": item.coverURL, + "fixedMapOrder": item.fixedMapOrder, + "fallback": item.fallback, + "pinned": item.pinned + }; + + playlistcategory.categories[1].items.push({ + "__class": "Item", + "isc": "grp_row", + "act": "ui_carousel", + "actionList": "_None", + "actionListUpsell": "_None", + "components": [ + { + "__class": "JD_CarouselContentComponent_Playlist", + "playlistID": item.id, + "displayCode": a, + "displayMethod": "manual" + } + ] + }); + a++; + } + }); + + return { + playlistdb, + playlistcategory + }; +}; + +module.exports = { + generatePlaylist +} diff --git a/core/route/rdefault.js b/core/route/rdefault.js index 4cb4f9b..7784e34 100644 --- a/core/route/rdefault.js +++ b/core/route/rdefault.js @@ -5,6 +5,7 @@ const settings = require('../../settings.json'); var md5 = require('md5'); const core = { main: require('../var').main, + generatePlaylist: require('../lib/playlist').generatePlaylist, CloneObject: require('../helper').CloneObject, loadJsonFile: require('../helper').loadJsonFile, generateCarousel: require('../carousel/carousel').generateCarousel, generateSweatCarousel: require('../carousel/carousel').generateSweatCarousel, generateCoopCarousel: require('../carousel/carousel').generateCoopCarousel, updateMostPlayed: require('../carousel/carousel').updateMostPlayed, @@ -226,19 +227,6 @@ exports.initroute = (app, express, server) => { response.send(core.main.quests); }); - app.post("/carousel/v2/pages/jd2019-playlists", (request, response) => { - response.send(core.main.playlists); - }); - app.post("/carousel/v2/pages/jd2020-playlists", (request, response) => { - response.send(core.main.playlists); - }); - app.post("/carousel/v2/pages/jd2021-playlists", (request, response) => { - response.send(core.main.playlists); - }); - app.post("/carousel/v2/pages/jd2022-playlists", (request, response) => { - response.send(core.main.playlists); - }); - app.post("/sessions/v1/session", (request, response) => { response.send({ "pairingCode": "000000", @@ -263,7 +251,19 @@ exports.initroute = (app, express, server) => { // Playlists app.get("/playlistdb/v1/playlists", function (request, response) { - response.send(core.main.playlistdb); + response.send(core.generatePlaylist().playlistdb); + }); + app.post("/carousel/v2/pages/jd2019-playlists", (request, response) => { + response.send(core.generatePlaylist().playlistcategory); + }); + app.post("/carousel/v2/pages/jd2020-playlists", (request, response) => { + response.send(core.generatePlaylist().playlistcategory); + }); + app.post("/carousel/v2/pages/jd2021-playlists", (request, response) => { + response.send(core.generatePlaylist().playlistcategory); + }); + app.post("/carousel/v2/pages/jd2022-playlists", (request, response) => { + response.send(core.generatePlaylist().playlistcategory); }); diff --git a/database/carousel/playlist.json b/database/carousel/playlist.json index 9334d1a..1e11d7e 100644 --- a/database/carousel/playlist.json +++ b/database/carousel/playlist.json @@ -2,6 +2,14 @@ { "name": "Test Playlist", "RecommendedName": "Test Playlist", + "id": "TestPlaylist", + "description": "IHIR888 LEKAS", + "coverURL": "https://imgur.com/QB3Ixkl.png", + "showOnCarousel": false, + "filters": true, + "fixedMapOrder": false, + "fallback": false, + "pinned": false, "songlist": [ "Despacito" ] diff --git a/settings.json b/settings.json index c0538a6..258d408 100644 --- a/settings.json +++ b/settings.json @@ -9,6 +9,7 @@ "isPublic": true, "enableSSL": true, "domain": "jdp.justdancenext.xyz", + "modName": "Just Dance Unlimited Mod", "serverstatus": { "isMaintenance": false, "channel": "prod"