url param migrate, s1 do the cider.sh (rpc ln67)

This commit is contained in:
child_duckling 2022-01-15 10:43:50 -08:00
parent 4bb64e24c0
commit 19e9555096
3 changed files with 75 additions and 63 deletions

View file

@ -1,8 +1,8 @@
require('v8-compile-cache');
const {app, components} = require('electron'),
{resolve, join} = require("path"),
const { app, components } = require('electron'), { resolve, join } = require("path"),
CiderBase = require('./src/main/cider-base');
const customProtocols = require('./package.json').fileAssociations[0].protocols
console.log(customProtocols)
const comps = components;
@ -208,25 +208,28 @@ app.on('widevine-error', (error) => {
if (process.defaultApp) {
if (process.argv.length >= 2) {
app.setAsDefaultProtocolClient('cider', process.execPath, [resolve(process.argv[1])])
app.setAsDefaultProtocolClient('ame', process.execPath, [resolve(process.argv[1])])
app.setAsDefaultProtocolClient('itms', process.execPath, [resolve(process.argv[1])])
app.setAsDefaultProtocolClient('itmss', process.execPath, [resolve(process.argv[1])])
app.setAsDefaultProtocolClient('musics', process.execPath, [resolve(process.argv[1])])
app.setAsDefaultProtocolClient('music', process.execPath, [resolve(process.argv[1])])
customProtocols.forEach((customProtocol) => {
app.setAsDefaultProtocolClient(customProtocol, process.execPath, [resolve(process.argv[1])])
})
}
} else {
app.setAsDefaultProtocolClient('cider') // Custom AME Protocol
app.setAsDefaultProtocolClient('ame') // Custom AME Protocol
app.setAsDefaultProtocolClient('itms') // iTunes HTTP Protocol
app.setAsDefaultProtocolClient('itmss') // iTunes HTTPS Protocol
app.setAsDefaultProtocolClient('musics') // macOS Client Protocol
app.setAsDefaultProtocolClient('music') // macOS Client Protocol
/*
* cider - Custom Cider Protocol
* ame - Custom AME Protocol (Backwards Compat.)
* itms - iTunes HTTP Protocol
* itmss - iTunes HTTPS Protocol
* musics - macOS Client Protocol
* music - macOS Client Protocol
*/
customProtocols.forEach((customProtocol) => {
app.setAsDefaultProtocolClient(customProtocol)
})
}
app.on('open-url', (event, url) => {
event.preventDefault()
if (url.includes('ame://') || url.includes('itms://') || url.includes('itmss://') || url.includes('musics://') || url.includes('music://')) {
if (customProtocols.some(protocol => url.includes(protocol))) {
CiderBase.LinkHandler(url)
}
})
@ -236,8 +239,7 @@ app.on('second-instance', (_e, argv) => {
// Checks if first instance is authorized and if second instance has protocol args
argv.forEach((value) => {
if (value.includes('ame://') || value.includes('itms://') || value.includes('itmss://') || value.includes('musics://') || value.includes('music://')) {
console.warn(`[InstanceHandler][SecondInstanceHandler] Found Protocol!`)
if (customProtocols.some(protocol => value.includes(protocol))) {
CiderBase.LinkHandler(value);
}
})
@ -258,6 +260,3 @@ if (!app.requestSingleInstanceLock() && true) {
app.quit();
// app.isQuiting = true
}

View file

@ -102,7 +102,8 @@ 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'] = '*';}
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,17 +351,28 @@ const CiderBase = {
lastfm.authenticate()
}
} else {
const formattedSongID = startArgs.replace('ame://', '').replace('/', '');
console.warn(`[LinkHandler] Attempting to load song id: ${formattedSongID}`);
// setQueue can be done with album, song, url, playlist id
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: '${formattedSongID}'}).then(function(queue) {
MusicKit.getInstance().setQueue({ song: '${song}'}).then(function(queue) {
MusicKit.getInstance().play();
});
`).catch((err) => console.error(err));
}
}
}
},
async InitWebServer() {

View file

@ -64,7 +64,7 @@ module.exports = {
// console.log('[DiscordRPC][updateActivity] Updating Discord Activity.')
const listenURL = `https://applemusicelectron.com/p?id=${attributes.playParams.id}`
const listenURL = `https://applemusicelectron.com/p?id=${attributes.playParams.id}` // cider://play/s/[id] (for song)
//console.log(attributes)
let ActivityObject = {
details: attributes.name,