Improvised the Playlist feature

This commit is contained in:
ibratabian17
2024-07-07 18:25:26 +08:00
parent a772612b60
commit 2a0878a9c6
6 changed files with 196 additions and 17 deletions

View File

@@ -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));

View File

@@ -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": {}
}
}

52
core/lib/playlist.js Normal file
View File

@@ -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
}

View File

@@ -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);
});

View File

@@ -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"
]

View File

@@ -9,6 +9,7 @@
"isPublic": true,
"enableSSL": true,
"domain": "jdp.justdancenext.xyz",
"modName": "Just Dance Unlimited Mod",
"serverstatus": {
"isMaintenance": false,
"channel": "prod"