music start
This commit is contained in:
@ -9,6 +9,7 @@ async function search(query) {
|
|||||||
let data = sc.search(query);
|
let data = sc.search(query);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
// so um fuck lucida
|
// so um fuck lucida
|
||||||
// based on https://github.com/imputnet/cobalt/blob/58ea4aed01383ead74d5e32e75335eddc2f015be/api/src/processing/services/soundcloud.js
|
// based on https://github.com/imputnet/cobalt/blob/58ea4aed01383ead74d5e32e75335eddc2f015be/api/src/processing/services/soundcloud.js
|
||||||
|
|
||||||
@ -72,7 +73,7 @@ const findBestForPreset = (transcodings, preset) => {
|
|||||||
return inferior;
|
return inferior;
|
||||||
}
|
}
|
||||||
async function download(obj) {
|
async function download(obj) {
|
||||||
const clientId = await findClientID();
|
const clientId = cachedID.id;
|
||||||
if (!clientId) return { error: "fetch.fail" };
|
if (!clientId) return { error: "fetch.fail" };
|
||||||
|
|
||||||
let link = obj;
|
let link = obj;
|
||||||
@ -150,4 +151,4 @@ async function download(obj) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export { search, download };
|
export { search, download, findClientID };
|
||||||
28
index.js
28
index.js
@ -10,15 +10,21 @@ import compression from "compression";
|
|||||||
// import { accs, infdb, polytrack } from "./database.js";
|
// import { accs, infdb, polytrack } from "./database.js";
|
||||||
import { accs } from "./database.js";
|
import { accs } from "./database.js";
|
||||||
import { } from "./accounts/friend.js";
|
import { } from "./accounts/friend.js";
|
||||||
import { search, download } from "./accounts/music.js";
|
import { findClientID, search, download } from "./accounts/music.js";
|
||||||
import { banUser, removeAccount, verifyCookie, getUserFromCookie, createAccount, resetPassword, loginAccount, addBadge } from "./accounts/manage.js";
|
import { banUser, removeAccount, verifyCookie, getUserFromCookie, createAccount, resetPassword, loginAccount, addBadge } from "./accounts/manage.js";
|
||||||
import { } from "./accounts/misc.js";
|
import { } from "./accounts/misc.js";
|
||||||
import { getRawData, generateAccountPage, editProfile, saveData, getUsers, isAdmin, retrieveData } from "./accounts/profile.js";
|
import { getRawData, generateAccountPage, editProfile, saveData, getUsers, isAdmin, retrieveData } from "./accounts/profile.js";
|
||||||
import { callAI } from "./ai.js";
|
import { callAI } from "./ai.js";
|
||||||
|
import { Readable } from 'stream';
|
||||||
import os from "node:os";
|
import os from "node:os";
|
||||||
const __filename = fileURLToPath(import.meta.url);
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
const __dirname = dirname(__filename);
|
const __dirname = dirname(__filename);
|
||||||
|
|
||||||
|
await findClientID();
|
||||||
|
setInterval(async () => {
|
||||||
|
await findClientID();
|
||||||
|
}, 1000 * 60 * 20);
|
||||||
|
|
||||||
const port = process.env.PORT || 3000;
|
const port = process.env.PORT || 3000;
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
@ -160,6 +166,26 @@ app.post("/api/ai/sendMessage", async (req, res) => {
|
|||||||
// stream back reply
|
// stream back reply
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// music endpoints
|
||||||
|
app.get("/api/music/search", async (req, res) => {
|
||||||
|
res.status(200).send(await search(req.query.q))
|
||||||
|
})
|
||||||
|
|
||||||
|
app.use("/api/music/download", async (req, res, next) => {
|
||||||
|
// console.log()
|
||||||
|
let song = req.query.url;
|
||||||
|
song = song.replaceAll(" ", "");
|
||||||
|
const processor = Bun.spawn([
|
||||||
|
"yt-dlp",
|
||||||
|
"bestaudio[abr<=160]",
|
||||||
|
"-o", `-`,
|
||||||
|
"https://soundcloud.com/" + req.query.url
|
||||||
|
]);
|
||||||
|
for await (const chunk of processor.stdout) {
|
||||||
|
res.write(chunk);
|
||||||
|
}
|
||||||
|
res.end();
|
||||||
|
});
|
||||||
|
|
||||||
// friends endpoints
|
// friends endpoints
|
||||||
app.get("/api/friends/list", async (req, res) => {
|
app.get("/api/friends/list", async (req, res) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user