initial commit
This commit is contained in:
parent
e2f1e68752
commit
3fcef5e619
|
@ -0,0 +1,2 @@
|
||||||
|
/node_modules/
|
||||||
|
/.idea/
|
|
@ -0,0 +1,123 @@
|
||||||
|
{
|
||||||
|
"name": "tidal-discord-rpc",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "tidal-discord-rpc",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"discord-rpc": "^4.0.1",
|
||||||
|
"tidalapi-ts": "github:ShuriZma/TidalAPI"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/bindings": {
|
||||||
|
"version": "1.5.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"dependencies": {
|
||||||
|
"file-uri-to-path": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/discord-rpc": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"node-fetch": "^2.6.1",
|
||||||
|
"ws": "^7.3.1"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"register-scheme": "github:devsnek/node-register-scheme"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/file-uri-to-path": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"node_modules/lodash": {
|
||||||
|
"version": "4.17.21",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/node-addon-api": {
|
||||||
|
"version": "1.7.2",
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"node_modules/node-fetch": {
|
||||||
|
"version": "2.6.7",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"whatwg-url": "^5.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "4.x || >=6.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"encoding": "^0.1.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"encoding": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/register-scheme": {
|
||||||
|
"version": "0.0.2",
|
||||||
|
"resolved": "git+ssh://git@github.com/devsnek/node-register-scheme.git#e7cc9a63a1f512565da44cb57316d9fb10750e17",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"dependencies": {
|
||||||
|
"bindings": "^1.3.0",
|
||||||
|
"node-addon-api": "^1.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tidalapi-ts": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "git+ssh://git@github.com/ShuriZma/TidalAPI.git#205fe5c9ac8e7a5c9ecd34798b3bc360c23d9505",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"lodash": "^4.17.20",
|
||||||
|
"node-fetch": "^2.6.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tr46": {
|
||||||
|
"version": "0.0.3",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/webidl-conversions": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"license": "BSD-2-Clause"
|
||||||
|
},
|
||||||
|
"node_modules/whatwg-url": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"tr46": "~0.0.3",
|
||||||
|
"webidl-conversions": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ws": {
|
||||||
|
"version": "7.5.9",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.3.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"bufferutil": "^4.0.1",
|
||||||
|
"utf-8-validate": "^5.0.2"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"bufferutil": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"utf-8-validate": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"name": "tidal-discord-rpc",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "src/index.js",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"main": "node src/index.js"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"discord-rpc": "^4.0.1",
|
||||||
|
"tidalapi-ts": "github:ShuriZma/TidalAPI"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,73 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/* eslint-disable no-console */
|
||||||
|
|
||||||
|
import {TidalAPI} from "tidalapi-ts";
|
||||||
|
import DiscordRPC from "discord-rpc";
|
||||||
|
import fs from "fs";
|
||||||
|
|
||||||
|
let token
|
||||||
|
fs.readFile('path-to-log-file', (err, data) => {
|
||||||
|
let matches = data.toString().match(/ey[A-z0-9\-]+\.[A-z0-9\-]+\.[A-z0-9\-]+/ig);
|
||||||
|
token = matches !== null ? matches[0] : '';
|
||||||
|
});
|
||||||
|
await new Promise(r => setTimeout(r, 100));
|
||||||
|
|
||||||
|
const api = new TidalAPI({
|
||||||
|
token: token,
|
||||||
|
countryCode: 'DE',
|
||||||
|
quality: 'LOSSLESS',
|
||||||
|
});
|
||||||
|
|
||||||
|
// Set this to your Client ID.
|
||||||
|
const clientId = 'client-id';
|
||||||
|
|
||||||
|
const rpc = new DiscordRPC.Client({ transport: 'ipc' });
|
||||||
|
|
||||||
|
async function setActivity() {
|
||||||
|
if (!rpc) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let startTimestamp = new Date();
|
||||||
|
|
||||||
|
let trackId = '';
|
||||||
|
fs.readFile('path-to-log-file', (err, data) => {
|
||||||
|
let matches = data.toString().match(/"trackId":(\d+)/ig);
|
||||||
|
trackId = matches !== null ? ((matches[1] ?? false) ? matches[1].match(/\d+/g)[0] : matches[0].match(/\d+/g)[0]) : '';
|
||||||
|
});
|
||||||
|
await new Promise(r => setTimeout(r, 100));
|
||||||
|
|
||||||
|
if (trackId !== '') {
|
||||||
|
const info = await api.getTrackInfo(trackId);
|
||||||
|
|
||||||
|
await rpc.setActivity({
|
||||||
|
details: info.title,
|
||||||
|
state: `${info.artist.name} - ${info.album.title}`,
|
||||||
|
startTimestamp,
|
||||||
|
largeImageKey: info.album.cover !== null ? api.getArtUrlSync(info.album.cover) : 'logo',
|
||||||
|
largeImageText: info.album.title,
|
||||||
|
smallImageKey: info.artists[0].picture !== null ? api.getArtUrlSync(info.artists[0].picture, 750, 750) : ((info.audioQuality === 'HI_RES' || info.audioQuality === 'LOSSLESS') ? info.audioQuality.toLocaleLowerCase() : 'play'),
|
||||||
|
smallImageText: info.artist.name,
|
||||||
|
instance: false,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
label: 'Listen to song on Tidal',
|
||||||
|
'url': info.url,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rpc.on('ready', async () => {
|
||||||
|
await setActivity();
|
||||||
|
|
||||||
|
fs.watch('path-to-log-file', function (event) {
|
||||||
|
if (event === 'change') {
|
||||||
|
setActivity();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
rpc.login({ clientId }).catch(console.error);
|
Loading…
Reference in New Issue