mirror of
https://github.com/Mastermindzh/tidal-hifi.git
synced 2025-04-20 11:42:28 +02:00
Merge branch 'master' of github.com:Mastermindzh/tidal-hifi into feature/tidalControllers
This commit is contained in:
commit
a08fad421a
@ -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.18.0]
|
||||
|
||||
- [Dianoga](https://github.com/Dianoga) fixed the duration selector, restoring mpris & partial API data.
|
||||
- PR: #554
|
||||
- Added `xesam:url` property to mpris metadata fixes [#506](https://github.com/Mastermindzh/tidal-hifi/issues/506)
|
||||
|
||||
## [5.17.0]
|
||||
|
||||
- Added an option to disable the dynamic title and set it to a static one, [#491](https://github.com/Mastermindzh/tidal-hifi/pull/491)
|
||||
|
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "tidal-hifi",
|
||||
"version": "5.17.0",
|
||||
"version": "5.18.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "tidal-hifi",
|
||||
"version": "5.17.0",
|
||||
"version": "5.18.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@electron/remote": "^2.1.2",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tidal-hifi",
|
||||
"version": "5.17.0",
|
||||
"version": "5.18.0",
|
||||
"description": "Tidal on Electron with widevine(hifi) support",
|
||||
"main": "ts-dist/main.js",
|
||||
"scripts": {
|
||||
|
@ -22,12 +22,13 @@
|
||||
media: '*[data-test="current-media-imagery"]',
|
||||
image: "img",
|
||||
current: '*[data-test="current-time"]',
|
||||
duration: '*[class^=playbackControlsContainer] *[data-test="duration"]',
|
||||
duration: '*[class^=_playbackControlsContainer] *[data-test="duration"]',
|
||||
bar: '*[data-test="progress-bar"]',
|
||||
footer: "#footerPlayer",
|
||||
mediaItem: "[data-type='mediaItem']",
|
||||
album_header_title: '*[class^="playingFrom"] span:nth-child(2)',
|
||||
playingFrom: '*[class^="playingFrom"] span:nth-child(2)',
|
||||
album_header_title: '*[class^="_playingFrom"] span:nth-child(2)',
|
||||
playing_from: '*[class^="_playingFrom"] span:nth-child(2)',
|
||||
queue_album: "*[class^=playQueueItemsContainer] *[class^=groupTitle] span:nth-child(2)",
|
||||
currentlyPlaying: "[class^='isPlayingIcon'], [data-test-is-playing='true']",
|
||||
album_name_cell: '[class^="album"]',
|
||||
tracklist_row: '[data-test="tracklist-row"]',
|
||||
|
@ -2,7 +2,7 @@
|
||||
"openapi": "3.1.0",
|
||||
"info": {
|
||||
"title": "TIDAL Hi-Fi API",
|
||||
"version": "5.17.0",
|
||||
"version": "5.18.0",
|
||||
"description": "",
|
||||
"license": {
|
||||
"name": "MIT",
|
||||
|
@ -1,34 +1,25 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
|
||||
<head>
|
||||
<title>Tidal Hi-Fi settings</title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||
<link rel="stylesheet" href="./settings.css" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||
/>
|
||||
</head>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
|
||||
</head>
|
||||
|
||||
<body class="settings-window">
|
||||
<body class="settings-window">
|
||||
<div class="settings-window__wrapper">
|
||||
<div class="settings-window__drag-area"></div>
|
||||
<a id="close" class="settings-window__close-button" title="Close settings">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 348.333 348.334"
|
||||
class="settings-window__svg-icon"
|
||||
>
|
||||
<path
|
||||
fill="white"
|
||||
d="M336.559,68.611L231.016,174.165l105.543,105.549c15.699,15.705,15.699,41.145,0,56.85
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 348.333 348.334" class="settings-window__svg-icon">
|
||||
<path fill="white" d="M336.559,68.611L231.016,174.165l105.543,105.549c15.699,15.705,15.699,41.145,0,56.85
|
||||
c-7.844,7.844-18.128,11.769-28.407,11.769c-10.296,0-20.581-3.919-28.419-11.769L174.167,231.003L68.609,336.563
|
||||
c-7.843,7.844-18.128,11.769-28.416,11.769c-10.285,0-20.563-3.919-28.413-11.769c-15.699-15.698-15.699-41.139,0-56.85
|
||||
l105.54-105.549L11.774,68.611c-15.699-15.699-15.699-41.145,0-56.844c15.696-15.687,41.127-15.687,56.829,0l105.563,105.554
|
||||
L279.721,11.767c15.705-15.687,41.139-15.687,56.832,0C352.258,27.466,352.258,52.912,336.559,68.611z"
|
||||
/>
|
||||
L279.721,11.767c15.705-15.687,41.139-15.687,56.832,0C352.258,27.466,352.258,52.912,336.559,68.611z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
@ -75,13 +66,7 @@
|
||||
<span class="switch__slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<textarea
|
||||
id="skippedArtists"
|
||||
class="textarea"
|
||||
cols="40"
|
||||
rows="5"
|
||||
spellcheck="false"
|
||||
></textarea>
|
||||
<textarea id="skippedArtists" class="textarea" cols="40" rows="5" spellcheck="false"></textarea>
|
||||
<div class="group__option">
|
||||
<div class="group__description">
|
||||
<h4>Block ads</h4>
|
||||
@ -149,9 +134,7 @@
|
||||
<h4>Hotkeys</h4>
|
||||
<p>
|
||||
Enable extra hotkeys to achieve feature parity with the
|
||||
<a class="external-link" data-url="https://defkey.com/tidal-desktop-shortcuts"
|
||||
>desktop apps</a
|
||||
>.
|
||||
<a class="external-link" data-url="https://defkey.com/tidal-desktop-shortcuts">desktop apps</a>.
|
||||
</p>
|
||||
</div>
|
||||
<label class="switch">
|
||||
@ -272,12 +255,7 @@
|
||||
<div class="group__description">
|
||||
<h4>Idle Text</h4>
|
||||
<p>The text displayed on Discord's rich presence while idling in the app.</p>
|
||||
<input
|
||||
id="discord_idle_text"
|
||||
type="text"
|
||||
class="text-input"
|
||||
name="discord_idle_text"
|
||||
/>
|
||||
<input id="discord_idle_text" type="text" class="text-input" name="discord_idle_text" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -287,12 +265,7 @@
|
||||
<p>
|
||||
The text displayed on Discord's rich presence while "showSong" is turned off
|
||||
</p>
|
||||
<input
|
||||
id="discord_using_text"
|
||||
type="text"
|
||||
class="text-input"
|
||||
name="discord_using_text"
|
||||
/>
|
||||
<input id="discord_using_text" type="text" class="text-input" name="discord_using_text" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -323,12 +296,7 @@
|
||||
<div class="group__description">
|
||||
<h4>Details prefix</h4>
|
||||
<p>Prefix for the "details" field of Discord's rich presence.</p>
|
||||
<input
|
||||
id="discord_details_prefix"
|
||||
type="text"
|
||||
class="text-input"
|
||||
name="discord_details_prefix"
|
||||
/>
|
||||
<input id="discord_details_prefix" type="text" class="text-input" name="discord_details_prefix" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -336,12 +304,7 @@
|
||||
<div class="group__description">
|
||||
<h4>Button text</h4>
|
||||
<p>Text to display on the button below the media information.</p>
|
||||
<input
|
||||
id="discord_button_text"
|
||||
type="text"
|
||||
class="text-input"
|
||||
name="discord_button_text"
|
||||
/>
|
||||
<input id="discord_button_text" type="text" class="text-input" name="discord_button_text" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -367,24 +330,14 @@
|
||||
There are multiple instances for ListenBrainz you can set the corresponding
|
||||
API url below.
|
||||
</p>
|
||||
<input
|
||||
id="ListenBrainzAPI"
|
||||
type="text"
|
||||
class="text-input"
|
||||
name="ListenBrainzAPI"
|
||||
/>
|
||||
<input id="ListenBrainzAPI" type="text" class="text-input" name="ListenBrainzAPI" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="group__option">
|
||||
<div class="group__description">
|
||||
<h4>ListenBrainz User Token</h4>
|
||||
<p>Provide the user token you can get from the settings page.</p>
|
||||
<input
|
||||
id="ListenBrainzToken"
|
||||
type="text"
|
||||
class="text-input"
|
||||
name="ListenBrainzToken"
|
||||
/>
|
||||
<input id="ListenBrainzToken" type="text" class="text-input" name="ListenBrainzToken" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -394,12 +347,7 @@
|
||||
The delay (in ms) to send a listen to ListenBrainz. Prevents spamming the API when
|
||||
you fast forward immediately
|
||||
</p>
|
||||
<input
|
||||
id="listenbrainz_delay"
|
||||
type="number"
|
||||
class="text-input"
|
||||
name="listenbrainz_delay"
|
||||
/>
|
||||
<input id="listenbrainz_delay" type="number" class="text-input" name="listenbrainz_delay" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@ -415,12 +363,7 @@
|
||||
info by scraping the website. The default of 500 seems to work in more cases but
|
||||
if you are fine with a bit more resource usage you can decrease it as well.
|
||||
</p>
|
||||
<input
|
||||
id="updateFrequency"
|
||||
type="number"
|
||||
class="text-input"
|
||||
name="updateFrequency"
|
||||
/>
|
||||
<input id="updateFrequency" type="number" class="text-input" name="updateFrequency" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -506,13 +449,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<textarea
|
||||
id="customCSS"
|
||||
class="textarea"
|
||||
cols="40"
|
||||
rows="8"
|
||||
spellcheck="false"
|
||||
></textarea>
|
||||
<textarea id="customCSS" class="textarea" cols="40" rows="8" spellcheck="false"></textarea>
|
||||
|
||||
<div class="group">
|
||||
<p class="group__title">Theme files</p>
|
||||
@ -537,13 +474,7 @@
|
||||
<div>
|
||||
<span class="file-btn">Choose files</span>
|
||||
<span id="file-message" class="file-msg">or drag and drop files here</span>
|
||||
<input
|
||||
id="theme-files"
|
||||
class="file-input"
|
||||
type="file"
|
||||
accept=".css"
|
||||
multiple
|
||||
/>
|
||||
<input id="theme-files" class="file-input" type="file" accept=".css" multiple />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -555,35 +486,17 @@
|
||||
<img alt="tidal icon" class="about-section__icon" src="./icon.png" />
|
||||
<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.17.0"
|
||||
>5.17.0</a
|
||||
>
|
||||
<a target="_blank" rel="noopener"
|
||||
href="https://github.com/Mastermindzh/tidal-hifi/releases/tag/5.18.0">5.18.0</a>
|
||||
</div>
|
||||
<div class="about-section__links">
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
href="https://github.com/mastermindzh/tidal-hifi/"
|
||||
class="about-section__button"
|
||||
>Github <i class="fa fa-external-link"></i
|
||||
></a>
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
href="https://github.com/Mastermindzh/tidal-hifi/issues"
|
||||
class="about-section__button"
|
||||
>Report an issue <i class="fa fa-external-link"></i
|
||||
></a>
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
href="https://github.com/Mastermindzh/tidal-hifi/graphs/contributors"
|
||||
class="about-section__button"
|
||||
>Contributors <i class="fa fa-external-link"></i
|
||||
></a>
|
||||
<a target="_blank" rel="noopener" href="https://github.com/mastermindzh/tidal-hifi/"
|
||||
class="about-section__button">Github
|
||||
<i class="fa fa-external-link"></i></a>
|
||||
<a target="_blank" rel="noopener" href="https://github.com/Mastermindzh/tidal-hifi/issues"
|
||||
class="about-section__button">Report an issue <i class="fa fa-external-link"></i></a>
|
||||
<a target="_blank" rel="noopener" href="https://github.com/Mastermindzh/tidal-hifi/graphs/contributors"
|
||||
class="about-section__button">Contributors <i class="fa fa-external-link"></i></a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@ -595,5 +508,6 @@
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</body>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -313,6 +313,7 @@ function updateMpris(mediaInfo: MediaInfo) {
|
||||
"xesam:title": mediaInfo.title,
|
||||
"xesam:artist": [mediaInfo.artists],
|
||||
"xesam:album": mediaInfo.album,
|
||||
"xesam:url": mediaInfo.url,
|
||||
"mpris:artUrl": mediaInfo.image,
|
||||
"mpris:length": convertDurationToSeconds(mediaInfo.duration) * 1000 * 1000,
|
||||
"mpris:trackid": "/org/mpris/MediaPlayer2/track/" + tidalController.getTrackId(),
|
||||
|
@ -103,8 +103,7 @@ const getActivity = (): SetActivity => {
|
||||
if (includeTimestamps) {
|
||||
const currentSeconds = convertDurationToSeconds(mediaInfo.current);
|
||||
const durationSeconds = convertDurationToSeconds(mediaInfo.duration);
|
||||
const date = new Date();
|
||||
const now = Math.floor(date.getTime() / 1000);
|
||||
const now = Math.trunc((Date.now() + 500) / 1000);
|
||||
presence.startTimestamp = now - currentSeconds;
|
||||
presence.endTimestamp = presence.startTimestamp + durationSeconds;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user