mirror of
https://github.com/Mastermindzh/tidal-hifi.git
synced 2024-11-22 13:32:42 +01:00
fix: get multiple artists
- in mrpis multiple names are showing - also at title - skipping from settings any artist that is present in current artists at Tidal
This commit is contained in:
parent
05b422e045
commit
cde7408cc4
@ -65,16 +65,29 @@ const elements = {
|
||||
return "";
|
||||
},
|
||||
|
||||
getArtists: function () {
|
||||
/**
|
||||
* returns an array of all artists in the current song
|
||||
* @returns {Array} artists
|
||||
*/
|
||||
getArtistsArray: function () {
|
||||
const footer = this.get("footer");
|
||||
|
||||
if (footer) {
|
||||
const artists = footer.querySelector(this["artists"]);
|
||||
if (artists) {
|
||||
return artists.innerText;
|
||||
}
|
||||
const artists = footer.querySelectorAll(this.artists);
|
||||
if (artists)
|
||||
return Array.from(artists).map((artist) => artist.textContent);
|
||||
}
|
||||
return [];
|
||||
},
|
||||
|
||||
/**
|
||||
* unify the artists array into a string separated by commas
|
||||
* @param {Array} artistsArray
|
||||
* @returns {String} artists
|
||||
*/
|
||||
getArtistsString: function (artistsArray) {
|
||||
if (artistsArray.length > 0)
|
||||
return artistsArray.join(", ");
|
||||
return "unknown artist(s)";
|
||||
},
|
||||
|
||||
@ -332,17 +345,18 @@ function getTrackID() {
|
||||
*/
|
||||
setInterval(function () {
|
||||
const title = elements.getText("title");
|
||||
const artists = elements.getArtists();
|
||||
skipArtistsIfFoundInSkippedArtistsList(artists);
|
||||
const artistsArray = elements.getArtistsArray();
|
||||
const artistsString = elements.getArtistsString(artistsArray);
|
||||
skipArtistsIfFoundInSkippedArtistsList(artistsArray);
|
||||
|
||||
const album = elements.getAlbumName();
|
||||
const current = elements.getText("current");
|
||||
const duration = elements.getText("duration");
|
||||
const songDashArtistTitle = `${title} - ${artists}`;
|
||||
const songDashArtistTitle = `${title} - ${artistsString}`;
|
||||
const currentStatus = getCurrentlyPlayingStatus();
|
||||
const options = {
|
||||
title,
|
||||
message: artists,
|
||||
message: artistsString,
|
||||
album: album,
|
||||
status: currentStatus,
|
||||
url: getTrackURL(),
|
||||
@ -387,13 +401,18 @@ setInterval(function () {
|
||||
|
||||
/**
|
||||
* automatically skip a song if the artists are found in the list of artists to skip
|
||||
* @param {*} artists list of artists to skip
|
||||
* @param {*} artists array of artists
|
||||
*/
|
||||
function skipArtistsIfFoundInSkippedArtistsList(artists) {
|
||||
if (store.get(skipArtists)) {
|
||||
const skippedArtists = store.get(settings.skippedArtists);
|
||||
if (skippedArtists.find((artist) => artist === artists) !== undefined) {
|
||||
elements.click("next");
|
||||
if (skippedArtists.length > 0) {
|
||||
const artistsToSkip = skippedArtists.map((artist) => artist);
|
||||
const artistNames = Object.values(artists).map((artist) => artist);
|
||||
const foundArtist = artistNames.some((artist) => artistsToSkip.includes(artist));
|
||||
if (foundArtist) {
|
||||
elements.click("next");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user