Now Playing Working
Commented some annoying mpris debugs
This commit is contained in:
parent
5c955820dd
commit
f98a82240b
3 changed files with 60 additions and 50 deletions
|
@ -221,7 +221,7 @@ export class Store {
|
||||||
},
|
},
|
||||||
"lastfm": {
|
"lastfm": {
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"scrobble_after": 30,
|
"scrobble_after": 50,
|
||||||
"secrets": {
|
"secrets": {
|
||||||
"username": "",
|
"username": "",
|
||||||
"key": "",
|
"key": "",
|
||||||
|
|
|
@ -26,17 +26,10 @@ export default class lastfm {
|
||||||
*/
|
*/
|
||||||
private _lfm: any = null;
|
private _lfm: any = null;
|
||||||
private _authenticated: boolean = false;
|
private _authenticated: boolean = false;
|
||||||
|
private _scrobbleDelay: any = null;
|
||||||
private _utils: any = null;
|
private _utils: any = null;
|
||||||
private _activityCache: any = {
|
private _scrobbleCache: any = {};
|
||||||
details: '',
|
private _nowPlayingCache: any = {};
|
||||||
state: '',
|
|
||||||
largeImageKey: '',
|
|
||||||
largeImageText: '',
|
|
||||||
smallImageKey: '',
|
|
||||||
smallImageText: '',
|
|
||||||
instance: false
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Public Methods
|
* Public Methods
|
||||||
|
@ -74,9 +67,14 @@ export default class lastfm {
|
||||||
* Runs on song change
|
* Runs on song change
|
||||||
* @param attributes Music Attributes
|
* @param attributes Music Attributes
|
||||||
*/
|
*/
|
||||||
onNowPlayingItemDidChange(attributes: object): void {
|
onNowPlayingItemDidChange(attributes: any): void {
|
||||||
this._attributes = attributes
|
this._attributes = attributes
|
||||||
|
if (!attributes?.lfmTrack || !attributes?.lfmAlbum) {
|
||||||
|
this.verifyTrack(attributes)
|
||||||
|
return
|
||||||
|
}
|
||||||
this.scrobbleTrack(attributes)
|
this.scrobbleTrack(attributes)
|
||||||
|
this.updateNowPlayingTrack(attributes)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -139,7 +137,7 @@ export default class lastfm {
|
||||||
if (data) {
|
if (data) {
|
||||||
attributes.lfmAlbum = data
|
attributes.lfmAlbum = data
|
||||||
}
|
}
|
||||||
this.scrobbleTrack(attributes)
|
this.onNowPlayingItemDidChange(attributes)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
return this._lfm.track.getCorrection(attributes.artistName, attributes.name, (err: any, data: any) => {
|
return this._lfm.track.getCorrection(attributes.artistName, attributes.name, (err: any, data: any) => {
|
||||||
|
@ -151,7 +149,7 @@ export default class lastfm {
|
||||||
if (data) {
|
if (data) {
|
||||||
attributes.lfmTrack = data.correction.track
|
attributes.lfmTrack = data.correction.track
|
||||||
}
|
}
|
||||||
this.scrobbleTrack(attributes)
|
this.onNowPlayingItemDidChange(attributes)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,52 +162,64 @@ export default class lastfm {
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
private scrobbleTrack(attributes: any): void {
|
private scrobbleTrack(attributes: any): void {
|
||||||
if (!attributes?.lfmTrack || !attributes?.lfmAlbum) {
|
if (!this._authenticated || !attributes || (this._scrobbleCache.track === attributes.lfmTrack.name)) return;
|
||||||
this.verifyTrack(attributes)
|
|
||||||
return
|
if (this._scrobbleDelay) {
|
||||||
|
clearTimeout(this._scrobbleDelay);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this._authenticated || !attributes) return;
|
// Scrobble delay
|
||||||
// Scrobble
|
this._scrobbleDelay = setTimeout(() => {
|
||||||
|
|
||||||
const scrobble = {
|
// Scrobble
|
||||||
|
const scrobble = {
|
||||||
|
'artist': attributes.lfmTrack.artist.name,
|
||||||
|
'track': attributes.lfmTrack.name,
|
||||||
|
'album': attributes.lfmAlbum.name,
|
||||||
|
'albumArtist': attributes.lfmAlbum.artist,
|
||||||
|
'timestamp': new Date().getTime() / 1000,
|
||||||
|
'trackNumber': attributes.trackNumber,
|
||||||
|
'duration': attributes.durationInMillis / 1000,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Easy Debugging
|
||||||
|
if (!this._utils.getApp().isPackaged) {
|
||||||
|
console.debug(scrobble)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scrobble the track
|
||||||
|
this._lfm.track.scrobble(scrobble, (err: any, _res: any) => {
|
||||||
|
if (err) {
|
||||||
|
console.error(`[${lastfm.name}] [lastfm:scrobble] Scrobble failed: ${err.message}`);
|
||||||
|
} else {
|
||||||
|
console.debug(`[${lastfm.name}] [lastfm:scrobble] Track scrobbled: ${scrobble.artist} - ${scrobble.track}`);
|
||||||
|
this._scrobbleCache = scrobble
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, Math.round(attributes.durationInMillis * Math.min((this._utils.getStoreValue("lastfm.scrobble_after") / 100), 0.8)))
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateNowPlayingTrack(attributes: any): void {
|
||||||
|
if (!this._authenticated || !attributes || (this._nowPlayingCache.track === attributes.lfmTrack.name)) return;
|
||||||
|
|
||||||
|
const nowPlaying = {
|
||||||
'artist': attributes.lfmTrack.artist.name,
|
'artist': attributes.lfmTrack.artist.name,
|
||||||
'track': attributes.lfmTrack.name,
|
'track': attributes.lfmTrack.name,
|
||||||
'album': attributes.lfmAlbum.name,
|
'album': attributes.lfmAlbum.name,
|
||||||
'albumArtist': attributes.lfmAlbum.artist,
|
|
||||||
'timestamp': new Date().getTime() / 1000,
|
|
||||||
'trackNumber': attributes.trackNumber,
|
'trackNumber': attributes.trackNumber,
|
||||||
'duration': attributes.durationInMillis / 1000,
|
'duration': attributes.durationInMillis / 1000,
|
||||||
|
'albumArtist': attributes.lfmAlbum.artist,
|
||||||
}
|
}
|
||||||
if (!this._utils.getApp().isPackaged) {
|
|
||||||
console.debug(scrobble)
|
this._lfm.track.updateNowPlaying(nowPlaying, (err: any, res: any) => {
|
||||||
}
|
|
||||||
this._lfm.track.scrobble(scrobble, (err: any, res: any) => {
|
|
||||||
if (err) {
|
if (err) {
|
||||||
console.error(`[${lastfm.name}] [lastfm:scrobble] Scrobble failed: ${err.message}`);
|
console.error(`[${lastfm.name}] [lastfm:updateNowPlaying] Now Playing Update failed: ${err.message}`);
|
||||||
} else {
|
} else {
|
||||||
console.debug(`[${lastfm.name}] [lastfm:scrobble] Track scrobbled: ${res}`);
|
console.log(res)
|
||||||
|
console.debug(`[${lastfm.name}] [lastfm:updateNowPlaying] Now Playing Updated: ${nowPlaying.artist} - ${nowPlaying.track}`);
|
||||||
|
this._nowPlayingCache = nowPlaying
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this._activityCache = attributes
|
|
||||||
}
|
|
||||||
|
|
||||||
private updateNowPlaying(attributes: any): void {
|
|
||||||
if (!this._authenticated) return;
|
|
||||||
this._lfm.track.updateNowPlaying({
|
|
||||||
'artist': attributes.artistName,
|
|
||||||
'track': attributes.name,
|
|
||||||
'album': attributes.albumName,
|
|
||||||
'albumArtist': attributes.albumName,
|
|
||||||
'trackNumber': attributes.trackNumber,
|
|
||||||
'duration': attributes.duration / 1000,
|
|
||||||
}, function (err: any, scrobbled: any) {
|
|
||||||
if (err) {
|
|
||||||
return console.error('[LastFM] An error occurred while updating now playing', err);
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('[LastFM] Successfully updated now playing: ', scrobbled);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -37,7 +37,7 @@ export default class mpris {
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
private static runMediaEvent(type: string) {
|
private static runMediaEvent(type: string) {
|
||||||
console.debug(`[Plugin][${this.name}] ${type}.`);
|
// console.debug(`[Plugin][${this.name}] ${type}.`);
|
||||||
mpris.utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.${type}()`).catch(console.error)
|
mpris.utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.${type}()`).catch(console.error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,7 +188,7 @@ export default class mpris {
|
||||||
*/
|
*/
|
||||||
@mpris.linuxOnly
|
@mpris.linuxOnly
|
||||||
onPlaybackStateDidChange(attributes: object): void {
|
onPlaybackStateDidChange(attributes: object): void {
|
||||||
console.debug(`[Plugin][${mpris.name}] onPlaybackStateDidChange.`);
|
// console.debug(`[Plugin][${mpris.name}] onPlaybackStateDidChange.`);
|
||||||
mpris.updatePlayerState(attributes)
|
mpris.updatePlayerState(attributes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ export default class mpris {
|
||||||
*/
|
*/
|
||||||
@mpris.linuxOnly
|
@mpris.linuxOnly
|
||||||
onNowPlayingItemDidChange(attributes: object): void {
|
onNowPlayingItemDidChange(attributes: object): void {
|
||||||
console.debug(`[Plugin][${mpris.name}] onMetadataDidChange.`);
|
// console.debug(`[Plugin][${mpris.name}] onMetadataDidChange.`);
|
||||||
mpris.updatePlayer(attributes);
|
mpris.updatePlayer(attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue