Compare commits

...

6 Commits

Author SHA1 Message Date
7376df7f30 albumInfo fix, updated dependencies 2025-04-22 11:14:19 +02:00
7f8760c4e9
Merge pull request #583 from Mastermindzh/snyk-upgrade-36ee0aede4ca42df3db4bef87530e654
[Snyk] Upgrade sass from 1.85.1 to 1.86.0
2025-04-20 13:24:05 +02:00
snyk-bot
1cf5a01ad7
fix: upgrade sass from 1.85.1 to 1.86.0
Snyk has created this PR to upgrade sass from 1.85.1 to 1.86.0.

See this package in npm:
sass

See this project in Snyk:
https://app.snyk.io/org/mastermindzh/project/dade8f03-2064-49a3-8957-edbacec3887c?utm_source=github&utm_medium=referral&page=upgrade-pr
2025-04-19 09:04:54 +00:00
8fc49f500e
Merge pull request #577 from Mastermindzh/snyk-upgrade-b144be84df6292449bfe4eacd9662b97
[Snyk] Upgrade sass from 1.79.4 to 1.85.1
2025-04-18 14:50:52 +02:00
snyk-bot
49f5a01b58
fix: upgrade sass from 1.79.4 to 1.85.1
Snyk has created this PR to upgrade sass from 1.79.4 to 1.85.1.

See this package in npm:
sass

See this project in Snyk:
https://app.snyk.io/org/mastermindzh/project/dade8f03-2064-49a3-8957-edbacec3887c?utm_source=github&utm_medium=referral&page=upgrade-pr
2025-04-05 07:45:32 +00:00
48f4fe47ef
Merge pull request #573 from Mastermindzh/next
Next
2025-03-30 13:10:28 +02:00
8 changed files with 727 additions and 372 deletions

View File

@ -4,6 +4,12 @@ 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).
## [5.19.0]
- Fixed the issue where media updates would cease to work after album names can't be found
- Will simply report an empty string when it can't find the album
- Updated various dependencies
## [5.18.2]
- Reverted to sass 1.79.4 to fix `Nix` builds

901
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "tidal-hifi",
"version": "5.18.2",
"version": "5.19.0",
"description": "Tidal on Electron with widevine(hifi) support",
"main": "ts-dist/main.js",
"scripts": {
@ -45,10 +45,10 @@
"@xhayper/discord-rpc": "^1.2.1",
"axios": "^1.8.4",
"electron-store": "^8.2.0",
"express": "^4.21.2",
"express": "^5.1.0",
"hotkeys-js": "^3.13.9",
"mpris-service": "^2.1.2",
"sass": "1.79.4",
"sass": "1.86.3",
"swagger-ui-express": "^5.0.1",
"cors": "^2.8.5",
"request": "^2.88.2"
@ -56,28 +56,28 @@
"devDependencies": {
"@mastermindzh/prettier-config": "^1.0.0",
"@types/cors": "^2.8.17",
"@types/express": "^4.17.21",
"@types/node": "^20.14.10",
"@types/express": "^5.0.1",
"@types/node": "^20.17.30",
"@types/request": "^2.48.12",
"@types/swagger-ui-express": "^4.1.6",
"@typescript-eslint/eslint-plugin": "^7.16.0",
"@typescript-eslint/parser": "^7.15.0",
"@types/swagger-ui-express": "^4.1.8",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"copyfiles": "^2.4.1",
"electron": "github:castlabs/electron-releases#v35.1.1+wvcus",
"electron-builder": "~26.0.12",
"eslint": "^8.57.0",
"js-yaml": "^4.1.0",
"markdown-toc": "^1.2.0",
"nodemon": "^3.1.4",
"prettier": "^3.3.2",
"stylelint": "^16.6.1",
"nodemon": "^3.1.9",
"prettier": "^3.5.3",
"stylelint": "^16.18.0",
"stylelint-config-standard": "^36.0.1",
"stylelint-config-standard-scss": "^13.1.0",
"stylelint-prettier": "^5.0.0",
"stylelint-prettier": "^5.0.3",
"swagger-jsdoc": "^6.2.8",
"ts-node": "^10.9.2",
"tsc-watch": "^6.2.0",
"typescript": "^5.5.3"
"tsc-watch": "^6.2.1",
"typescript": "^5.8.3"
},
"prettier": "@mastermindzh/prettier-config"
}

View File

@ -88,8 +88,9 @@ export const addCurrentInfo = (expressApp: Router) => {
* schema:
* $ref: '#/components/schemas/MediaInfo'
*/
expressApp.get("/current", (req, res) => res.json({ ...mediaInfo, artist: mediaInfo.artists }));
expressApp.get("/current", (_req, res) => {
res.json({ ...mediaInfo, artist: mediaInfo.artists });
});
/**
* @swagger
* /current/image:

View File

@ -21,8 +21,12 @@ export const startApi = (mainWindow: BrowserWindow) => {
expressApp.use(cors());
expressApp.use(express.json());
expressApp.use("/docs", swaggerUi.serve, swaggerUi.setup(swaggerSpec));
expressApp.get("/", (req, res) => res.send("Hello World!"));
expressApp.get("/swagger.json", (req, res) => res.json(swaggerSpec));
expressApp.get("/", (req, res) => {
res.send("Hello World!");
});
expressApp.get("/swagger.json", (req, res) => {
res.json(swaggerSpec);
});
// add features
addLegacyApi(expressApp, mainWindow);

View File

@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "TIDAL Hi-Fi API",
"version": "5.18.2",
"version": "5.19.0",
"description": "",
"license": {
"name": "MIT",
@ -21,7 +21,9 @@
"/current": {
"get": {
"summary": "Get current media info",
"tags": ["current"],
"tags": [
"current"
],
"responses": {
"200": {
"description": "Current media info",
@ -39,7 +41,9 @@
"/current/image": {
"get": {
"summary": "Get current media image",
"tags": ["current"],
"tags": [
"current"
],
"responses": {
"200": {
"description": "Current media image",
@ -61,7 +65,9 @@
"/player/play": {
"post": {
"summary": "Play the current media",
"tags": ["player"],
"tags": [
"player"
],
"responses": {
"200": {
"description": "Ok",
@ -79,7 +85,9 @@
"/player/favorite/toggle": {
"post": {
"summary": "Add the current media to your favorites, or remove it if its already added to your favorites",
"tags": ["player"],
"tags": [
"player"
],
"responses": {
"200": {
"description": "Ok",
@ -97,7 +105,9 @@
"/player/pause": {
"post": {
"summary": "Pause the current media",
"tags": ["player"],
"tags": [
"player"
],
"responses": {
"200": {
"description": "Ok",
@ -115,7 +125,9 @@
"/player/next": {
"post": {
"summary": "Play the next song",
"tags": ["player"],
"tags": [
"player"
],
"responses": {
"200": {
"description": "Ok",
@ -133,7 +145,9 @@
"/player/previous": {
"post": {
"summary": "Play the previous song",
"tags": ["player"],
"tags": [
"player"
],
"responses": {
"200": {
"description": "Ok",
@ -151,7 +165,9 @@
"/player/shuffle/toggle": {
"post": {
"summary": "Play the previous song",
"tags": ["player"],
"tags": [
"player"
],
"responses": {
"200": {
"description": "Ok",
@ -169,7 +185,9 @@
"/player/repeat/toggle": {
"post": {
"summary": "Toggle the repeat status, toggles between \"off\" , \"single\" and \"all\"",
"tags": ["player"],
"tags": [
"player"
],
"responses": {
"200": {
"description": "Ok",
@ -187,7 +205,9 @@
"/player/playpause": {
"post": {
"summary": "Start playing the media if paused, or pause the media if playing",
"tags": ["player"],
"tags": [
"player"
],
"responses": {
"200": {
"description": "Ok",
@ -205,7 +225,9 @@
"/settings/skipped-artists": {
"get": {
"summary": "get a list of artists that TIDAL Hi-Fi will skip if skipping is enabled",
"tags": ["settings"],
"tags": [
"settings"
],
"responses": {
"200": {
"description": "The list book.",
@ -221,7 +243,9 @@
},
"post": {
"summary": "Add new artists to the list of skipped artists",
"tags": ["settings"],
"tags": [
"settings"
],
"requestBody": {
"required": true,
"content": {
@ -242,7 +266,9 @@
"/settings/skipped-artists/delete": {
"post": {
"summary": "Remove artists from the list of skipped artists",
"tags": ["settings"],
"tags": [
"settings"
],
"requestBody": {
"required": true,
"content": {
@ -263,7 +289,9 @@
"/settings/skipped-artists/current": {
"post": {
"summary": "Add the current artist to the list of skipped artists",
"tags": ["settings"],
"tags": [
"settings"
],
"responses": {
"200": {
"description": "Ok"
@ -272,7 +300,9 @@
},
"delete": {
"summary": "Remove the current artist from the list of skipped artists",
"tags": ["settings"],
"tags": [
"settings"
],
"responses": {
"200": {
"description": "Ok"
@ -283,7 +313,9 @@
"/image": {
"get": {
"summary": "Get current image",
"tags": ["legacy"],
"tags": [
"legacy"
],
"deprecated": true,
"responses": {
"200": {
@ -306,7 +338,9 @@
"/play": {
"get": {
"summary": "Play the current media",
"tags": ["legacy"],
"tags": [
"legacy"
],
"deprecated": true,
"responses": {
"200": {
@ -325,7 +359,9 @@
"/favorite/toggle": {
"get": {
"summary": "Add the current media to your favorites, or remove it if its already added to your favorites",
"tags": ["legacy"],
"tags": [
"legacy"
],
"deprecated": true,
"responses": {
"200": {
@ -344,7 +380,9 @@
"/pause": {
"get": {
"summary": "Pause the current media",
"tags": ["legacy"],
"tags": [
"legacy"
],
"deprecated": true,
"responses": {
"200": {
@ -363,7 +401,9 @@
"/next": {
"get": {
"summary": "Play the next song",
"tags": ["legacy"],
"tags": [
"legacy"
],
"deprecated": true,
"responses": {
"200": {
@ -382,7 +422,9 @@
"/previous": {
"get": {
"summary": "Play the previous song",
"tags": ["legacy"],
"tags": [
"legacy"
],
"deprecated": true,
"responses": {
"200": {
@ -401,7 +443,9 @@
"/playpause": {
"get": {
"summary": "Toggle play/pause",
"tags": ["legacy"],
"tags": [
"legacy"
],
"deprecated": true,
"responses": {
"200": {
@ -514,7 +558,10 @@
"items": {
"type": "string"
},
"example": ["Artist1", "Artist2"]
"example": [
"Artist1",
"Artist2"
]
}
}
},
@ -532,4 +579,4 @@
"description": "The settings management API"
}
]
}
}

View File

@ -478,7 +478,7 @@
<h4>TIDAL Hi-Fi</h4>
<div class="about-section__version">
<a target="_blank" rel="noopener"
href="https://github.com/Mastermindzh/tidal-hifi/releases/tag/5.18.2">5.18.2</a>
href="https://github.com/Mastermindzh/tidal-hifi/releases/tag/5.19.0">5.19.0</a>
</div>
<div class="about-section__links">
<a target="_blank" rel="noopener" href="https://github.com/mastermindzh/tidal-hifi/"

View File

@ -115,34 +115,38 @@ const elements = {
},
getAlbumName: function () {
//If listening to an album, get its name from the header title
if (window.location.href.includes("/album/")) {
const albumName = window.document.querySelector(this.album_header_title);
if (albumName) {
return albumName.textContent;
}
//If listening to a playlist or a mix, get album name from the list
} else if (
window.location.href.includes("/playlist/") ||
window.location.href.includes("/mix/")
) {
if (currentPlayStatus === MediaStatus.playing) {
// find the currently playing element from the list (which might be in an album icon), traverse back up to the mediaItem (row) and select the album cell.
// document.querySelector("[class^='isPlayingIcon'], [data-test-is-playing='true']").closest('[data-type="mediaItem"]').querySelector('[class^="album"]').textContent
const row = window.document.querySelector(this.currentlyPlaying).closest(this.mediaItem);
if (row) {
return row.querySelector(this.album_name_cell).textContent;
try {
//If listening to an album, get its name from the header title
if (globalThis.location.href.includes("/album/")) {
const albumName = globalThis.document.querySelector(this.album_header_title);
if (albumName) {
return albumName.textContent;
}
//If listening to a playlist or a mix, get album name from the list
} else if (
globalThis.location.href.includes("/playlist/") ||
globalThis.location.href.includes("/mix/")
) {
if (this.currentlyPlaying === MediaStatus.playing) {
// find the currently playing element from the list (which might be in an album icon), traverse back up to the mediaItem (row) and select the album cell.
// document.querySelector("[class^='isPlayingIcon'], [data-test-is-playing='true']").closest('[data-type="mediaItem"]').querySelector('[class^="album"]').textContent
const row = window.document.querySelector(this.currentlyPlaying).closest(this.mediaItem);
if (row) {
return row.querySelector(this.album_name_cell).textContent;
}
}
}
}
// see whether we're on the queue page and get it from there
const queueAlbumName = elements.getText("queue_album");
if (queueAlbumName) {
return queueAlbumName;
}
// see whether we're on the queue page and get it from there
const queueAlbumName = this.getText("queue_album");
if (queueAlbumName) {
return queueAlbumName;
}
return "";
return "";
} catch {
return "";
}
},
isMuted: function () {