diff --git a/src/main/plugins/raop.ts b/optional/Plugins/raop.ts similarity index 100% rename from src/main/plugins/raop.ts rename to optional/Plugins/raop.ts diff --git a/package.json b/package.json index 46dd67f7..4b2b54da 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "cider", "applicationId": "Cider", "productName": "Cider", - "version": "1.4.5", + "version": "1.4.4", "description": "A new cross-platform Apple Music experience based on Electron and Vue.js written from scratch with performance in mind.", "license": "AGPL-3.0", "main": "./build/index.js", @@ -38,7 +38,6 @@ "@sentry/electron": "^3.0.7", "@sentry/integrations": "^6.19.6", "adm-zip": "0.4.10", - "airtunes2": "git+https://github.com/vapormusic/node_airtunes2.git", "castv2-client": "^1.2.0", "chokidar": "^3.5.3", "discord-rpc": "^4.0.1", diff --git a/src/ciderkit/public.js b/src/ciderkit/public.js new file mode 100644 index 00000000..d3c26637 --- /dev/null +++ b/src/ciderkit/public.js @@ -0,0 +1,26 @@ +const CiderKit = { + v1: { + musickit: { + async mkv3(route, body, options) { + let opts = { + method: 'POST', + cache: 'no-cache', + credentials: 'same-origin', + headers: { + 'Content-Type': 'application/json' + }, + redirect: 'follow', + referrerPolicy: 'no-referrer', + body: {} + } + opts.body = JSON.stringify({ + route: route, + body: body, + options: options + }) + let response = await fetch("http://localhost:9000/api/musickit/v3", opts); + return response.json() + } + } + } +} \ No newline at end of file diff --git a/src/i18n/zh_TW.json b/src/i18n/zh_TW.json index 5dd4bbd2..8d44cef4 100644 --- a/src/i18n/zh_TW.json +++ b/src/i18n/zh_TW.json @@ -328,10 +328,9 @@ "settings.option.lyrics.enableYoutubeLyrics": "播放 MV 時,使用 YouTube 歌詞", "settings.header.connectivity": "外部連接", "settings.header.connectivity.description": "調整 Cider 與外部的連接", - "settings.option.connectivity.discordRPC": "Discord 動態", "settings.option.connectivity.playbackNotifications": "歌曲播放通知", - "settings.header.connectivity.discordRPC.cider": "顯示正在使用 Cider", - "settings.header.connectivity.discordRPC.appleMusic": "顯示正在使用 Apple Music", + "settings.option.connectivity.discordRPC": "Discord 動態", + "settings.option.connectivity.discordRPC.clientName": "應用程式名稱", "settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 動態", "settings.option.connectivity.discordRPC.hideButtons": "隱藏 Discord 動態上的按鈕", "settings.option.connectivity.lastfmScrobble": "Last.FM Scrobbling 記錄", @@ -357,6 +356,9 @@ "settings.option.visual.transparent": "透明視窗框架", "settings.option.visual.transparent.description": "需主題有支援透明框架,且須重新啟動才會套用。", "settings.header.advanced": "進階", + "settings.header.connect": "同步", + "settings.option.connect.link_account": "開啟與 Cider Connect 同步", + "settings.option.connect.link_account.description": "將您的 Discord 帳戶與 Cider Connect 連接後,你可以儲存使用者資料,包括設定、等化器,並最終在完成後儲存更多資料。(正在進行中)", "spatial.notTurnedOn": "空間音訊目前是關閉狀態,請先開啟再使用。", "spatial.spatialProperties": "空間音訊屬性設定", "spatial.width": "寬度", diff --git a/src/main/base/wsapi.ts b/src/main/base/wsapi.ts index bb48d86a..a10fd529 100644 --- a/src/main/base/wsapi.ts +++ b/src/main/base/wsapi.ts @@ -157,6 +157,10 @@ export class wsapi { this._win.webContents.executeJavaScript(`MusicKit.getInstance().pause()`); response.message = "Paused"; break; + case "playpause": + this._win.webContents.executeJavaScript(`MusicKitInterop.playPause()`); + response.message = "Play/Pause"; + break case "play": this._win.webContents.executeJavaScript(`MusicKit.getInstance().play()`); response.message = "Playing"; diff --git a/src/renderer/main/wsapi_interop.js b/src/renderer/main/wsapi_interop.js index 563b2e30..d9477a23 100644 --- a/src/renderer/main/wsapi_interop.js +++ b/src/renderer/main/wsapi_interop.js @@ -1,6 +1,14 @@ const wsapi = { cache: {playParams: {id: 0}, status: null, remainingTime: 0}, playbackCache: {status: null, time: Date.now()}, + async v3(encoded = "") { + let decoded = atob(encoded); + let json = JSON.parse(decoded); + console.log(json) + let response = await (await MusicKit.getInstance().api.v3.music(json.route, json.body, json.options)) + let ret = response.data + return JSON.stringify(ret) + }, search(term, limit) { MusicKit.getInstance().api.search(term, {limit: limit, types: 'songs,artists,albums,playlists'}).then((results)=>{ ipcRenderer.send('wsapi-returnSearch', JSON.stringify(results))