Compare commits
17 Commits
449accb003
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 7faec524da | |||
| cd7e2e7a0f | |||
| c07984c506 | |||
| 2235372c64 | |||
|
|
94a6893444 | ||
|
|
cd0b9a7f55 | ||
|
|
97fcdcce5d | ||
|
|
e6614d0805 | ||
|
|
988afab81c | ||
| 94007dc7da | |||
|
|
7145a0b1cd | ||
| 77948e93b6 | |||
|
|
07cc31ede3 | ||
|
|
1051f05cce | ||
| 159aac6a2e | |||
|
|
85367e844d | ||
|
|
d7879a654a |
@@ -51,6 +51,12 @@ router.route("/filter/:term")
|
||||
res.json(result).status(200).end();
|
||||
});
|
||||
})
|
||||
router.route("/random/:count")
|
||||
.get(passport.authenticate("jwt", { session: false }), (req, res) => {
|
||||
database.albums.randomCovers(req.params.count, 64, (result) => {
|
||||
res.json(result).status(200).end();
|
||||
});
|
||||
})
|
||||
|
||||
router.route("/:id")
|
||||
.get(checkGuest, (req, res) => {
|
||||
|
||||
@@ -56,9 +56,9 @@ router
|
||||
if (radio) {
|
||||
if (req.files.file) {
|
||||
resize_image_for_radio(req.files.file.data, (result) => {
|
||||
radio.cover32 = result.cover32;
|
||||
radio.cover64 = result.cover64;
|
||||
radio.cover128 = result.cover128;
|
||||
radio.covers.cover32 = result.cover32;
|
||||
radio.covers.cover64 = result.cover64;
|
||||
radio.covers.cover128 = result.cover128;
|
||||
database.radios.update(radio);
|
||||
res.json(radio).end();
|
||||
});
|
||||
|
||||
@@ -138,11 +138,6 @@ router
|
||||
|
||||
router
|
||||
.route("/history")
|
||||
.get(passport.authenticate("jwt", { session: false }), (req, res) => {
|
||||
database.historyList(req.user._id, result => {
|
||||
res.json(result).end();
|
||||
});
|
||||
})
|
||||
.post(passport.authenticate("jwt", { session: false }), (req, res) => {
|
||||
let item = req.body;
|
||||
item.userId = req.user._id;
|
||||
@@ -159,6 +154,31 @@ router
|
||||
});
|
||||
});
|
||||
|
||||
router
|
||||
.route("/progress")
|
||||
.post(passport.authenticate("jwt", { session: false }), (req, res) => {
|
||||
let item = req.body;
|
||||
item.userId = req.user._id;
|
||||
database.progress.update(item);
|
||||
res.status(200).end();
|
||||
});
|
||||
|
||||
router
|
||||
.route("/progress/:parent")
|
||||
.get(passport.authenticate("jwt", { session: false }), (req, res) => {
|
||||
database.progress.get(req.params.parent, result => {
|
||||
res.json(result).end();
|
||||
});
|
||||
})
|
||||
.delete(passport.authenticate("jwt", { session: false }), (req, res) => {
|
||||
let item = {
|
||||
parentId: req.params.parent,
|
||||
userId: req.user._id
|
||||
}
|
||||
database.progress.delete(item);
|
||||
res.status(200).end();
|
||||
});
|
||||
|
||||
router
|
||||
.route("/settings")
|
||||
.put(passport.authenticate("jwt", { session: false }), (req, res) => {
|
||||
|
||||
@@ -96,7 +96,7 @@ router.route("/:id/stream")
|
||||
router.route("/:id/stream/:rate/:audioIndex")
|
||||
.get((req, res) => {
|
||||
if (!server.lists.video_quality.includes(req.params.rate)) {
|
||||
req.end();
|
||||
res.end();
|
||||
}
|
||||
|
||||
let video = getFileName(req);
|
||||
|
||||
@@ -101,7 +101,7 @@ app.use(fileUpload({
|
||||
}));
|
||||
const corsOptions = {
|
||||
origin: (origin, callback) => {
|
||||
if (!origin || config.allowed_domains.indexOf(origin.replace(/:\d*$/g, "")) !== -1) {
|
||||
if (!origin || config.domain == origin.replace(/:\d*$/g, "") || config.allowed_domains.indexOf(origin.replace(/:\d*$/g, "")) !== -1) {
|
||||
callback(null, true);
|
||||
} else {
|
||||
database.system.domains((domains) => {
|
||||
|
||||
@@ -310,4 +310,27 @@ exports.empty = function (callback) {
|
||||
.toArray((err, result) => {
|
||||
callback(result.filter(f => !f.tracks || f.tracks.length == 0));
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
exports.randomCovers = function (count, size, callback) {
|
||||
dbo
|
||||
.collection("albums")
|
||||
.find({ "covers.cover64": { $exists: true } })
|
||||
.project({ "covers.cover64": true })
|
||||
.toArray((err, result) => {
|
||||
if (result.length > count) {
|
||||
let res = [];
|
||||
while (count-- > 0) {
|
||||
let rnd = randomNumber(0, result.length);
|
||||
res.push(result[rnd]);
|
||||
}
|
||||
callback(res);
|
||||
} else {
|
||||
callback(result);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function randomNumber(min, max) {
|
||||
return Math.floor(Math.random() * (max - min) + min);
|
||||
}
|
||||
@@ -62,6 +62,9 @@ exports.artists = artists;
|
||||
const boxes = require("./boxes");
|
||||
exports.boxes = boxes;
|
||||
|
||||
const progress = require("./progress");
|
||||
exports.progress = progress;
|
||||
|
||||
const videos = require("./videos");
|
||||
exports.videos = videos;
|
||||
|
||||
|
||||
27
services/database/progress.js
Normal file
27
services/database/progress.js
Normal file
@@ -0,0 +1,27 @@
|
||||
const { ObjectId } = require('mongodb');
|
||||
const connector = require("./CONNECTOR");
|
||||
var dbo;
|
||||
connector.connect().then((ret) => {
|
||||
dbo = ret;
|
||||
});
|
||||
|
||||
exports.get = function (parentId, callback) {
|
||||
dbo.collection("progress")
|
||||
.findOne({ parentId: parentId }, (err, result) => {
|
||||
if (err) throw err;
|
||||
callback(result);
|
||||
});
|
||||
}
|
||||
exports.update = function (item) {
|
||||
dbo.collection("progress").deleteMany({ userId: ObjectId(item.userId), parentId: item.parentId }, () => {
|
||||
dbo.collection("progress").insertOne(item, (err) => {
|
||||
if (err) throw err;
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.delete = function (item) {
|
||||
dbo.collection("progress").deleteMany({ userId: ObjectId(item.userId), parentId: item.parentId }, (err) => {
|
||||
if (err) throw err;
|
||||
});
|
||||
}
|
||||
@@ -13,6 +13,9 @@ exports.collection = function (callback) {
|
||||
.toArray((err, result) => {
|
||||
result.forEach(item => {
|
||||
item.type = "radio";
|
||||
if (!item.covers) {
|
||||
item.covers = {};
|
||||
}
|
||||
});
|
||||
callback(result);
|
||||
});
|
||||
@@ -23,6 +26,9 @@ exports.byId = function (id, callback) {
|
||||
.collection("radios")
|
||||
.findOne({ _id: ObjectId(id) }, (err, result) => {
|
||||
if (err) throw err;
|
||||
if (!result.covers) {
|
||||
result.covers = {};
|
||||
}
|
||||
callback(result);
|
||||
});
|
||||
};
|
||||
@@ -63,9 +69,7 @@ exports.update = function (radio, callback) {
|
||||
$set: {
|
||||
name: radio.name,
|
||||
url: radio.url,
|
||||
cover32: radio.cover32,
|
||||
cover64: radio.cover64,
|
||||
cover128: radio.cover128
|
||||
covers: radio.covers
|
||||
}
|
||||
},
|
||||
{ upsert: false },
|
||||
|
||||
@@ -97,17 +97,27 @@ exports.mostListened = function (filter, callback) {
|
||||
}
|
||||
}, { $match: { "album.visibility": { $in: filter } } });
|
||||
} else {
|
||||
aggregate.unshift({ $match: { type: 'track' } });
|
||||
}
|
||||
aggregate.push({ $sort: { counter: -1, _id: -1 } }, { $limit: 6 })
|
||||
dbo.collection("history")
|
||||
.find()
|
||||
.project({ _id: true })
|
||||
.sort({ _id: -1 })
|
||||
.limit(1000)
|
||||
.toArray((err, ids) => {
|
||||
let arr = ids.map(h => h._id);
|
||||
|
||||
aggregate.unshift({ $match: { type: 'track', _id: { $in: arr } } });
|
||||
aggregate.push({ $sort: { counter: -1 } }, { $limit: 6 })
|
||||
|
||||
dbo
|
||||
.collection("history")
|
||||
.aggregate(aggregate, {
|
||||
allowDiskUse: true
|
||||
})
|
||||
.toArray((err, result) => {
|
||||
if (err) throw err;
|
||||
callback(result);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
dbo
|
||||
.collection("history")
|
||||
.aggregate(aggregate, {
|
||||
allowDiskUse: true
|
||||
})
|
||||
.toArray((err, result) => {
|
||||
if (err) throw err;
|
||||
callback(result);
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user