From ee7ca45b911264a10e0e38ca6b5c97589ce5caef Mon Sep 17 00:00:00 2001 From: cutls Date: Sun, 12 Jan 2020 11:38:28 +0900 Subject: [PATCH] npexec #208 --- app/js/ui/spotify.js | 257 ++++++++++++++++++++++--------------------- app/main/np.js | 32 +++--- 2 files changed, 148 insertions(+), 141 deletions(-) diff --git a/app/js/ui/spotify.js b/app/js/ui/spotify.js index f514def9..435a29be 100644 --- a/app/js/ui/spotify.js +++ b/app/js/ui/spotify.js @@ -1,189 +1,198 @@ function spotifyConnect() { - 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"); - if (platform == "win32") { - postMessage(["openUrl", auth], "*"); - postMessage(["sendSinmpleIpc", "quit"], "*"); + 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') + if (platform == 'win32') { + postMessage(['openUrl', auth], '*') + postMessage(['sendSinmpleIpc', 'quit'], '*') } else { - auth = auth + "&state=code"; - $("#spotify-code-show").removeClass("hide"); - postMessage(["openUrl", auth], "*"); + auth = auth + '&state=code' + $('#spotify-code-show').removeClass('hide') + postMessage(['openUrl', auth], '*') } } function spotifyAuth() { - var code = $("#spotify-code").val(); - localStorage.setItem("spotify", "code"); - localStorage.setItem("spotify-refresh", code); - $("#spotify-code-show").addClass("hide"); - $("#spotify-enable").addClass("disabled"); - $("#spotify-disable").removeClass("disabled"); + var code = $('#spotify-code').val() + localStorage.setItem('spotify', 'code') + localStorage.setItem('spotify-refresh', code) + $('#spotify-code-show').addClass('hide') + $('#spotify-enable').addClass('disabled') + $('#spotify-disable').removeClass('disabled') } function spotifyDisconnect() { - localStorage.removeItem("spotify"); - localStorage.removeItem("spotify-refresh"); - checkSpotify(); + localStorage.removeItem('spotify') + localStorage.removeItem('spotify-refresh') + checkSpotify() } function checkSpotify() { - if (localStorage.getItem("spotify")) { - $("#spotify-enable").addClass("disabled"); - $("#spotify-disable").removeClass("disabled"); + if (localStorage.getItem('spotify')) { + $('#spotify-enable').addClass('disabled') + $('#spotify-disable').removeClass('disabled') } else { - $("#spotify-enable").removeClass("disabled"); - $("#spotify-disable").addClass("disabled"); + $('#spotify-enable').removeClass('disabled') + $('#spotify-disable').addClass('disabled') } - var content = localStorage.getItem("np-temp"); - if (!content || content == "" || content == "null") { - var content = "#NowPlaying {song} / {album} / {artist}\n{url} #SpotifyWithTheDesk"; + var content = localStorage.getItem('np-temp') + if (!content || content == '' || content == 'null') { + var content = '#NowPlaying {song} / {album} / {artist}\n{url} #SpotifyWithTheDesk' } - $("#np-temp").val(content); - var flag = localStorage.getItem("artwork"); + $('#np-temp').val(content) + var flag = localStorage.getItem('artwork') if (flag) { - $("#awk_yes").prop("checked", true); + $('#awk_yes').prop('checked', true) } else { - $("#awk_no").prop("checked", true); + $('#awk_no').prop('checked', true) } } function spotifyFlagSave() { - var awk = $("[name=awk]:checked").val(); - if (awk == "yes") { - localStorage.setItem("artwork", "yes"); - M.toast({ html: lang.lang_spotify_img, displayLength: 3000 }); + var awk = $('[name=awk]:checked').val() + if (awk == 'yes') { + localStorage.setItem('artwork', 'yes') + M.toast({ html: lang.lang_spotify_img, displayLength: 3000 }) } else { - localStorage.removeItem("artwork"); - M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 }); + localStorage.removeItem('artwork') + M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 }) } } function nowplaying(mode) { - if (mode == "spotify") { - var start = "https://thedesk.top/now-playing?at=" + localStorage.getItem("spotify") + "&rt=" + localStorage.getItem("spotify-refresh"); - var at = localStorage.getItem("spotify"); + if (mode == 'spotify') { + var start = + 'https://thedesk.top/now-playing?at=' + + localStorage.getItem('spotify') + + '&rt=' + + localStorage.getItem('spotify-refresh') + var at = localStorage.getItem('spotify') if (at) { fetch(start, { - method: "GET", + method: 'GET', headers: { - "content-type": "application/json" + 'content-type': 'application/json' } }) .then(function(response) { if (!response.ok) { response.text().then(function(text) { - setLog(response.url, response.status, text); - }); + setLog(response.url, response.status, text) + }) } - return response.json(); + return response.json() }) .catch(function(error) { - todo(error); - setLog(start, "JSON", error); - console.error(error); + todo(error) + setLog(start, 'JSON', error) + console.error(error) }) .then(function(json) { - console.table(json); + console.table(json) if (json.length < 1) { - return false; + return false } - var item = json.item; - var img = item.album.images[0].url; - var flag = localStorage.getItem("artwork"); + var item = json.item + var img = item.album.images[0].url + var flag = localStorage.getItem('artwork') if (flag) { - postMessage(["bmpImage", [img, 0]], "*"); + postMessage(['bmpImage', [img, 0]], '*') } - var content = localStorage.getItem("np-temp"); - if (!content || content == "" || content == "null") { - var content = "#NowPlaying {song} / {album} / {artist}\n{url}"; + 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); - }); + 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 { Swal.fire({ - type: "info", + type: 'info', title: lang.lang_spotify_acct - }); + }) } - } else if (mode == "itunes") { - postMessage(["itunes", ""], "*"); + } else if (mode == 'itunes') { + postMessage(['itunes', ''], '*') } } function npCore(arg) { if (arg.cmd) { - console.error(arg); - return; + 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}"; + console.table(arg) + if (arg.raw) { + $('#textarea').val(arg.data + ' #nowplaying') + return true } - var flag = localStorage.getItem("artwork"); - var platform = localStorage.getItem("platform"); - if (platform == "win32") { + 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"); + media(arg.path, 'image/png', 'new') } - } else if (platform == "darwin") { + } else if (platform == 'darwin') { if (flag && arg.artwork) { - media(arg.artwork, "image/png", "new"); + media(arg.artwork, 'image/png', 'new') } } - var regExp = new RegExp("{song}", "g"); - content = content.replace(regExp, arg.name); - var regExp = new RegExp("{album}", "g"); + var regExp = new RegExp('{song}', 'g') + content = content.replace(regExp, arg.name) + var regExp = new RegExp('{album}', 'g') if (arg.album) { if (arg.album.name) { - content = content.replace(regExp, arg.album.name); + content = content.replace(regExp, arg.album.name) } } - 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); + 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) } function spotifySave() { - var temp = $("#np-temp").val(); - localStorage.setItem("np-temp", temp); - M.toast({ html: lang.lang_spotify_np, displayLength: 3000 }); + var temp = $('#np-temp').val() + localStorage.setItem('np-temp', temp) + M.toast({ html: lang.lang_spotify_np, displayLength: 3000 }) } if (location.search) { - var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/); - var mode = m[1]; - var codex = m[2]; - if (mode == "spotify") { - var coder = codex.split(":"); - localStorage.setItem("spotify", coder[0]); - localStorage.setItem("spotify-refresh", coder[1]); + var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/) + var mode = m[1] + var codex = m[2] + if (mode == 'spotify') { + var coder = codex.split(':') + localStorage.setItem('spotify', coder[0]) + localStorage.setItem('spotify-refresh', coder[1]) } else { } } diff --git a/app/main/np.js b/app/main/np.js index 8275e9c4..c77e99e7 100644 --- a/app/main/np.js +++ b/app/main/np.js @@ -2,11 +2,9 @@ function np(mainWindow) { const electron = require('electron') const join = require('path').join const app = electron.app - const fs = require('fs') - const fpath = join(app.getPath('userData'), 'npexec') - const npExec = fs.readFileSync(fpath, 'utf8') + const fs = require('fs') + const fpath = join(app.getPath('userData'), 'npexec') const ipc = electron.ipcMain - const { exec } = require('child_process') ipc.on('itunes', async (e, args) => { console.log('Access') @@ -18,25 +16,25 @@ function np(mainWindow) { try { const nowplaying = require('itunes-nowplaying-mac') let value = await nowplaying() - if(!value && npExec) { - exec(npExec, (error, stdout, stderr) => { - e.sender.webContents.send('itunes-np', stdout) - }) - } else { - const artwork = await nowplaying.getThumbnailBuffer(value.databaseID) - const base64 = artwork.toString('base64') - value.artwork = base64 - e.sender.webContents.send('itunes-np', value) - } + if (!value && npExec) { + const artwork = await nowplaying.getThumbnailBuffer(value.databaseID) + const base64 = artwork.toString('base64') + value.artwork = base64 + e.sender.webContents.send('itunes-np', value) + } } catch (error) { // エラーを返す console.error(error) - e.sender.webContents.send('itunes-np', error) + try { + const npExec = fs.readFileSync(fpath, 'utf8') + exec(npExec, (error, stdout, stderr) => { + e.sender.webContents.send('itunes-np', { raw: true, data: stdout }) + }) + } catch (e) {} } } else { } } - }) - + }) } exports.TheDeskNowPlaying = np