From e9e4dd3db627db98eecf279ac250ba21765b6c10 Mon Sep 17 00:00:00 2001 From: vapormusic Date: Fri, 24 Dec 2021 13:32:50 +0700 Subject: [PATCH 1/7] fix some vids --- src/renderer/apple-hls.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/apple-hls.js b/src/renderer/apple-hls.js index a3a3398a..abb9a18a 100644 --- a/src/renderer/apple-hls.js +++ b/src/renderer/apple-hls.js @@ -23260,7 +23260,7 @@ } if (null != (l = "string" != typeof (h = g.pathwayID) ? im("invalid steering manifest PATHWAY-PRIORITY list item data type") : /^[\w\-\.]+$/.test(h) ? void 0 : im("steering manifest contains invalid pathway ID: " + h))) break; - if (g.hdcpLevel === "NONE" && (g.url.includes("gr230"))){ + if (g.hdcpLevel === "NONE" && (g.url.includes("gr230") || g.url.includes("gr210"))){ n.push(g)} } return { From 7322c7125f8fe9bd2773b99ec2172ad4d733aa8d Mon Sep 17 00:00:00 2001 From: vapormusic Date: Fri, 24 Dec 2021 15:04:42 +0700 Subject: [PATCH 2/7] save last played track, time and queue --- src/renderer/index.js | 46 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/renderer/index.js b/src/renderer/index.js index 67071787..27bd8bf9 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -332,6 +332,52 @@ const app = new Vue({ this.library.albums.displayListing = this.library.albums.listing } + window.onbeforeunload = function(e) { + window.localStorage.setItem("currentTrack",JSON.stringify(app.mk.nowPlayingItem)) + window.localStorage.setItem("currentTime",JSON.stringify(app.mk.currentPlaybackTime)) + window.localStorage.setItem("currentQueue",JSON.stringify(app.mk.queue.items)) + }; + + // load last played track + try { + lastItem = window.localStorage.getItem("currentTrack") + time = window.localStorage.getItem("currentTime") + queue = window.localStorage.getItem("currentQueue") + if (lastItem != null) { + lastItem = JSON.parse(lastItem) + var kind = lastItem.attributes.playParams.kind; + var truekind = (!kind.endsWith("s")) ? (kind + "s") : kind; + app.mk.setQueue({ [truekind]: [lastItem.attributes.playParams.id] }) + app.mk.mute() + setTimeout(() =>{ + app.mk.play().then(() => { + app.mk.pause().then(() => { + if (time != null) { + app.mk.seekToTime(time) + } + app.mk.unmute() + if (queue != null ){ + queue = JSON.parse(queue) + if (queue && queue.length > 0){ + let ids = queue.map ( e => (e.playParams ? e.playParams.id : (e.attributes.playParams ? e.attributes.playParams.id : '') )) + if (ids.length > 0) { + for (id of ids){ + try{ + app.mk.playLater({songs: [id] }) + } catch (err){} + } + } + } + } + + }) + + })},1000) + + } + + } catch (e) {console.log(e)} + MusicKit.getInstance().videoContainerElement = document.getElementById("apple-music-video-player") From af61a547a2a25348a10a6cb0ef87aa300457d0e6 Mon Sep 17 00:00:00 2001 From: vapormusic Date: Fri, 24 Dec 2021 15:11:17 +0700 Subject: [PATCH 3/7] fix lastItem to let --- src/renderer/index.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/renderer/index.js b/src/renderer/index.js index 27bd8bf9..c2f373ef 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -340,9 +340,9 @@ const app = new Vue({ // load last played track try { - lastItem = window.localStorage.getItem("currentTrack") - time = window.localStorage.getItem("currentTime") - queue = window.localStorage.getItem("currentQueue") + let lastItem = window.localStorage.getItem("currentTrack") + let time = window.localStorage.getItem("currentTime") + let queue = window.localStorage.getItem("currentQueue") if (lastItem != null) { lastItem = JSON.parse(lastItem) var kind = lastItem.attributes.playParams.kind; @@ -362,9 +362,9 @@ const app = new Vue({ let ids = queue.map ( e => (e.playParams ? e.playParams.id : (e.attributes.playParams ? e.attributes.playParams.id : '') )) if (ids.length > 0) { for (id of ids){ - try{ - app.mk.playLater({songs: [id] }) - } catch (err){} + try{ + app.mk.playLater({songs: [id] }) + } catch (err){} } } } @@ -372,7 +372,7 @@ const app = new Vue({ }) - })},1000) + })},1500) } From cebe6a8242873da57c4a9a12d74e80c568103cc0 Mon Sep 17 00:00:00 2001 From: booploops <49113086+booploops@users.noreply.github.com> Date: Fri, 24 Dec 2021 01:48:08 -0800 Subject: [PATCH 4/7] some backend changes --- index.js | 2 +- src/main/cider-base.js | 22 ++++++++++++++++------ src/renderer/index.js | 4 ++-- src/web-remote/index.html | 1 + 4 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 src/web-remote/index.html diff --git a/index.js b/index.js index cbb03925..d8991683 100644 --- a/index.js +++ b/index.js @@ -22,7 +22,7 @@ function CreateWindow() { /** CIDER **/ const ciderwin = require("./src/main/cider-base") app.win = ciderwin - app.win.CreateBrowserWindow() + app.win.Start() /** CIDER **/ } diff --git a/src/main/cider-base.js b/src/main/cider-base.js index 0303cbae..e20635c4 100644 --- a/src/main/cider-base.js +++ b/src/main/cider-base.js @@ -89,7 +89,11 @@ const ElectronSentry = require("@sentry/electron"); ElectronSentry.init({dsn: "https://68c422bfaaf44dea880b86aad5a820d2@o954055.ingest.sentry.io/6112214"}); const CiderBase = { - + async Start() { + this.clientPort = await getPort({port : 9000}); + this.CreateBrowserWindow() + }, + clientPort: 0, CreateBrowserWindow() { // Set default window sizes const mainWindowState = windowStateKeeper({ @@ -144,7 +148,7 @@ const CiderBase = { (details, callback) => { if (details.url.includes("hls.js")) { callback({ - redirectURL: "http://localhost:9000/apple-hls.js" + redirectURL: `http://localhost:${CiderBase.clientPort}/apple-hls.js` }) } else { callback({ @@ -165,7 +169,7 @@ const CiderBase = { callback({ requestHeaders: details.requestHeaders }) }) - let location = "http://localhost:9000/" + let location = `http://localhost:${CiderBase.clientPort}/` win.loadURL(location) win.on("closed", () => { win = null @@ -267,19 +271,25 @@ const CiderBase = { }, async InitWebServer() { - const webRemotePort = await getPort({port : 9000}); const webapp = express(); const webRemotePath = path.join(__dirname, '../renderer/'); webapp.set("views", path.join(webRemotePath, "views")); webapp.set("view engine", "ejs"); + webapp.use(function (req, res, next) { + // if not localhost + if (req.headers.host.includes("localhost") && req.headers["user-agent"].includes("Cider")) { + next(); + } + }); + webapp.use(express.static(webRemotePath)); webapp.get('/', function (req, res) { //res.sendFile(path.join(webRemotePath, 'index_old.html')); res.render("main", CiderBase.EnvironmentVariables) }); - webapp.listen(webRemotePort, function () { - console.log(`Web Remote listening on port ${webRemotePort}`); + webapp.listen(CiderBase.clientPort, function () { + console.log(`Cider client port: ${CiderBase.clientPort}`); }); }, diff --git a/src/renderer/index.js b/src/renderer/index.js index c2f373ef..fdea85dd 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -217,7 +217,7 @@ const app = new Vue({ "attributes": { "name": "Cider User", "handle": "CiderUser", - "artwork": { "url": "http://localhost:9000/assets/logocut.png" } + "artwork": { "url": "./assets/logocut.png" } } }, menuOpened: false, @@ -312,7 +312,7 @@ const app = new Vue({ "attributes": { "name": "Cider User", "handle": "CiderUser", - "artwork": { "url": "http://localhost:9000/assets/logocut.png" } + "artwork": { "url": "./assets/logocut.png" } } } } diff --git a/src/web-remote/index.html b/src/web-remote/index.html new file mode 100644 index 00000000..74bb16bc --- /dev/null +++ b/src/web-remote/index.html @@ -0,0 +1 @@ +Web Remote \ No newline at end of file From a1d2d94842ff3fa69be4f565e1dc0416ad3f747a Mon Sep 17 00:00:00 2001 From: booploops <49113086+booploops@users.noreply.github.com> Date: Fri, 24 Dec 2021 01:57:48 -0800 Subject: [PATCH 5/7] added app.isDev variable, privacy is now disabled by default unless dev is enabled --- index.js | 3 +++ src/main/cider-base.js | 4 ++++ src/renderer/index.js | 7 +++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index d8991683..df8a4246 100644 --- a/index.js +++ b/index.js @@ -36,6 +36,9 @@ app.commandLine.appendSwitch('js-flags', '--max-old-space-size=1024') app.on('ready', () => { if (app.isQuiting) { app.quit(); return; } console.log('[Cider] Application is Ready. Creating Window.') + if(!app.isPackaged) { + console.info('[Cider] Running in development mode.') + } CreateWindow() }); diff --git a/src/main/cider-base.js b/src/main/cider-base.js index e20635c4..d530c6d3 100644 --- a/src/main/cider-base.js +++ b/src/main/cider-base.js @@ -183,6 +183,10 @@ const CiderBase = { event.returnValue = process.platform }) + ipcMain.on("is-dev", (event) => { + event.returnValue = !app.isPackaged + }) + // IPC stuff (listeners) ipcMain.on('close', () => { // listen for close event win.close(); diff --git a/src/renderer/index.js b/src/renderer/index.js index fdea85dd..df2b904d 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -109,6 +109,7 @@ class NavigationEvent { const app = new Vue({ el: "#app", data: { + isDev: ipcRenderer.sendSync("is-dev"), drawertest: false, platform: "", mk: {}, @@ -210,7 +211,7 @@ const app = new Vue({ tmpVar: [], notification: false, chrome: { - hideUserInfo: false, + hideUserInfo: ipcRenderer.sendSync("is-dev"), artworkReady: false, userinfo: { "id": "", @@ -300,7 +301,9 @@ const app = new Vue({ this.mk = MusicKit.getInstance() this.mk.authorize() this.$forceUpdate() - this.mk.privateEnabled = true + if(this.isDev) { + this.mk.privateEnabled = true + } this.mk._services.timing.mode = 0 this.platform = ipcRenderer.sendSync('cider-platform'); // Set profile name From a4da82f95f77f72f8cd7adffbe50969695c1e385 Mon Sep 17 00:00:00 2001 From: booploops <49113086+booploops@users.noreply.github.com> Date: Fri, 24 Dec 2021 01:57:48 -0800 Subject: [PATCH 6/7] added app.isDev variable, privacy is now disabled by default unless dev is enabled --- index.js | 3 +++ src/main/cider-base.js | 4 ++++ src/renderer/index.js | 7 +++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index d8991683..df8a4246 100644 --- a/index.js +++ b/index.js @@ -36,6 +36,9 @@ app.commandLine.appendSwitch('js-flags', '--max-old-space-size=1024') app.on('ready', () => { if (app.isQuiting) { app.quit(); return; } console.log('[Cider] Application is Ready. Creating Window.') + if(!app.isPackaged) { + console.info('[Cider] Running in development mode.') + } CreateWindow() }); diff --git a/src/main/cider-base.js b/src/main/cider-base.js index e20635c4..d530c6d3 100644 --- a/src/main/cider-base.js +++ b/src/main/cider-base.js @@ -183,6 +183,10 @@ const CiderBase = { event.returnValue = process.platform }) + ipcMain.on("is-dev", (event) => { + event.returnValue = !app.isPackaged + }) + // IPC stuff (listeners) ipcMain.on('close', () => { // listen for close event win.close(); diff --git a/src/renderer/index.js b/src/renderer/index.js index fdea85dd..df2b904d 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -109,6 +109,7 @@ class NavigationEvent { const app = new Vue({ el: "#app", data: { + isDev: ipcRenderer.sendSync("is-dev"), drawertest: false, platform: "", mk: {}, @@ -210,7 +211,7 @@ const app = new Vue({ tmpVar: [], notification: false, chrome: { - hideUserInfo: false, + hideUserInfo: ipcRenderer.sendSync("is-dev"), artworkReady: false, userinfo: { "id": "", @@ -300,7 +301,9 @@ const app = new Vue({ this.mk = MusicKit.getInstance() this.mk.authorize() this.$forceUpdate() - this.mk.privateEnabled = true + if(this.isDev) { + this.mk.privateEnabled = true + } this.mk._services.timing.mode = 0 this.platform = ipcRenderer.sendSync('cider-platform'); // Set profile name From 2fca495a5d1b7cd1eb4efa743b317f76a92ca5b2 Mon Sep 17 00:00:00 2001 From: booploops <49113086+booploops@users.noreply.github.com> Date: Fri, 24 Dec 2021 16:46:34 -0800 Subject: [PATCH 7/7] moved some objects in backend --- index.js | 75 ++++++++++++++++++ src/main/cider-base.js | 76 ------------------- .../views/components/animatedartwork-view.ejs | 3 +- 3 files changed, 77 insertions(+), 77 deletions(-) diff --git a/index.js b/index.js index df8a4246..28be17fc 100644 --- a/index.js +++ b/index.js @@ -9,6 +9,81 @@ ElectronSentry.init({dsn: "https://68c422bfaaf44dea880b86aad5a820d2@o954055.inge app.commandLine.appendSwitch('enable-unsafe-webgpu'); +const configSchema = { + "general": { + "close_behavior": { + type: "number", + default: 0 + }, + "startup_behavior": { + type: "number", + default: 0 + }, + "discord_rpc": { + type: "number", + default: 1 + }, + }, + "behavior": { + "hw_acceleration": { + type: "number", + default: 0 // 0 = default, 1 = webgpu, 2 = gpu disabled + } + }, + "audio": { + "quality": { + type: "string", + default: "extreme", + }, + "seamless_audio": { + type: "boolean", + default: true, + } + }, + "visual": { + "theme": { + type: "string", + default: "" + }, + "scrollbars": { + type: "number", + default: 0 + }, + "refresh_rate": { + type: "number", + default: 0 + }, + "animated_artwork": { + type: "number", + default: 0 // 0 = always, 1 = limited, 2 = never + } + }, + "lyrics": { + "enable_mxm": { + type: "boolean", + default: false + }, + "mxm_language": { + type: "string", + default: "en" + } + }, + "lastfm": { + "enabled": { + type: "boolean", + default: false + }, + "scrobble_after": { + type: "number", + default: 30 + }, + "auth_token": { + type: "string", + default: "" + } + } +} + // Creating the Application Window and Calling all the Functions function CreateWindow() { if (app.isQuiting) { app.quit(); return; } diff --git a/src/main/cider-base.js b/src/main/cider-base.js index d530c6d3..b347941a 100644 --- a/src/main/cider-base.js +++ b/src/main/cider-base.js @@ -6,84 +6,8 @@ const path = require("path"); const windowStateKeeper = require("electron-window-state"); const os = require('os'); const Store = require("electron-store"); -const store = new Store(); const yt = require('youtube-search-without-api-key'); -const schema = { - "general": { - "close_behavior": { - type: "number", - default: 0 - }, - "startup_behavior": { - type: "number", - default: 0 - }, - "discord_rpc": { - type: "number", - default: 1 - }, - }, - "behavior": { - "hw_acceleration": { - type: "number", - default: 0 // 0 = default, 1 = webgpu, 2 = gpu disabled - } - }, - "audio": { - "quality": { - type: "string", - default: "extreme", - }, - "seamless_audio": { - type: "boolean", - default: true, - } - }, - "visual": { - "theme": { - type: "string", - default: "" - }, - "scrollbars": { - type: "number", - default: 0 - }, - "refresh_rate": { - type: "number", - default: 0 - }, - "animated_artwork": { - type: "number", - default: 0 // 0 = always, 1 = limited, 2 = never - } - }, - "lyrics": { - "enable_mxm": { - type: "boolean", - default: false - }, - "mxm_language": { - type: "string", - default: "en" - } - }, - "lastfm": { - "enabled": { - type: "boolean", - default: false - }, - "scrobble_after": { - type: "number", - default: 30 - }, - "auth_token": { - type: "string", - default: "" - } - } -} - // Analytics for debugging. const ElectronSentry = require("@sentry/electron"); ElectronSentry.init({dsn: "https://68c422bfaaf44dea880b86aad5a820d2@o954055.ingest.sentry.io/6112214"}); diff --git a/src/renderer/views/components/animatedartwork-view.ejs b/src/renderer/views/components/animatedartwork-view.ejs index a99b0c8c..63fe656f 100644 --- a/src/renderer/views/components/animatedartwork-view.ejs +++ b/src/renderer/views/components/animatedartwork-view.ejs @@ -20,7 +20,8 @@ enableCEA708Captions: false, emeEnabled: false, abrEwmaDefaultEstimate: 10000, - testBandwidth: false + testBandwidth: false, + capLevelToPlayerSize: true }; if (this.hls) { console.log('detached');