
* test * fix multiroom * attempt for fix rare cast bug * changes for local files: read below * added pouchdb-node * moved all logic for local files to src/main/providers/local * added new local library section on sidebar * removed dupe * added caching headers * fix * add path menu to settings-window * fix mxm for local * some test * some fix * clear this * clear log * add playlist folder class * sometest * fix * Auto focus search bar * use object instead of array for albums (#1219) * feat: 🌐 Update French language (#1218) * add pagination for library songs * Add 'go to' page * Make playlist search icon use hero color * Merge pull request #1 from vapormusic/patch-1 dont populate out-of-display doms * both infinite and paging * Add color to search button background * Add shadow to follow button * im dumb sorry * Add brightness effect of search button * add some delay to scroll v-observe-visibility * some multiroom fixes * somefixes * [Audio] Fix VBass & Added COCS * [Audio] COCS revision * some fix * fix m1 mac * fix m1 build * some fix regarding audiocontext * [Audio] Fix #1207 (discussions) Eliminates audio stuttering even when AudioContext is enabled. Make lyrics account for the extra latency introduced by Audio Lab. * idk what I did * apparently this no worki * should default to 0 * expose bitrate of localfiles * [Audio] Added CAP & Normalization behavior for local files * smh musickit * Expose more local files metadata + fix norm error * pokemon gotta catch them all * maikiwi is a clown confirmed * pokemon gotta catch them all v2 * pokemon gotta catch them all v5 * Update zh_TW.json (#1229) Fix errors, update zh-TW translation. * Change No Lyrics Message in Full Screen Player (#1210) * Modify term.noLyrics text in 5 files * Minor change in 3 files * Colorize sponsor buttons in about page Co-authored-by: ctaetcsh <48845980+ctaetcsh@users.noreply.github.com> * max size of more info panel dynamic * Add twitter social button for some developers in about page (#1232) * Big Chungus Window settings (#1230) * Initial Changes * I suposse this is the last * cryptofyre * Documentation * Revert "Big Chungus Window settings (#1230)" (#1233) This reverts commite133b2c38b
. * test * Just changed it and gonna leave for debugging * reimpe133b2c
, adjustments for macOS * resolve #1 * copied files * readded strings to en_US * adjustments to settings sidebar collapse * add multiplex * Update version.sh * Update style.css * dont break pls thx * swag * I forgot that (#1239) * Update zh_TW.json (#1236) Update TW language. * Update zh_CN.json (#1240) * because I can * Fix cider team buttons in about page * Update style.less * Float right looks better * support custom port via optional CIDER_PORT var * Scan Local Files now 46 times faster * Update .gitignore * cleanups * remove console time (1s/1600 tracks) * fix m1 * sometest * Update build-macos.yml * Fix absolutely unacceptable punctuation error (#1249) * ok * pray * revert mxm back to local * Update zh_CN.json (#1242) * Update de_DE.json (#1246) * Musixmatch fix (thx plank ily) * whoops * yes * whoops v2 * bump to e18.3.5 * don't give the lyric api id if local files * Update afterPack.js * ukie * Update afterPack.js * Update afterPack.js * how the fuck did this not throw an error * fix stupid svg smh * new mediaitem scaling method * added Maximum Element Scale * mediaitem square artwork res now adapts to window size * will not affect high dpi * fix now playing artwork * fix album genre names before: gets genre from 1st track now: gets genre from album data * clamped element scale to 1.5x * added caching for auth * adjustment to artist page * changed to v-show for list item vis * Bring back mxm lyrics (Fully tested) * fix mmx translation * fix settings view * remove useless args & nonexistent funcs * fix div hell * fixed missing end tag for local playlist * fix divs * Fix cider list * the amount of brain cells that I have lost because of mxm trans * WIP language filter * it was fun while it lasted, goodbye MXM languages * MXM changes * 4am code moments * move logic * fix lyrics translation & allow other lang * default store.ts mxm trans to be disabled * this is why you dont code at 4am * and this is why you should test your code before pushing * added Romanized langs to mxm trans * love how previous MXM changes are in vain till now * stop. uploading. this. * NEVER. CODE. AT. FOUR. AYE. EM. AGAIN. * test * Revert "test" This reverts commit256d06bbcc
. * did a funny * did another funny * yes * add prime symbol to apostrophe * Don't do anything if res != 200 * Recursive Folder Search in Cider Utils * 4am code moment * fix function (force recompile utils) * did a funny there * I need sleep * Update zh_CN.json (#1265) This is a big work * Update zh_TW.json (#1260) Update TW language. * performant logging is enabled by default * test getting rid of lyriccurrenttime * set timeout can go away now * boops forgot this * mxm moms * mxm moms * Revert "mxm moms" This reverts commit51fc09280e
. * README download link fix * Update vueapp.js * Fix settings menu (#1271) * remove unused pages * profile page (for search for now) * lol * updated recordLabel with i18n and root usage * Local Lossless Icon and more - add Cider-profile boilerplate - add local lossless icon -add hover for PPE and lossless Co-authored-by: Core <coredev-uk@users.noreply.github.com> * no coding at 4am * fix units for local lossless badge * fix units for local lossless badge * remove CAP icon for local files, cuz unsupported * mpris overhaul * Fix seeking in mpris * changed am section on sidebar to v-show allowing css manipulation * added class for css * new effect when entering fullscreen lyrics * fixes text wrapping on tab text * added is-album * linux is cooollll * Lyrics API migration * Update musickit to use api mirror by default * add div for app-playback-buttons * Add spatialization icon (#1276) * Add spatialization icon * that never happened * add checkmode func to webremote * whoops sorry * Updated config.yml * mogus * fix string matching * may Maikiwi bless your CI * MKV3 red * Go touch grass; * this was so unreadable lmao * add logic for showing spatialization icon * add space in lossless icon * Remove dead fallback token, add error log if capi call fails (#1289) I tested and the fallback key you are using is dead. 401s. Unusable. * Fix #1282 * Fix #1237 * fix default CAP * someone played with translation code * lmao yaz why * stop polluting my logs you lil POST * I18n (#1293) * Update es_ES * I18N * idk this only breaking now * added framework for c2 parity * fixes * Fix volume bar on miniplayer (#1297) * Update stale-issues.yml * removed loading bar, testing without hlscider * overwrite restriction * allow listennow "more like" nav to work * garbage gone * fix for primary-content linking * Update README.md Add QQ group info * Revert back to music metadata * gimp v2 * remove local files as experiment * just to be safe * world is now a better place * meltdown avoided * meltdown avoided * Revert "meltdown avoided" This reverts commit38e6f1b7fa
. * Revert "meltdown avoided" This reverts commit54cc6656d6
. * Revert "world is now a better place" This reverts commitc019bf9c63
. * remove quasar * add some shiz (#1313) * Update ru_RU.json keeping russian lang actual * ok * Add gradient to lyric-footer * *Commit en español Ñ (#1304) * i hate my life (#1307) * world is now a better place * meltdown avoided * meltdown avoided * stylize new listen now childs * full scale artwork, finally * dynamic width for search categories * hd all album work * Update afterPack.js * force hq quality * oops * attempt to fix * misc cleanup * why what * what was i thinking * fix duplicated text in listen now childs * Paginate/infinite scroll for albums, playlists (#1234) * Infinite scroll, pagination to album, playlists * move pagination below tracks * Make page size configurable * remove renderer * Mitigate songs / album slow app issue. * add ratings, library change to web remote (#1285) * Add compact artist header option (#1308) * Support compact artist header (optional) * Add required term Co-authored-by: h0ckerman <35598335+h0ckerman@users.noreply.github.com> Co-authored-by: vapormusic <vietanhfat@gmail.com> Co-authored-by: Monochromish <chillygamer7@gmail.com> Co-authored-by: Gabriel Davila <56521591+mefsaal@users.noreply.github.com> Co-authored-by: Core <64542347+coredev-uk@users.noreply.github.com> Co-authored-by: Maikiwi <stella@mai.kiwi> Co-authored-by: yazninja <yazlesean@gmail.com> Co-authored-by: booploops <49113086+booploops@users.noreply.github.com> Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Co-authored-by: Pedro Galhardo <pgalhardo@icloud.com> * obama (#1314) * Update ru_RU.json keeping russian lang actual * ok * Add gradient to lyric-footer * *Commit en español Ñ (#1304) * i hate my life (#1307) * world is now a better place * meltdown avoided * meltdown avoided * stylize new listen now childs * full scale artwork, finally * dynamic width for search categories * hd all album work * Update afterPack.js * force hq quality * oops * attempt to fix * misc cleanup * why what * what was i thinking * fix duplicated text in listen now childs * Paginate/infinite scroll for albums, playlists (#1234) * Infinite scroll, pagination to album, playlists * move pagination below tracks * Make page size configurable * remove renderer * Mitigate songs / album slow app issue. * add ratings, library change to web remote (#1285) * Add compact artist header option (#1308) * Support compact artist header (optional) * Add required term * improve pagination styling Co-authored-by: h0ckerman <35598335+h0ckerman@users.noreply.github.com> Co-authored-by: vapormusic <vietanhfat@gmail.com> Co-authored-by: Monochromish <chillygamer7@gmail.com> Co-authored-by: Gabriel Davila <56521591+mefsaal@users.noreply.github.com> Co-authored-by: Core <64542347+coredev-uk@users.noreply.github.com> Co-authored-by: Maikiwi <stella@mai.kiwi> Co-authored-by: yazninja <yazlesean@gmail.com> Co-authored-by: booploops <49113086+booploops@users.noreply.github.com> Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Co-authored-by: Pedro Galhardo <pgalhardo@icloud.com> Co-authored-by: yazninja <71800112+yazninja@users.noreply.github.com> * obama episode 2. (#1317) * Update ru_RU.json keeping russian lang actual * ok * Add gradient to lyric-footer * *Commit en español Ñ (#1304) * i hate my life (#1307) * world is now a better place * meltdown avoided * meltdown avoided * stylize new listen now childs * full scale artwork, finally * dynamic width for search categories * hd all album work * Update afterPack.js * force hq quality * oops * attempt to fix * misc cleanup * why what * what was i thinking * fix duplicated text in listen now childs * Paginate/infinite scroll for albums, playlists (#1234) * Infinite scroll, pagination to album, playlists * move pagination below tracks * Make page size configurable * remove renderer * Mitigate songs / album slow app issue. * add ratings, library change to web remote (#1285) * Add compact artist header option (#1308) * Support compact artist header (optional) * Add required term * improve pagination styling * Disable Fullscreen view when artist/album name is clicked. (#1315) * Disable Fullscreen view when artist/album name is clicked. idk why this change didn't exist * Seperate dash from album name * Replace `$root.showSearch()` with `app.appRoute('search')` `$root.showSearch()` prevents going back to previous page from sidebar. * Fix Anim (#1316) Co-authored-by: h0ckerman <35598335+h0ckerman@users.noreply.github.com> Co-authored-by: vapormusic <vietanhfat@gmail.com> Co-authored-by: Monochromish <chillygamer7@gmail.com> Co-authored-by: Gabriel Davila <56521591+mefsaal@users.noreply.github.com> Co-authored-by: Core <64542347+coredev-uk@users.noreply.github.com> Co-authored-by: Maikiwi <stella@mai.kiwi> Co-authored-by: yazninja <yazlesean@gmail.com> Co-authored-by: booploops <49113086+booploops@users.noreply.github.com> Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Co-authored-by: Pedro Galhardo <pgalhardo@icloud.com> Co-authored-by: Monochromish <79590499+Monochromish@users.noreply.github.com> * re add that i guess. github is fucked. * aa (#1320) * Update ru_RU.json keeping russian lang actual * ok * Add gradient to lyric-footer * *Commit en español Ñ (#1304) * i hate my life (#1307) * world is now a better place * meltdown avoided * meltdown avoided * stylize new listen now childs * full scale artwork, finally * dynamic width for search categories * hd all album work * Update afterPack.js * force hq quality * oops * attempt to fix * misc cleanup * why what * what was i thinking * fix duplicated text in listen now childs * Paginate/infinite scroll for albums, playlists (#1234) * Infinite scroll, pagination to album, playlists * move pagination below tracks * Make page size configurable * remove renderer * Mitigate songs / album slow app issue. * add ratings, library change to web remote (#1285) * Add compact artist header option (#1308) * Support compact artist header (optional) * Add required term * improve pagination styling * Disable Fullscreen view when artist/album name is clicked. (#1315) * Disable Fullscreen view when artist/album name is clicked. idk why this change didn't exist * Seperate dash from album name * Replace `$root.showSearch()` with `app.appRoute('search')` `$root.showSearch()` prevents going back to previous page from sidebar. * Fix Anim (#1316) * make tracks tab active (#1318) * welp that wasn't it. * Thnks (#1319) * Thnks * i need sleep Co-authored-by: h0ckerman <35598335+h0ckerman@users.noreply.github.com> Co-authored-by: vapormusic <vietanhfat@gmail.com> Co-authored-by: Monochromish <chillygamer7@gmail.com> Co-authored-by: Gabriel Davila <56521591+mefsaal@users.noreply.github.com> Co-authored-by: Core <64542347+coredev-uk@users.noreply.github.com> Co-authored-by: Maikiwi <stella@mai.kiwi> Co-authored-by: yazninja <yazlesean@gmail.com> Co-authored-by: booploops <49113086+booploops@users.noreply.github.com> Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Co-authored-by: Pedro Galhardo <pgalhardo@icloud.com> Co-authored-by: Monochromish <79590499+Monochromish@users.noreply.github.com> Co-authored-by: vapormusic <vietanhfat@gmail.com> Co-authored-by: booploops <49113086+booploops@users.noreply.github.com> Co-authored-by: yazninja <yazlesean@gmail.com> Co-authored-by: Pedro Galhardo <pedromgalhardo@tecnico.ulisboa.pt> Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Co-authored-by: Erwan <24718500+ErwanGit@users.noreply.github.com> Co-authored-by: Monochromish <chillygamer7@gmail.com> Co-authored-by: maikirakiwi <stella@mai.kiwi> Co-authored-by: yazninja <71800112+yazninja@users.noreply.github.com> Co-authored-by: 宥叡 <46503943+jay900604@users.noreply.github.com> Co-authored-by: Nathan Ritchie <48845980+ctaetcsh@users.noreply.github.com> Co-authored-by: Monochromish <79590499+Monochromish@users.noreply.github.com> Co-authored-by: Gabriel Davila <56521591+mefsaal@users.noreply.github.com> Co-authored-by: Core <64542347+coredev-uk@users.noreply.github.com> Co-authored-by: 椎名アヤネ <53814845+sakura0224@users.noreply.github.com> Co-authored-by: Jonathan Fenske <929220+jfenske89@users.noreply.github.com> Co-authored-by: UnbreakCode <unbreakcode@gmail.com> Co-authored-by: SoNothing <git@sonothing.com> Co-authored-by: Core <coredev-uk@users.noreply.github.com> Co-authored-by: Amaru8 <52407090+Amaru8@users.noreply.github.com> Co-authored-by: rlaphoenix <pragma.exe@gmail.com> Co-authored-by: h0ckerman <35598335+h0ckerman@users.noreply.github.com> Co-authored-by: Pedro Galhardo <pgalhardo@icloud.com>
304 lines
11 KiB
TypeScript
304 lines
11 KiB
TypeScript
import {AutoClient} from 'discord-auto-rpc'
|
|
import {ipcMain} from "electron";
|
|
import fetch from 'electron-fetch'
|
|
|
|
export default class DiscordRPC {
|
|
|
|
/**
|
|
* Base Plugin Details (Eventually implemented into a GUI in settings)
|
|
*/
|
|
public name: string = 'Discord Rich Presence';
|
|
public description: string = 'Discord RPC plugin for Cider';
|
|
public version: string = '1.1.0';
|
|
public author: string = 'vapormusic/Core (Cider Collective)';
|
|
|
|
/**
|
|
* Private variables for interaction in plugins
|
|
*/
|
|
private _utils: any;
|
|
private _attributes: any;
|
|
private ready: boolean = false;
|
|
|
|
/**
|
|
* Plugin Initialization
|
|
*/
|
|
private _client: any = null;
|
|
private _activityCache: any = {
|
|
details: '',
|
|
state: '',
|
|
largeImageKey: '',
|
|
largeImageText: '',
|
|
smallImageKey: '',
|
|
smallImageText: '',
|
|
instance: false
|
|
};
|
|
|
|
/*******************************************************************************************
|
|
* Public Methods
|
|
* ****************************************************************************************/
|
|
|
|
/**
|
|
* Runs on plugin load (Currently run on application start)
|
|
*/
|
|
constructor(utils: any) {
|
|
this._utils = utils;
|
|
console.debug(`[Plugin][${this.name}] Loading Complete.`);
|
|
}
|
|
|
|
/**
|
|
* Runs on app ready
|
|
*/
|
|
onReady(_win: any): void {
|
|
const self = this
|
|
this.connect();
|
|
console.debug(`[Plugin][${this.name}] Ready.`);
|
|
ipcMain.on('updateRPCImage', async (_event, imageurl) => {
|
|
if (!this._utils.getStoreValue("general.privateEnabled")) {
|
|
let b64data = ""
|
|
let postbody = ""
|
|
if (imageurl.startsWith("/ciderlocalart")){
|
|
let port = await _win.webContents.executeJavaScript(
|
|
`app.clientPort`
|
|
);
|
|
console.log("http://localhost:"+port+imageurl)
|
|
const response = await fetch("http://localhost:"+port+imageurl)
|
|
b64data = (await response.buffer()).toString('base64');
|
|
postbody = JSON.stringify({data: b64data})
|
|
fetch('https://api.cider.sh/v1/images', {
|
|
|
|
method: 'POST',
|
|
body: postbody,
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'User-Agent': _win.webContents.getUserAgent()
|
|
},
|
|
})
|
|
.then(res => res.json())
|
|
.then(function (json) {
|
|
self._attributes["artwork"]["url"] = json.url
|
|
self.setActivity(self._attributes)
|
|
})
|
|
} else {
|
|
postbody = JSON.stringify({url: imageurl})
|
|
fetch('https://api.cider.sh/v1/images', {
|
|
|
|
method: 'POST',
|
|
body: postbody,
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'User-Agent': _win.webContents.getUserAgent()
|
|
},
|
|
})
|
|
.then(res => res.json())
|
|
.then(function (json) {
|
|
self._attributes["artwork"]["url"] = json.url
|
|
self.setActivity(self._attributes)
|
|
})
|
|
}
|
|
|
|
}
|
|
})
|
|
ipcMain.on("reloadRPC", () => {
|
|
console.log(`[DiscordRPC][reload] Reloading DiscordRPC.`);
|
|
this._client.destroy()
|
|
|
|
this._client.endlessLogin({clientId: this._utils.getStoreValue("connectivity.discord_rpc.client") === "Cider" ? '911790844204437504' : '886578863147192350'})
|
|
.then(() => {
|
|
this.ready = true
|
|
this._utils.getWindow().webContents.send("rpcReloaded", this._client.user)
|
|
if (this._activityCache && this._activityCache.details && this._activityCache.state) {
|
|
console.info(`[DiscordRPC][reload] Restoring activity cache.`);
|
|
this._client.setActivity(this._activityCache)
|
|
}
|
|
})
|
|
.catch((e: any) => console.error(`[DiscordRPC][reload] ${e}`));
|
|
// this.connect(true)
|
|
})
|
|
}
|
|
|
|
|
|
/**
|
|
* Runs on app stop
|
|
*/
|
|
onBeforeQuit(): void {
|
|
console.debug(`[Plugin][${this.name}] Stopped.`);
|
|
}
|
|
|
|
/**
|
|
* Runs on playback State Change
|
|
* @param attributes Music Attributes (attributes.status = current state)
|
|
*/
|
|
onPlaybackStateDidChange(attributes: object): void {
|
|
this._attributes = attributes
|
|
this.setActivity(attributes)
|
|
|
|
}
|
|
|
|
/**
|
|
* Runs on song change
|
|
* @param attributes Music Attributes
|
|
*/
|
|
onNowPlayingItemDidChange(attributes: object): void {
|
|
this._attributes = attributes
|
|
this.setActivity(attributes)
|
|
|
|
}
|
|
|
|
|
|
/*******************************************************************************************
|
|
* Private Methods
|
|
* ****************************************************************************************/
|
|
|
|
/**
|
|
* Connect to Discord RPC
|
|
* @private
|
|
*/
|
|
private connect() {
|
|
if (!this._utils.getStoreValue("connectivity.discord_rpc.enabled")) {
|
|
return;
|
|
}
|
|
|
|
// Create the client
|
|
this._client = new AutoClient({transport: "ipc"});
|
|
|
|
// Runs on Ready
|
|
this._client.once('ready', () => {
|
|
console.info(`[DiscordRPC][connect] Successfully Connected to Discord. Authed for user: ${this._client.user.id}.`);
|
|
|
|
if (this._activityCache && this._activityCache.details && this._activityCache.state) {
|
|
console.info(`[DiscordRPC][connect] Restoring activity cache.`);
|
|
this._client.setActivity(this._activityCache)
|
|
}
|
|
})
|
|
|
|
// Login to Discord
|
|
this._client.endlessLogin({clientId: this._utils.getStoreValue("connectivity.discord_rpc.client") === "Cider" ? '911790844204437504' : '886578863147192350'})
|
|
.then(() => {
|
|
this.ready = true
|
|
})
|
|
.catch((e: any) => console.error(`[DiscordRPC][connect] ${e}`));
|
|
}
|
|
|
|
/**
|
|
* Sets the activity
|
|
* @param attributes Music Attributes
|
|
*/
|
|
private setActivity(attributes: any) {
|
|
if (!this._client) {
|
|
return
|
|
}
|
|
|
|
// Check if show buttons is (true) or (false)
|
|
let activity: Object = {
|
|
details: this._utils.getStoreValue("connectivity.discord_rpc.details_format"),
|
|
state: this._utils.getStoreValue("connectivity.discord_rpc.state_format"),
|
|
largeImageKey: attributes?.artwork?.url?.replace('{w}', '1024').replace('{h}', '1024'),
|
|
largeImageText: attributes.albumName,
|
|
instance: false // Whether the activity is in a game session
|
|
}
|
|
|
|
// Filter the activity
|
|
activity = this.filterActivity(activity, attributes)
|
|
|
|
if (!this.ready) {
|
|
this._activityCache = activity
|
|
return
|
|
}
|
|
|
|
// Set the activity
|
|
if (!attributes.status && this._utils.getStoreValue("connectivity.discord_rpc.clear_on_pause")) {
|
|
this._client.clearActivity()
|
|
} else if (activity && this._activityCache !== activity) {
|
|
this._client.setActivity(activity)
|
|
}
|
|
this._activityCache = activity;
|
|
}
|
|
|
|
/**
|
|
* Filter the Discord activity object
|
|
*/
|
|
private filterActivity(activity: any, attributes: any): Object {
|
|
|
|
// Add the buttons if people want them
|
|
if (!this._utils.getStoreValue("connectivity.discord_rpc.hide_buttons")) {
|
|
activity.buttons = [
|
|
{label: 'Listen on Cider', url: attributes.url.cider},
|
|
{label: 'View on Apple Music', url: attributes.url.appleMusic}
|
|
] //To change attributes.url => preload/cider-preload.js
|
|
}
|
|
|
|
// Add the timestamp if its playing and people want them
|
|
if (!this._utils.getStoreValue("connectivity.discord_rpc.hide_timestamp") && attributes.status) {
|
|
activity.startTimestamp = Date.now() - (attributes?.durationInMillis - attributes?.remainingTime)
|
|
activity.endTimestamp = attributes.endTime
|
|
}
|
|
|
|
// If the user wants to keep the activity when paused
|
|
if (!this._utils.getStoreValue("connectivity.discord_rpc.clear_on_pause")) {
|
|
activity.smallImageKey = attributes.status ? 'play' : 'pause';
|
|
activity.smallImageText = attributes.status ? 'Playing' : 'Paused';
|
|
}
|
|
|
|
/**
|
|
* Works with:
|
|
* {artist}
|
|
* {composer}
|
|
* {title}
|
|
* {album}
|
|
* {trackNumber}
|
|
*/
|
|
const rpcVars: any = {
|
|
"artist": attributes.artistName,
|
|
"composer": attributes.composerName,
|
|
"title": attributes.name,
|
|
"album": attributes.albumName,
|
|
"trackNumber": attributes.trackNumber
|
|
}
|
|
|
|
// Replace the variables
|
|
Object.keys(rpcVars).forEach((key) => {
|
|
if (activity.details.includes(`{${key}}`)) {
|
|
activity.details = activity.details.replace(`{${key}}`, rpcVars[key])
|
|
}
|
|
if (activity.state.includes(`{${key}}`)) {
|
|
activity.state = activity.state.replace(`{${key}}`, rpcVars[key])
|
|
}
|
|
})
|
|
|
|
// Checks if the details is greater than 128 because some songs can be that long
|
|
if (activity.details && activity.details.length >= 128) {
|
|
activity.details = activity.details.substring(0, 125) + '...'
|
|
}
|
|
|
|
// Checks if the state is greater than 128 because some songs can be that long
|
|
if (activity.state && activity.state.length >= 128) {
|
|
activity.state = activity.state.substring(0, 125) + '...'
|
|
}
|
|
|
|
// Checks if the state is greater than 128 because some songs can be that long
|
|
if (activity.largeImageText && activity.largeImageText.length >= 128) {
|
|
activity.largeImageText = activity.largeImageText.substring(0, 125) + '...'
|
|
}
|
|
|
|
// Check large image
|
|
if (activity.largeImageKey == null || activity.largeImageKey === "" || activity.largeImageKey.length > 256) {
|
|
activity.largeImageKey = "cider";
|
|
}
|
|
|
|
// Timestamp
|
|
if (new Date(attributes.endTime).getTime() < 0) {
|
|
delete activity.startTime
|
|
delete activity.endTime
|
|
}
|
|
|
|
// not sure
|
|
if (!attributes.artistName) {
|
|
delete activity.state;
|
|
}
|
|
|
|
if (!activity.largeImageText || activity.largeImageText.length < 2) {
|
|
delete activity.largeImageText
|
|
}
|
|
return activity
|
|
}
|
|
}
|