From 7d4b9790fff9b213dec27cc37e3fbe1f3f0a9bc9 Mon Sep 17 00:00:00 2001 From: Justin Date: Sat, 20 Jun 2020 19:05:50 -0400 Subject: [PATCH] Add GPMDP and strip default foobar2k suffix --- src/players/foobar2000/foobarHandler_win32.js | 12 +++++- src/players/gpmdp/gpmdpHandler_win32.js | 42 +++++++++++++++++++ src/players/gpmdp/index.js | 12 ++++++ src/players/index.js | 4 +- 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 src/players/gpmdp/gpmdpHandler_win32.js create mode 100644 src/players/gpmdp/index.js diff --git a/src/players/foobar2000/foobarHandler_win32.js b/src/players/foobar2000/foobarHandler_win32.js index cbef03a..3f04865 100644 --- a/src/players/foobar2000/foobarHandler_win32.js +++ b/src/players/foobar2000/foobarHandler_win32.js @@ -22,11 +22,19 @@ class FoobarHandler extends Handler { return ''; } - if (processes[0].windowTitle === 'foobar2000') { + const windowTitle = processes[0].windowTitle; + + if (windowTitle === 'foobar2000') { return ''; } - return processes[0].windowTitle; + // remove the default [foobar2000] from the end of the window title + const defaultSuffix = '[foobar2000]'; + if (windowTitle.endsWith(defaultSuffix)) { + return windowTitle.split(defaultSuffix)[0].trim(); + } + + return windowTitle; } } diff --git a/src/players/gpmdp/gpmdpHandler_win32.js b/src/players/gpmdp/gpmdpHandler_win32.js new file mode 100644 index 0000000..42e7e26 --- /dev/null +++ b/src/players/gpmdp/gpmdpHandler_win32.js @@ -0,0 +1,42 @@ +import Handler from './../Handler'; +import { getProcessByName } from '@pendo324/get-process-by-name'; + +class GpmdpHandler extends Handler { + constructor() { + super({ + os: 'win32', + source: 'Desktop', + id: 'gpmdp', + name: 'Google Play Desktop Player' + }); + } + + async getTrack() { + const processes = ( + await getProcessByName('Google Play Music Desktop Player.exe') + ).filter((t) => t.windowTitle && t.windowTitle.length > 0); + + if (!processes.length) { + // TODO: add better check/error handling here + // alert('Tool needs updating.'); + return ''; + } + + const windowTitle = processes[0].windowTitle; + + if (windowTitle.startsWith('(Paused)')) { + return 'Paused.'; + } + + if ( + windowTitle === 'Google Play Music Desktop Player' || + windowTitle === 'crash service' + ) { + return ''; + } + + return windowTitle; + } +} + +export default GpmdpHandler; diff --git a/src/players/gpmdp/index.js b/src/players/gpmdp/index.js new file mode 100644 index 0000000..2cf336e --- /dev/null +++ b/src/players/gpmdp/index.js @@ -0,0 +1,12 @@ +import { remote } from 'electron'; +const { platform } = remote.require('os'); + +export const supportedPlatforms = ['win32']; + +const platformHandler = supportedPlatforms.find((p) => platform() === p); + +if (typeof platformHandler === 'undefined') { + throw new Error('Platform not supported.'); +} + +export default require(`./gpmdpHandler_${platformHandler}`).default; diff --git a/src/players/index.js b/src/players/index.js index 6a1a94c..4c58560 100644 --- a/src/players/index.js +++ b/src/players/index.js @@ -8,6 +8,7 @@ import * as mpcQt from './mpc-qt'; import * as mpcHc from './mpc-hc'; import * as mpv from './mpv'; import * as vlc from './vlc'; +import * as gpmdp from './gpmdp'; import * as Web from './Web'; @@ -18,7 +19,8 @@ export const desktop = { mpcQt, mpcHc, mpv, - vlc + vlc, + gpmdp }; export const web = {