mirror of
https://github.com/Mastermindzh/tidal-hifi.git
synced 2024-11-22 21:42:46 +01:00
fixed artists retrieval, removed arch build steps
This commit is contained in:
parent
d34ddfeb75
commit
d6f63ac560
@ -4,6 +4,15 @@ 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/),
|
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).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## 2.2.1
|
||||||
|
|
||||||
|
- artists is now gotten specifically from the footer. This fixes the [unknown artists bug](https://github.com/Mastermindzh/tidal-hifi/issues/45).
|
||||||
|
- the discord module will check whether the artists is empty and if so substitute it with a default message. This is to prevent sending an empty state to Discord (which it doesn't support). fixes [#45](https://github.com/Mastermindzh/tidal-hifi/issues/54)
|
||||||
|
|
||||||
|
### removed arch build details from source control
|
||||||
|
|
||||||
|
moved to: [https://github.com/Mastermindzh/tidal-hifi-aur](https://github.com/Mastermindzh/tidal-hifi-aur)
|
||||||
|
|
||||||
## 2.2.0
|
## 2.2.0
|
||||||
|
|
||||||
- The discord integration now adds a time remaining field based on the song duration
|
- The discord integration now adds a time remaining field based on the song duration
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
pkgbase = tidal-hifi-git
|
|
||||||
pkgdesc = The web version of listen.tidal.com running in electron with hifi support thanks to widevine.
|
|
||||||
pkgver = 2.1.1
|
|
||||||
pkgrel = 1
|
|
||||||
url = https://github.com/Mastermindzh/tidal-hifi
|
|
||||||
arch = x86_64
|
|
||||||
license = custom:MIT
|
|
||||||
makedepends = npm
|
|
||||||
makedepends = git
|
|
||||||
depends = libxss
|
|
||||||
depends = nss
|
|
||||||
depends = gtk3
|
|
||||||
provides = tidal-hifi
|
|
||||||
source = https://github.com/Mastermindzh/tidal-hifi/archive/2.1.1.zip
|
|
||||||
source = tidal-hifi.desktop
|
|
||||||
sha512sums = 510c94d9db8573103ee900dcd75b0416ea06ea62af7ed21818d2a5a77ab009a2737c852e7e20b97f846e14b07754a9e5a36ac5b9d0cd0a2a8d0aff3bbc75e622
|
|
||||||
sha512sums = 35f38ac308b871c1822d7f6f760f2fb54c3748cf769822cb0f0dfb90f0f5754ba9316da5e903a0d2e9839de3a43ec76f238f3f2e44021956fa1da19142081349
|
|
||||||
|
|
||||||
pkgname = tidal-hifi-git
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
|||||||
# Maintainer: Rick van Lieshout <info@rickvanlieshout.com>
|
|
||||||
|
|
||||||
_pkgname=tidal-hifi
|
|
||||||
pkgname="$_pkgname-git"
|
|
||||||
pkgver=2.1.1
|
|
||||||
pkgrel=1
|
|
||||||
pkgdesc="The web version of listen.tidal.com running in electron with hifi support thanks to widevine."
|
|
||||||
arch=("x86_64")
|
|
||||||
url="https://github.com/Mastermindzh/tidal-hifi"
|
|
||||||
license=("custom:MIT")
|
|
||||||
|
|
||||||
depends=("libxss" "nss" "gtk3")
|
|
||||||
makedepends=("npm" "git")
|
|
||||||
provides=("$_pkgname")
|
|
||||||
|
|
||||||
source=("https://github.com/Mastermindzh/tidal-hifi/archive/$pkgver.zip"
|
|
||||||
"${_pkgname}.desktop")
|
|
||||||
sha512sums=('510c94d9db8573103ee900dcd75b0416ea06ea62af7ed21818d2a5a77ab009a2737c852e7e20b97f846e14b07754a9e5a36ac5b9d0cd0a2a8d0aff3bbc75e622'
|
|
||||||
'35f38ac308b871c1822d7f6f760f2fb54c3748cf769822cb0f0dfb90f0f5754ba9316da5e903a0d2e9839de3a43ec76f238f3f2e44021956fa1da19142081349')
|
|
||||||
|
|
||||||
cdToPkg(){
|
|
||||||
cd "tidal-hifi-$pkgver"
|
|
||||||
}
|
|
||||||
|
|
||||||
prepare() {
|
|
||||||
cdToPkg
|
|
||||||
|
|
||||||
# install build dependencies
|
|
||||||
npm install
|
|
||||||
}
|
|
||||||
|
|
||||||
build() {
|
|
||||||
cdToPkg
|
|
||||||
|
|
||||||
# We are not using the systems Electron as we need castlab's Electron.
|
|
||||||
npm run build-arch
|
|
||||||
}
|
|
||||||
|
|
||||||
package() {
|
|
||||||
cdToPkg
|
|
||||||
|
|
||||||
install -d "${pkgdir}/opt/${_pkgname}/" "${pkgdir}/usr/bin" "${pkgdir}/usr/share/doc" "${pkgdir}/usr/share/licenses"
|
|
||||||
|
|
||||||
cp -r dist/linux-unpacked/* "${pkgdir}/opt/${_pkgname}/"
|
|
||||||
chmod +x "${pkgdir}/opt/${_pkgname}/${_pkgname}"
|
|
||||||
|
|
||||||
ln -s "/opt/${_pkgname}/${_pkgname}" "${pkgdir}/usr/bin/${_pkgname}"
|
|
||||||
|
|
||||||
install -Dm 644 "build/icon.png" "${pkgdir}/usr/share/pixmaps/${_pkgname}.png"
|
|
||||||
install -Dm 644 "${srcdir}/${_pkgname}.desktop" "${pkgdir}/usr/share/applications/${_pkgname}.desktop"
|
|
||||||
|
|
||||||
install -Dm 644 "README.md" "${pkgdir}/usr/share/doc/${pkgname}/README.md"
|
|
||||||
install -Dm 644 "LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
|
|
||||||
ln -s "/opt/${_pkgname}/LICENSE.electron.txt" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.electron.txt"
|
|
||||||
ln -s "/opt/${_pkgname}/LICENSES.chromium.html" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSES.chromium.html"
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Will generate a correctly formatted SRCINFO file
|
|
||||||
|
|
||||||
SCRIPT_DIST=".SRCINFO"
|
|
||||||
|
|
||||||
# generate SRCINFO
|
|
||||||
makepkg --printsrcinfo > $SCRIPT_DIST
|
|
||||||
|
|
||||||
# replace pkgbase with tidal-hifi-git
|
|
||||||
pkgName="tidal-hifi-git"
|
|
||||||
sed -i "1s/.*/pkgbase = $pkgName/" $SCRIPT_DIST
|
|
||||||
|
|
||||||
# replace pkgbase with tidal-hifi-git
|
|
||||||
sed -i '/^pkgname/ d' $SCRIPT_DIST
|
|
||||||
echo "pkgname = $pkgName" >> $SCRIPT_DIST
|
|
||||||
|
|
||||||
# remove double line breaks and replace with single line breaks
|
|
||||||
sed -i '/^$/N;/^\n$/D' $SCRIPT_DIST
|
|
@ -1,13 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Encoding=UTF-8
|
|
||||||
Name=tidal-hifi
|
|
||||||
GenericName=tidal-hifi
|
|
||||||
Comment=The web version of listen.tidal.com running in electron with hifi support thanks to widevine.
|
|
||||||
Exec=tidal-hifi %u
|
|
||||||
Icon=tidal-hifi.png
|
|
||||||
StartupNotify=true
|
|
||||||
Terminal=false
|
|
||||||
Type=Application
|
|
||||||
Categories=Network;Application;Audio;Video
|
|
||||||
StartupWMClass=tidal-hifi
|
|
||||||
X-PulseAudio-Properties=media.role=music
|
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "tidal-hifi",
|
"name": "tidal-hifi",
|
||||||
"version": "2.2.0",
|
"version": "2.2.1",
|
||||||
"description": "Tidal on Electron with widevine(hifi) support",
|
"description": "Tidal on Electron with widevine(hifi) support",
|
||||||
"main": "src/main.js",
|
"main": "src/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -23,7 +23,7 @@ const elements = {
|
|||||||
next: '*[data-test="next"]',
|
next: '*[data-test="next"]',
|
||||||
previous: 'button[data-test="previous"]',
|
previous: 'button[data-test="previous"]',
|
||||||
title: '*[data-test^="footer-track-title"]',
|
title: '*[data-test^="footer-track-title"]',
|
||||||
artists: '*[class^="elemental__text elemental__text css-oxcos"]',
|
artists: '*[data-test^="grid-item-detail-text-title-artist"]',
|
||||||
home: '*[data-test="menu--home"]',
|
home: '*[data-test="menu--home"]',
|
||||||
back: '[class^="backwardButton"]',
|
back: '[class^="backwardButton"]',
|
||||||
forward: '[class^="forwardButton"]',
|
forward: '[class^="forwardButton"]',
|
||||||
@ -38,6 +38,7 @@ const elements = {
|
|||||||
current: '*[data-test="current-time"]',
|
current: '*[data-test="current-time"]',
|
||||||
duration: '*[data-test="duration-time"]',
|
duration: '*[data-test="duration-time"]',
|
||||||
bar: '*[data-test="progress-bar"]',
|
bar: '*[data-test="progress-bar"]',
|
||||||
|
footer: "#footerPlayer",
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an element from the dom
|
* Get an element from the dom
|
||||||
@ -63,6 +64,19 @@ const elements = {
|
|||||||
return "";
|
return "";
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getArtists: function () {
|
||||||
|
const footer = this.get("footer");
|
||||||
|
|
||||||
|
if (footer) {
|
||||||
|
const artists = footer.querySelector(this["artists"]);
|
||||||
|
if (artists) {
|
||||||
|
return artists.innerText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "unknown artist(s)";
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shorthand function to get the text of a dom element
|
* Shorthand function to get the text of a dom element
|
||||||
* @param {*} key key in elements object to fetch
|
* @param {*} key key in elements object to fetch
|
||||||
@ -266,7 +280,7 @@ function updateURL() {
|
|||||||
*/
|
*/
|
||||||
setInterval(function () {
|
setInterval(function () {
|
||||||
const title = elements.getText("title");
|
const title = elements.getText("title");
|
||||||
const artists = elements.getText("artists");
|
const artists = elements.getArtists();
|
||||||
const current = elements.getText("current");
|
const current = elements.getText("current");
|
||||||
const duration = elements.getText("duration");
|
const duration = elements.getText("duration");
|
||||||
const progressBarcurrentTime = elements.get("bar").getAttribute("aria-valuenow");
|
const progressBarcurrentTime = elements.get("bar").getAttribute("aria-valuenow");
|
||||||
@ -293,21 +307,21 @@ setInterval(function () {
|
|||||||
currentPlayStatus = currentStatus;
|
currentPlayStatus = currentStatus;
|
||||||
|
|
||||||
// check progress bar value and make sure current stays up to date after switch
|
// check progress bar value and make sure current stays up to date after switch
|
||||||
if(progressBarTime != progressBarcurrentTime && !titleOrArtistChanged) {
|
if (progressBarTime != progressBarcurrentTime && !titleOrArtistChanged) {
|
||||||
progressBarTime = progressBarcurrentTime;
|
progressBarTime = progressBarcurrentTime;
|
||||||
currentTime = options.current;
|
currentTime = options.current;
|
||||||
options.duration = duration;
|
options.duration = duration;
|
||||||
currentTimeChanged = true;
|
currentTimeChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(currentTimeChanged) {
|
if (currentTimeChanged) {
|
||||||
if(options.current == currentTime && currentStatus != "paused") return;
|
if (options.current == currentTime && currentStatus != "paused") return;
|
||||||
currentTime = options.current;
|
currentTime = options.current;
|
||||||
currentTimeChanged = false;
|
currentTimeChanged = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure current is set to 0 if title changes
|
// make sure current is set to 0 if title changes
|
||||||
if(titleOrArtistChanged) {
|
if (titleOrArtistChanged) {
|
||||||
options.current = "0:00";
|
options.current = "0:00";
|
||||||
currentTime = options.current;
|
currentTime = options.current;
|
||||||
progressBarTime = progressBarcurrentTime;
|
progressBarTime = progressBarcurrentTime;
|
||||||
|
@ -6,8 +6,8 @@ const mediaInfoModule = require("./mediaInfo");
|
|||||||
const discordModule = [];
|
const discordModule = [];
|
||||||
|
|
||||||
function timeToSeconds(timeArray) {
|
function timeToSeconds(timeArray) {
|
||||||
let minutes = (timeArray[0] * 1);
|
let minutes = timeArray[0] * 1;
|
||||||
let seconds = (minutes * 60) + (timeArray[1] * 1);
|
let seconds = minutes * 60 + timeArray[1] * 1;
|
||||||
return seconds;
|
return seconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -19,14 +19,16 @@ const observer = (event, arg) => {
|
|||||||
const currentSeconds = timeToSeconds(mediaInfoModule.mediaInfo.current.split(":"));
|
const currentSeconds = timeToSeconds(mediaInfoModule.mediaInfo.current.split(":"));
|
||||||
const durationSeconds = timeToSeconds(mediaInfoModule.mediaInfo.duration.split(":"));
|
const durationSeconds = timeToSeconds(mediaInfoModule.mediaInfo.duration.split(":"));
|
||||||
const date = new Date();
|
const date = new Date();
|
||||||
const now = date.getTime() / 1000 | 0;
|
const now = (date.getTime() / 1000) | 0;
|
||||||
const remaining = date.setSeconds(date.getSeconds() + (durationSeconds - currentSeconds));
|
const remaining = date.setSeconds(date.getSeconds() + (durationSeconds - currentSeconds));
|
||||||
if (mediaInfoModule.mediaInfo.url) {
|
if (mediaInfoModule.mediaInfo.url) {
|
||||||
rpc.setActivity({
|
rpc.setActivity({
|
||||||
...idleStatus,
|
...idleStatus,
|
||||||
...{
|
...{
|
||||||
details: `Listening to ${mediaInfoModule.mediaInfo.title}`,
|
details: `Listening to ${mediaInfoModule.mediaInfo.title}`,
|
||||||
state: mediaInfoModule.mediaInfo.artist,
|
state: mediaInfoModule.mediaInfo.artist
|
||||||
|
? mediaInfoModule.mediaInfo.artist
|
||||||
|
: "unknown artist(s)",
|
||||||
startTimestamp: parseInt(now),
|
startTimestamp: parseInt(now),
|
||||||
endTimestamp: parseInt(remaining),
|
endTimestamp: parseInt(remaining),
|
||||||
buttons: [{ label: "Play on Tidal", url: mediaInfoModule.mediaInfo.url }],
|
buttons: [{ label: "Play on Tidal", url: mediaInfoModule.mediaInfo.url }],
|
||||||
|
Loading…
Reference in New Issue
Block a user