Merge branch 'musickit-v3' of https://github.com/ciderapp/Cider into musickit-v3

This commit is contained in:
vapormusic 2022-01-16 16:08:20 +07:00
commit 48839c6a4f
7 changed files with 86 additions and 69 deletions

View file

@ -101,8 +101,9 @@ const CiderBase = {
})
win.webContents.session.webRequest.onHeadersReceived((details, callback) => {
if(details.url.match(/^https:\/\/store-\d{3}\.blobstore\.apple\.com/) || details.url.startsWith("https://store-037.blobstore.apple.com")){
details.responseHeaders['Access-Control-Allow-Origin'] = '*';}
if (details.url.match(/^https:\/\/store-\d{3}\.blobstore\.apple\.com/) || details.url.startsWith("https://store-037.blobstore.apple.com")) {
details.responseHeaders['Access-Control-Allow-Origin'] = '*';
}
callback({ responseHeaders: details.responseHeaders })
})
@ -338,10 +339,11 @@ const CiderBase = {
},
LinkHandler: (startArgs) => {
if (!startArgs) return;
console.log("lfmtoken", String(startArgs))
if (String(startArgs).includes('auth')) {
let authURI = String(startArgs).split('/auth/')[1]
if (authURI.startsWith('lastfm')) { // If we wanted more auth options
console.log("lfmtoken", String(startArgs))
const authKey = authURI.split('lastfm?token=')[1];
app.cfg.set('lastfm.enabled', true);
app.cfg.set('lastfm.auth_token', authKey);
@ -349,15 +351,26 @@ const CiderBase = {
lastfm.authenticate()
}
} else {
const formattedSongID = startArgs.replace('ame://', '').replace('/', '');
console.warn(`[LinkHandler] Attempting to load song id: ${formattedSongID}`);
if (String(startArgs).includes('/play/')) { //Steer away from protocal:// specific conditionals
const playParam = String(startArgs).split('/play/')[1]
if (playParam.includes('s/')) { // setQueue can be done with album, song, url, playlist id
console.log(playParam)
let song = playParam.split('s/')[1]
console.warn(`[LinkHandler] Attempting to load song by id: ${song}`);
this.win.webContents.executeJavaScript(`
MusicKit.getInstance().setQueue({ song: '${song}'}).then(function(queue) {
MusicKit.getInstance().play();
});
`).catch((err) => console.error(err));
}
}
// setQueue can be done with album, song, url, playlist id
this.win.webContents.executeJavaScript(`
MusicKit.getInstance().setQueue({ song: '${formattedSongID}'}).then(function(queue) {
MusicKit.getInstance().play();
});
`).catch((err) => console.error(err));
}
},
@ -427,4 +440,4 @@ const CiderBase = {
}
module.exports = CiderBase;
module.exports = CiderBase;

View file

@ -1,4 +1,4 @@
const {app} = require('electron'),
const { app } = require('electron'),
DiscordRPC = require('discord-rpc')
module.exports = {
@ -7,16 +7,16 @@ module.exports = {
* Connects to Discord RPC
* @param {string} clientId
*/
connect: function (clientId) {
app.discord = {isConnected: false};
connect: function(clientId) {
app.discord = { isConnected: false };
if (app.cfg.get('general.discord_rpc') == 0 || app.discord.isConnected) return;
DiscordRPC.register(clientId) // Apparently needed for ask to join, join, spectate etc.
const client = new DiscordRPC.Client({transport: "ipc"});
app.discord = Object.assign(client, {error: false, activityCache: null, isConnected: false});
const client = new DiscordRPC.Client({ transport: "ipc" });
app.discord = Object.assign(client, { error: false, activityCache: null, isConnected: false });
// Login to Discord
app.discord.login({clientId})
app.discord.login({ clientId })
.then(() => {
app.discord.isConnected = true;
})
@ -37,7 +37,7 @@ module.exports = {
/**
* Disconnects from Discord RPC
*/
disconnect: function () {
disconnect: function() {
if (app.cfg.get('general.discord_rpc') == 0 || !app.discord.isConnected) return;
try {
@ -54,7 +54,7 @@ module.exports = {
* Sets the activity of the client
* @param {object} attributes
*/
updateActivity: function (attributes) {
updateActivity: function(attributes) {
if (app.cfg.get('general.discord_rpc') == 0) return;
if (!app.discord.isConnected) {
@ -64,8 +64,8 @@ module.exports = {
// console.log('[DiscordRPC][updateActivity] Updating Discord Activity.')
const listenURL = `https://applemusicelectron.com/p?id=${attributes.playParams.id}`
//console.log(attributes)
const listenURL = `https://cider.sh/p?s&id=${attributes.playParams.id}` // cider://play/s/[id] (for song)
//console.log(attributes)
let ActivityObject = {
details: attributes.name,
state: `by ${attributes.artistName}`,
@ -77,7 +77,7 @@ module.exports = {
smallImageText: (attributes.status ? 'Playing' : 'Paused'),
instance: true,
buttons: [
{label: "Listen on Cider", url: listenURL},
{ label: "Listen on Cider", url: listenURL },
]
};
if (ActivityObject.largeImageKey == "" || ActivityObject.largeImageKey == null) {
@ -139,4 +139,4 @@ module.exports = {
}
},
}
}

View file

@ -3180,9 +3180,9 @@ const app = new Vue({
element.onclick = app.LastFMAuthenticate;
},
LastFMAuthenticate() {
console.log("wag")
console.log("[LastFM] Received LastFM authentication callback")
const element = document.getElementById('lfmConnect');
window.open('https://www.last.fm/api/auth?api_key=174905d201451602407b428a86e8344d&cb=ame://auth/lastfm');
window.open('https://www.last.fm/api/auth?api_key=f9986d12aab5a0fe66193c559435ede3&cb=cider://auth/lastfm');
element.innerText = 'Connecting...';
/* Just a timeout for the button */

View file

@ -2929,6 +2929,8 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb {
.autoplay {
background: rgb(200 200 200 / 15%);
color:rgb(255 255 255);
font-size: larger;
appearance: none;
border: 0;
border-radius: 6px;

View file

@ -5,7 +5,7 @@
<h3 class="queue-header-text">Queue</h3>
</div>
<div class="col-auto flex-center">
<button class="autoplay" :style="{'background': app.mk.autoplayEnabled ? 'var(--keyColor)' : ''}" @click="app.mk.autoplayEnabled = !app.mk.autoplayEnabled">AUTO</button>
<button class="autoplay" :style="{'background': app.mk.autoplayEnabled ? 'var(--keyColor)' : ''}" @click="app.mk.autoplayEnabled = !app.mk.autoplayEnabled"></button>
</div>
</div>
<div class="queue-body">

View file

@ -142,8 +142,11 @@
@click="invokeDrawer('queue')"></button>
</div>
<div class="app-chrome-item generic">
<button class="playback-button--small lyrics" :class="{'active': drawer.panel == 'lyrics'}"
<template v-if="lyrics && lyrics != [] && lyrics.length > 0">
<button class="playback-button--small lyrics" :class="{'active': drawer.panel == 'lyrics'}"
@click="invokeDrawer('lyrics')"></button>
</template>
</div>
<div class="app-chrome-item full-height" v-if="chrome.windowControlPosition == 'right'">
<div class="window-controls">
@ -517,7 +520,7 @@
</div>
<transition name="drawertransition">
<div class="app-drawer" v-if="drawer.open && drawer.panel == 'lyrics'">
<div class="app-drawer" v-if="drawer.open && drawer.panel == 'lyrics' && lyrics && lyrics != [] && lyrics.length > 0">
<div class="bgArtworkMaterial">
<div class="bg-artwork-container">
<img class="bg-artwork a" :src="$store.state.artwork.playerLCD">
@ -708,4 +711,4 @@
<script src="https://cdn.jsdelivr.net/npm/resonance-audio/build/resonance-audio.min.js"></script>
<script src="/audio/audio.js?v=1"></script>
</body>
</html>
</html>