diff options
author | Sibren Vasse | 2019-08-30 20:41:31 +0200 |
---|---|---|
committer | Sibren Vasse | 2019-08-30 20:46:39 +0200 |
commit | 337cfbe3acf8cbae9c5e22446b454c77509fd554 (patch) | |
tree | dc0f8e51dcc14b061b618d1ebe137d9bc7c35e91 | |
parent | 442d9599a8f47c1d4d242d15ef7661de677d3313 (diff) | |
download | aur-337cfbe3acf8cbae9c5e22446b454c77509fd554.tar.gz |
Add oauth and mpris patches
-rw-r--r-- | .SRCINFO | 8 | ||||
-rw-r--r-- | 0001-MPRIS-interface.patch | 115 | ||||
-rw-r--r-- | PKGBUILD | 30 | ||||
-rw-r--r-- | oauth.patch | 20 |
4 files changed, 162 insertions, 11 deletions
@@ -1,7 +1,7 @@ pkgbase = deezer pkgdesc = A proprietary music streaming service pkgver = 4.16.0 - pkgrel = 1 + pkgrel = 2 url = https://www.deezer.com/ arch = any license = custom:"Copyright (c) 2006-2018 Deezer S.A." @@ -17,12 +17,18 @@ pkgbase = deezer source = nodeIntegration.patch source = urls.patch source = menu-bar.patch + source = oauth.patch + source = 0001-MPRIS-interface.patch + source = https://github.com/SibrenVasse/deezer/raw/mpris/extra_node_modules.tar.xz md5sums = 5dd856378377ddc944ae99d3ca958016 md5sums = bb851102d63a9cb396b42d7a61c5104c md5sums = 2a0a5dd017a7a302cf927f01c9fdbe85 md5sums = c68c0f0a44afc016da5ac2a692bc48ca md5sums = 0bab4bf4a6802757b84efbb552a7875b md5sums = 2d7b015bfc85fe13174ba434da6bd1c1 + md5sums = fe75d3ae80ff12165400364c8bf6c9f0 + md5sums = 5c05a84c9436e3c8db74df3db821944c + md5sums = bf0abe1b196068808543a86f3e8bb2b0 pkgname = deezer diff --git a/0001-MPRIS-interface.patch b/0001-MPRIS-interface.patch new file mode 100644 index 000000000000..eef82addb1d9 --- /dev/null +++ b/0001-MPRIS-interface.patch @@ -0,0 +1,115 @@ +diff --git a/app/js/main/App/index.js b/app/js/main/App/index.js +index 94631c5..1026110 100644 +--- a/app/main.js ++++ b/app/main.js +@@ -2436,6 +2436,7 @@ + main_SchemeHandler.handleSchemeFromOpenUrl(url), + event.preventDefault(); + }), ++ external_electron_.app.commandLine.appendSwitch('disable-features', 'MediaSessionService'); + external_electron_.app.on("ready", () => { + external_electron_log_default.a.debug("App is ready"), + main_AutoUpdater.init(); +diff --git a/node_modules/electron-media-service/src/index.js b/node_modules/electron-media-service/src/index.js +index f4bdbe6..6171945 100644 +--- a/node_modules/electron-media-service/src/index.js ++++ b/node_modules/electron-media-service/src/index.js +@@ -14,6 +14,10 @@ switch (process.platform) { + module.exports = require('./win32'); + break; + } ++ case 'linux': { ++ module.exports = require('./linux'); ++ break; ++ } + default: { + break; + } +diff --git a/node_modules/electron-media-service/src/linux/index.js b/node_modules/electron-media-service/src/linux/index.js +new file mode 100644 +index 0000000..3935e1c +--- /dev/null ++++ b/node_modules/electron-media-service/src/linux/index.js +@@ -0,0 +1,82 @@ ++const { EventEmitter } = require('events'); ++const mpris = require('mpris-service'); ++ ++class MediaService extends EventEmitter { ++ constructor() { ++ super(); ++ this.player = mpris({ ++ name: 'deezer', ++ identity: 'Deezer desktop client', ++ supportedInterfaces: ['player'] ++ }); ++ this.player.canRaise = false; ++ this.player.canQuit = false; ++ this.player.canSeek = false; ++ this.player.canEditTracks = false; ++ this.player.playbackStatus = 'Stopped'; ++ this._started = false; ++ } ++ ++ _requireStart() { ++ if (!this.isStarted()) { ++ throw new Error('This method requires the media service be started before calling'); ++ } ++ } ++ ++ startService() { ++ this._started = true; ++ var _this = this; ++ var events = ['next', 'previous', 'pause', 'stop', 'play']; ++ events.forEach(function (eventName) { ++ _this.player.on(eventName, (arg) => { ++ if (arg === -1) { ++ _this.emit(eventName); ++ } else { ++ _this.emit(eventName, arg * 1000); ++ } ++ }); ++ }); ++ this.player.on('playpause', (arg) => { ++ if (arg === -1) { ++ _this.emit('playPause'); ++ } else { ++ _this.emit('playPause', arg * 1000); ++ } ++ }); ++ } ++ ++ stopService() { ++ this._requireStart(); ++ this._started = false; ++ } ++ ++ isStarted() { ++ return this._started; ++ } ++ ++ setMetaData({ ++ currentTime, ++ duration, ++ title, ++ artist, ++ album, ++ albumArt, ++ id, ++ state ++ }) { ++ this._requireStart(); ++ this.player.metadata = { ++ 'xesam:title': title, ++ 'xesam:album': album, ++ 'xesam:artist': artist, ++ 'mpris:artUrl': albumArt ++ } ++ if (state === 'playing') { ++ this.player.playbackStatus = 'Playing'; ++ } else { ++ this.player.playbackStatus = 'Stopped'; ++ } ++ } ++} ++ ++module.exports = MediaService; @@ -2,7 +2,7 @@ # Contributor: Ilya Gulya <ilyagulya@gmail.com> pkgname="deezer" pkgver=4.16.0 -pkgrel=1 +pkgrel=2 pkgdesc="A proprietary music streaming service" arch=('any') url="https://www.deezer.com/" @@ -10,20 +10,24 @@ license=('custom:"Copyright (c) 2006-2018 Deezer S.A."') depends=('electron') provides=('deezer') makedepends=('p7zip' 'asar' 'prettier' 'imagemagick') -source=( - "$pkgname-$pkgver-setup.exe::https://www.deezer.com/desktop/download/artifact/win32/x86/$pkgver" - "$pkgname.desktop" - systray.patch - nodeIntegration.patch - urls.patch - menu-bar.patch -) +source=("$pkgname-$pkgver-setup.exe::https://www.deezer.com/desktop/download/artifact/win32/x86/$pkgver" + "$pkgname.desktop" + systray.patch + nodeIntegration.patch + urls.patch + menu-bar.patch + oauth.patch + 0001-MPRIS-interface.patch + https://github.com/SibrenVasse/deezer/raw/mpris/extra_node_modules.tar.xz) md5sums=('5dd856378377ddc944ae99d3ca958016' 'bb851102d63a9cb396b42d7a61c5104c' '2a0a5dd017a7a302cf927f01c9fdbe85' 'c68c0f0a44afc016da5ac2a692bc48ca' '0bab4bf4a6802757b84efbb552a7875b' - '2d7b015bfc85fe13174ba434da6bd1c1') + '2d7b015bfc85fe13174ba434da6bd1c1' + 'fe75d3ae80ff12165400364c8bf6c9f0' + '5c05a84c9436e3c8db74df3db821944c' + 'bf0abe1b196068808543a86f3e8bb2b0') prepare() { # Extract app from installer @@ -50,6 +54,12 @@ prepare() { patch -p1 < "$srcdir/urls.patch" # Disable menu bar patch -p1 < "$srcdir/menu-bar.patch" + # Fix oauth login + patch -p1 < "$srcdir/oauth.patch" + + # Monkeypatch MPRIS D-Bus interface + patch -p1 < "$srcdir/0001-MPRIS-interface.patch" + tar -xvf "$srcdir/extra_node_modules.tar.xz" cd .. asar pack app app.asar diff --git a/oauth.patch b/oauth.patch new file mode 100644 index 000000000000..e48473e4dfff --- /dev/null +++ b/oauth.patch @@ -0,0 +1,20 @@ +--- a/app/main.js 2019-08-30 19:55:24.091850904 +0200 ++++ b/app/main.js 2019-08-30 20:24:34.256473021 +0200 +@@ -1760,7 +1760,7 @@ + } + getSchemePathFromArgs(args) { + if (args.length < 2) return !1; +- const arg = args[1]; ++ const arg = args[2]; + return this.getSchemePathFromArg(arg); + } + getSchemePathFromArg(arg) { +@@ -1819,7 +1819,7 @@ + } + handleSchemeFromNonSingleInstance(args) { + const schemePath = this.getSchemePathFromArgs(args); +- return "win32" == process.platform && !1 !== schemePath ++ return !1 !== schemePath + ? this.isNonPathAction(schemePath) + ? this.handleNonPathAction(schemePath) + : this.handlePath(schemePath) |