music: no logic yet just soundcloud client id grabbing
This commit is contained in:
parent
a066ab27c1
commit
4ab7307ba7
1 changed files with 46 additions and 0 deletions
46
src/modules/music.js
Normal file
46
src/modules/music.js
Normal file
|
@ -0,0 +1,46 @@
|
|||
const fetch = require("node-fetch");
|
||||
const ytdl = require("ytdl-core");
|
||||
const Eris = require("eris");
|
||||
|
||||
const REGEX_YOUTUBE = /^(https?:\/\/)?(www\.)?(youtube\.com|youtu\.?be)\/.+$/;
|
||||
const REGEX_YOUTUBE_PLAYLIST =
|
||||
/^(https?:\/\/)?(www\.)?(youtube\.com|youtu\.?be)\/playlist\?list=(.+)$/;
|
||||
const REGEX_YOUTUBE_PLAYLIST_SHORT = /^PL[a-zA-Z0-9-_]{1,32}$/;
|
||||
const REGEX_SOUNDCLOUD =
|
||||
/^((https?:\/\/)?(www\.|m\.)?soundcloud\.com\/|sc:).+\/.+$/;
|
||||
const REGEX_SOUNDCLOUD_PLAYLIST =
|
||||
/^((https?:\/\/)?(www\.|m\.)?soundcloud\.com\/|sc:).+\/(sets\/.+|likes|tracks)$/;
|
||||
const REGEX_FILE =
|
||||
/^(https?:\/\/)?.*\..*\/.+\.(mp3|ogg|flac|wav|webm|mp4|mov|mkv)$/;
|
||||
|
||||
let SOUNDCLOUD_CLIENTID;
|
||||
|
||||
hf.voiceStorage = hf.voiceStorage || new Eris.Collection();
|
||||
|
||||
// https://stackoverflow.com/a/12646864 § "Updating to ES6 / ECMAScript 2015"
|
||||
function shuffleArray(array) {
|
||||
for (let i = array.length - 1; i > 0; i--) {
|
||||
const j = Math.floor(Math.random() * (i + 1));
|
||||
[array[i], array[j]] = [array[j], array[i]];
|
||||
}
|
||||
}
|
||||
|
||||
async function getSoundcloudClientID() {
|
||||
if (SOUNDCLOUD_CLIENTID != null) {
|
||||
return SOUNDCLOUD_CLIENTID;
|
||||
}
|
||||
const page = await fetch("https://soundcloud.com").then((res) => res.text());
|
||||
const scripts = page
|
||||
.match(/<script crossorigin src="(.+?)"><\/script>/g)
|
||||
.reverse();
|
||||
for (const script of scripts) {
|
||||
const url = script.match(/src="(.+?)"/)[1];
|
||||
const contents = await fetch(url).then((res) => res.text());
|
||||
if (/,client_id:"(.+?)",/.test(contents)) {
|
||||
const client_id = contents.match(/,client_id:"(.+?)",/)[1];
|
||||
SOUNDCLOUD_CLIENTID = client_id;
|
||||
return SOUNDCLOUD_CLIENTID;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
Loading…
Reference in a new issue