thedesk/app/js/ui/spotify.js

205 lines
7.7 KiB
JavaScript
Raw Normal View History

2019-05-19 17:39:30 +10:00
function spotifyConnect() {
2018-03-15 06:42:48 +11:00
var auth = "https://accounts.spotify.com/authorize?client_id=0f18e54abe0b4aedb4591e353d3aff69&redirect_uri=https://thedesk.top/spotify-connect&response_type=code&scope=user-read-currently-playing";
var platform = localStorage.getItem("platform");
2019-05-19 17:39:30 +10:00
if (platform == "win32") {
postMessage(["openUrl", auth], "*")
postMessage(["sendSinmpleIpc", "quit"], "*")
2019-05-19 17:39:30 +10:00
} else {
auth = auth + "&state=code";
$("#spotify-code-show").removeClass("hide");
postMessage(["openUrl", auth], "*")
2019-05-19 17:39:30 +10:00
}
2018-03-15 06:42:48 +11:00
2018-04-01 07:00:27 +10:00
}
2019-05-19 17:39:30 +10:00
function spotifyAuth() {
var code = $("#spotify-code").val();
2018-04-01 07:00:27 +10:00
localStorage.setItem("spotify", "code");
localStorage.setItem("spotify-refresh", code);
$("#spotify-code-show").addClass("hide");
$("#spotify-enable").addClass("disabled");
$("#spotify-disable").removeClass("disabled");
2018-03-15 06:42:48 +11:00
}
2019-05-19 17:39:30 +10:00
function spotifyDisconnect() {
2018-03-15 06:42:48 +11:00
localStorage.removeItem("spotify");
localStorage.removeItem("spotify-refresh");
checkSpotify();
}
2019-05-19 17:39:30 +10:00
function checkSpotify() {
if (localStorage.getItem("spotify")) {
2018-03-15 06:42:48 +11:00
$("#spotify-enable").addClass("disabled");
$("#spotify-disable").removeClass("disabled");
2019-05-19 17:39:30 +10:00
} else {
2018-03-15 06:42:48 +11:00
$("#spotify-enable").removeClass("disabled");
$("#spotify-disable").addClass("disabled");
}
2019-05-19 17:39:30 +10:00
var content = localStorage.getItem("np-temp");
if (!content || content == "" || content == "null") {
var content = "#NowPlaying {song} / {album} / {artist}\n{url} #SpotifyWithTheDesk";
2018-04-01 07:00:27 +10:00
}
2018-03-18 02:00:53 +11:00
$("#np-temp").val(content);
2019-05-19 17:39:30 +10:00
var flag = localStorage.getItem("artwork");
if (flag) {
2018-06-12 01:44:28 +10:00
$("#awk_yes").prop("checked", true);
2019-05-19 17:39:30 +10:00
} else {
2018-06-12 01:44:28 +10:00
$("#awk_no").prop("checked", true);
}
}
2019-05-19 17:39:30 +10:00
function spotifyFlagSave() {
2018-06-12 01:44:28 +10:00
var awk = $("[name=awk]:checked").val();
2019-05-19 17:39:30 +10:00
if (awk == "yes") {
localStorage.setItem("artwork", "yes");
2019-06-07 02:11:04 +10:00
M.toast({ html: lang.lang_spotify_img, displayLength: 3000 })
2019-05-19 17:39:30 +10:00
} else {
2018-06-12 01:44:28 +10:00
localStorage.removeItem("artwork");
2019-06-07 02:11:04 +10:00
M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 })
2018-06-12 01:44:28 +10:00
}
2018-03-15 06:42:48 +11:00
}
2019-05-19 17:39:30 +10:00
function nowplaying(mode) {
if (mode == "spotify") {
var start = "https://thedesk.top/now-playing?at=" + localStorage.getItem("spotify") + "&rt=" + localStorage.getItem("spotify-refresh");
2018-04-10 02:22:08 +10:00
var at = localStorage.getItem("spotify");
2019-05-19 17:39:30 +10:00
if (at) {
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
}
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
console.table(json);
if (json.length < 1) {
return false;
}
var item = json.item;
var img = item.album.images[0].url;
var flag = localStorage.getItem("artwork");
if (flag) {
postMessage(["bmpImage", [img, 0]], "*")
2019-05-19 17:39:30 +10:00
}
var content = localStorage.getItem("np-temp");
if (!content || content == "" || content == "null") {
var content = "#NowPlaying {song} / {album} / {artist}\n{url}";
}
var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, item.name);
var regExp = new RegExp("{album}", "g");
content = content.replace(regExp, item.album.name);
var regExp = new RegExp("{artist}", "g");
content = content.replace(regExp, item.artists[0].name);
var regExp = new RegExp("{url}", "g");
content = content.replace(regExp, item.external_urls.spotify);
var regExp = new RegExp("{composer}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{hz}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{bitRate}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{lyricist}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{bpm}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{genre}", "g");
content = content.replace(regExp, "");
$("#textarea").val(content);
});
} else {
2019-06-22 02:06:32 +10:00
Swal.fire({
type: 'info',
title: lang.lang_spotify_acct
})
2018-03-15 06:42:48 +11:00
}
2019-05-19 17:39:30 +10:00
} else if (mode == "itunes") {
postMessage(["itunes", ""], "*")
}
}
function npCore(arg) {
if (arg.cmd) {
console.error(arg);
return;
}
console.table(arg);
var content = localStorage.getItem("np-temp");
if (!content || content == "" || content == "null") {
var content = "#NowPlaying {song} / {album} / {artist}\n{url}";
}
var flag = localStorage.getItem("artwork");
var platform = localStorage.getItem("platform");
if (platform == "win32") {
if (flag && arg.path) {
media(arg.path, "image/png", "new");
}
} else if (platform == "darwin") {
if (flag && arg.existsArtwork) {
media(arg.artworks[0].data, "image/png", "new");
}
2018-03-18 02:00:53 +11:00
}
var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, arg.name);
var regExp = new RegExp("{album}", "g");
content = content.replace(regExp, arg.album);
var regExp = new RegExp("{artist}", "g");
content = content.replace(regExp, arg.artist);
var regExp = new RegExp("{url}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{composer}", "g");
content = content.replace(regExp, arg.composer);
var regExp = new RegExp("{hz}", "g");
content = content.replace(regExp, arg.sampleRate / 1000 + "kHz");
var regExp = new RegExp("{lyricist}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{bpm}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{bitRate}", "g");
content = content.replace(regExp, arg.bitRate + "kbps");
var regExp = new RegExp("{genre}", "g");
content = content.replace(regExp, arg.genre);
$("#textarea").val(content);
2018-03-15 06:42:48 +11:00
}
2019-05-19 17:39:30 +10:00
function spotifySave() {
var temp = $("#np-temp").val();
2018-03-15 06:42:48 +11:00
localStorage.setItem("np-temp", temp);
2019-06-07 02:11:04 +10:00
M.toast({ html: lang.lang_spotify_np, displayLength: 3000 })
2018-03-15 06:42:48 +11:00
}
2019-05-19 17:39:30 +10:00
function npprovider() {
2019-01-27 01:27:35 +11:00
var provd = $("[name=npp]:checked").val();
2019-05-19 17:39:30 +10:00
if (!provd) {
2019-01-27 01:27:35 +11:00
if (localStorage.getItem("np_provider")) {
2019-05-19 17:39:30 +10:00
$("[value=" + localStorage.getItem("np_provider") + "]").prop("checked", true);
} else {
2019-01-27 01:27:35 +11:00
$("[value=AIMP]").prop("checked", true);
localStorage.setItem("np_provider", "AIMP");
}
2019-05-19 17:39:30 +10:00
} else {
2019-01-27 01:27:35 +11:00
if (provd != localStorage.getItem("np_provider")) {
2019-06-07 02:11:04 +10:00
M.toast({ html: lang.lang_setting_npprovide.replace("{{set}}", provd), displayLength: 3000 })
2019-01-27 01:27:35 +11:00
}
localStorage.setItem("np_provider", provd);
postMessage(["itunes", ["set", provd]], "*")
2019-01-27 01:27:35 +11:00
}
}
2019-05-19 17:39:30 +10:00
if (location.search) {
2018-03-15 06:42:48 +11:00
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
2019-05-19 17:39:30 +10:00
var mode = m[1];
var codex = m[2];
if (mode == "spotify") {
var coder = codex.split(":");
2018-03-15 06:42:48 +11:00
localStorage.setItem("spotify", coder[0]);
localStorage.setItem("spotify-refresh", coder[1]);
2019-05-19 17:39:30 +10:00
} else {
2018-03-15 06:42:48 +11:00
}
2019-05-19 17:39:30 +10:00
2018-05-20 16:17:10 +10:00
}
2019-05-19 17:39:30 +10:00
$("#npbtn").click(function () {
2018-05-20 16:17:10 +10:00
nowplaying('spotify');
});
2019-05-19 17:39:30 +10:00
$("#npbtn").bind('contextmenu', function () {
2018-05-20 16:17:10 +10:00
nowplaying('itunes');
return false;
2019-04-11 02:52:01 +10:00
});