summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorSibren Vasse2019-08-30 20:41:31 +0200
committerSibren Vasse2019-08-30 20:46:39 +0200
commit337cfbe3acf8cbae9c5e22446b454c77509fd554 (patch)
treedc0f8e51dcc14b061b618d1ebe137d9bc7c35e91
parent442d9599a8f47c1d4d242d15ef7661de677d3313 (diff)
downloadaur-337cfbe3acf8cbae9c5e22446b454c77509fd554.tar.gz
Add oauth and mpris patches
-rw-r--r--.SRCINFO8
-rw-r--r--0001-MPRIS-interface.patch115
-rw-r--r--PKGBUILD30
-rw-r--r--oauth.patch20
4 files changed, 162 insertions, 11 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 5dcbbd7178ac..bc53f76f972c 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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;
diff --git a/PKGBUILD b/PKGBUILD
index a21627744283..44db4e4b8416 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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)