mirror of
https://github.com/Mastermindzh/tidal-hifi.git
synced 2025-09-10 13:54:41 +02:00
Compare commits
5 Commits
2.3.0
...
662ef6ad7b
Author | SHA1 | Date | |
---|---|---|---|
662ef6ad7b | |||
5313ab13d3 | |||
f43f227191 | |||
|
ae25d88e94 | ||
5ef6074015 |
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/setup-node@master
|
||||
with:
|
||||
node-version: 12
|
||||
node-version: 16
|
||||
- run: npm install
|
||||
- run: npm run build
|
||||
|
||||
@@ -22,7 +22,7 @@ jobs:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/setup-node@master
|
||||
with:
|
||||
node-version: 12
|
||||
node-version: 16
|
||||
- run: npm install
|
||||
- run: npm run build
|
||||
|
||||
@@ -32,6 +32,6 @@ jobs:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/setup-node@master
|
||||
with:
|
||||
node-version: 12
|
||||
node-version: 16
|
||||
- run: npm install
|
||||
- run: npm run build
|
||||
|
6
.github/workflows/release.yml
vendored
6
.github/workflows/release.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/setup-node@master
|
||||
with:
|
||||
node-version: 12
|
||||
node-version: 16
|
||||
- run: npm install
|
||||
- run: npm run build
|
||||
- uses: actions/upload-artifact@master
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/setup-node@master
|
||||
with:
|
||||
node-version: 12
|
||||
node-version: 16
|
||||
- run: npm install
|
||||
- run: npm run build
|
||||
- uses: actions/upload-artifact@master
|
||||
@@ -40,7 +40,7 @@ jobs:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/setup-node@master
|
||||
with:
|
||||
node-version: 12
|
||||
node-version: 16
|
||||
- run: npm install
|
||||
- run: npm run build
|
||||
- uses: actions/upload-artifact@master
|
||||
|
21
CHANGELOG.md
21
CHANGELOG.md
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## 2.5.0
|
||||
|
||||
- Notify-send now correctly shows "Tidal Hifi" as the program name
|
||||
|
||||
- Updated dependencies (including electron itself)
|
||||
|
||||
### known issues
|
||||
|
||||
- Requires older version of nodejs due to electron-builder (use lts/gallium)
|
||||
|
||||
### builds
|
||||
|
||||
updated to nodejs 16 in actions
|
||||
|
||||
## 2.4.0
|
||||
|
||||
- Added more mpris settings
|
||||
- Added instruction for rescrobbler to get last.fm working without sandbox mode
|
||||
|
||||
## 2.3.0
|
||||
|
||||
- Added a setting to minimize to tray on app close (off by default)
|
||||
@@ -21,7 +40,7 @@ moved to: [https://github.com/Mastermindzh/tidal-hifi-aur](https://github.com/Ma
|
||||
## 2.2.0
|
||||
|
||||
- The discord integration now adds a time remaining field based on the song duration
|
||||
- All fields (current, remaining, and url are also available in the API*)
|
||||
- All fields (current, remaining, and url are also available in the API\*)
|
||||
- the artist field is now correctly identified
|
||||
|
||||
* current time only updates on play/pause.
|
||||
|
@@ -20,6 +20,7 @@ The web version of [listen.tidal.com](https://listen.tidal.com) running in elect
|
||||
- [Integrations](#integrations)
|
||||
- [not included](#not-included)
|
||||
- [Known bugs](#known-bugs)
|
||||
- [last.fm doesn't work out of the box. Use rescrobbler as a workaround](#lastfm-doesnt-work-out-of-the-box-use-rescrobbler-as-a-workaround)
|
||||
- [Why](#why)
|
||||
- [Why not extend existing projects?](#why-not-extend-existing-projects)
|
||||
- [Special thanks to...](#special-thanks-to)
|
||||
@@ -96,7 +97,11 @@ It currently includes:
|
||||
|
||||
### Known bugs
|
||||
|
||||
- [Last.fm login doesn't work](https://github.com/Mastermindzh/tidal-hifi/issues/4).
|
||||
#### last.fm doesn't work out of the box. Use rescrobbler as a workaround
|
||||
|
||||
The last.fm login doesn't work, as is evident from the following issue: [Last.fm login doesn't work](https://github.com/Mastermindzh/tidal-hifi/issues/4).
|
||||
However, in that same issue you can read about a workaround using [rescrobbler](https://github.com/InputUsername/rescrobbled).
|
||||
For now that will be the default workaround.
|
||||
|
||||
## Why
|
||||
|
||||
|
@@ -34,3 +34,7 @@ mac:
|
||||
category: public.app-category.entertainment
|
||||
win:
|
||||
target: msi
|
||||
icon: build/icon.png
|
||||
artifactName: "tidalhifi"
|
||||
appId: com.rickvanlieshout.tidalhifi
|
||||
executableName: tidalhifi
|
||||
|
5215
package-lock.json
generated
5215
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
19
package.json
19
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tidal-hifi",
|
||||
"version": "2.3.0",
|
||||
"version": "2.5.0",
|
||||
"description": "Tidal on Electron with widevine(hifi) support",
|
||||
"main": "src/main.js",
|
||||
"scripts": {
|
||||
@@ -23,21 +23,20 @@
|
||||
"homepage": "https://github.com/Mastermindzh/tidal-hifi",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"discord-rpc": "^3.2.0",
|
||||
"electron-store": "^5.1.1",
|
||||
"discord-rpc": "^4.0.1",
|
||||
"electron-store": "^8.0.1",
|
||||
"express": "^4.17.1",
|
||||
"hotkeys-js": "^3.7.6",
|
||||
"mpris-service": "^2.1.0",
|
||||
"node-notifier": "^9.0.1",
|
||||
"hotkeys-js": "^3.8.7",
|
||||
"mpris-service": "^2.1.2",
|
||||
"node-notifier": "^10.0.0",
|
||||
"request": "^2.88.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@mastermindzh/prettier-config": "^1.0.0",
|
||||
"dot-prop": ">=4.2.1",
|
||||
"electron": "git+https://github.com/castlabs/electron-releases.git#v10.4.3-wvvmp",
|
||||
"electron-builder": "^21.2.0",
|
||||
"electron": "git+https://github.com/castlabs/electron-releases.git#v16.0.4+wvcus",
|
||||
"electron-builder": "^22.14.5",
|
||||
"electron-reload": "^1.5.0",
|
||||
"prettier": "^2.0.4"
|
||||
"prettier": "^2.5.0"
|
||||
},
|
||||
"prettier": "@mastermindzh/prettier-config"
|
||||
}
|
||||
|
@@ -234,6 +234,15 @@ function getCurrentlyPlayingStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the duration from MM:SS to seconds
|
||||
* @param {*} duration
|
||||
*/
|
||||
function convertDuration(duration) {
|
||||
const parts = duration.split(":");
|
||||
return parseInt(parts[1]) + 60 * parseInt(parts[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update Tidal-hifi's media info
|
||||
*
|
||||
@@ -243,14 +252,14 @@ function updateMediaInfo(options, notify) {
|
||||
if (options) {
|
||||
ipcRenderer.send(globalEvents.updateInfo, options);
|
||||
store.get(settings.notifications) && notify && notifier.notify(options);
|
||||
|
||||
if (player) {
|
||||
player.metadata = {
|
||||
...player.metadata,
|
||||
...{
|
||||
"xesam:title": options.title,
|
||||
"xesam:artist": [options.artists],
|
||||
"xesam:artist": [options.message],
|
||||
"mpris:artUrl": options.image,
|
||||
"mpris:length": convertDuration(options.duration) * 1000 * 1000,
|
||||
},
|
||||
};
|
||||
player.playbackStatus = options.status == statuses.paused ? "Paused" : "Playing";
|
||||
@@ -283,6 +292,7 @@ setInterval(function () {
|
||||
const artists = elements.getArtists();
|
||||
const current = elements.getText("current");
|
||||
const duration = elements.getText("duration");
|
||||
const appName = "Tidal Hifi";
|
||||
const progressBarcurrentTime = elements.get("bar").getAttribute("aria-valuenow");
|
||||
const songDashArtistTitle = `${title} - ${artists}`;
|
||||
const currentStatus = getCurrentlyPlayingStatus();
|
||||
@@ -293,6 +303,7 @@ setInterval(function () {
|
||||
url: currentURL,
|
||||
current: current,
|
||||
duration: duration,
|
||||
'app-name': appName,
|
||||
};
|
||||
|
||||
const playStatusChanged = currentStatus !== currentPlayStatus;
|
||||
@@ -331,6 +342,7 @@ setInterval(function () {
|
||||
|
||||
new Promise((resolve) => {
|
||||
if (image.startsWith("http")) {
|
||||
options.image = image;
|
||||
downloadFile(image, notificationPath).then(
|
||||
() => {
|
||||
options.icon = notificationPath;
|
||||
@@ -397,6 +409,10 @@ if (process.platform === "linux" && store.get(settings.mpris)) {
|
||||
}
|
||||
});
|
||||
});
|
||||
// Override get position function
|
||||
player.getPosition = function () {
|
||||
return convertDuration(elements.getText("current")) * 1000 * 1000;
|
||||
};
|
||||
|
||||
player.on("quit", function () {
|
||||
app.quit();
|
||||
|
Reference in New Issue
Block a user