diff --git a/README.md b/README.md index bba8507..b7830d2 100644 --- a/README.md +++ b/README.md @@ -11,24 +11,25 @@ The web version of [listen.tidal.com](https://listen.tidal.com) running in elect +- [Table of contents](#table-of-contents) - [Installation](#installation) - * [Using releases](#using-releases) - * [Snap](#snap) - * [Arch Linux](#arch-linux) - * [Flatpak](#flatpak) - * [Nix](#nix) - * [Using source](#using-source) + - [Using releases](#using-releases) + - [Snap](#snap) + - [Arch Linux](#arch-linux) + - [Flatpak](#flatpak) + - [Nix](#nix) + - [Using source](#using-source) - [Features](#features) - [Integrations](#integrations) - * [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) + - [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) - [Buy me a coffee? Please don't](#buy-me-a-coffee-please-dont) - [Images](#images) - * [Settings window](#settings-window) - * [User setups](#user-setups) + - [Settings window](#settings-window) + - [User setups](#user-setups) @@ -93,7 +94,7 @@ To install and work with the code on this project follow these steps: - Notifications - Custom hotkeys ([source](https://defkey.com/tidal-desktop-shortcuts)) - API for status and playback -- [Mute artists automatically (defaults to "Tidal")]("./docs/muting-artists.md") +- Block ads and enable video playback thanks to uBlock Origin custom filters (breakage is possible) - Custom [integrations](#integrations) - [Settings feature](./docs/settings.png) to disable certain functionality. (`ctrl+=` or `ctrl+0`) - AlbumArt in integrations ([best-effort](https://github.com/Mastermindzh/tidal-hifi/pull/88#pullrequestreview-840814847)) diff --git a/docs/muting-artists.md b/docs/muting-artists.md deleted file mode 100644 index b39c1ce..0000000 --- a/docs/muting-artists.md +++ /dev/null @@ -1,11 +0,0 @@ -# Muting artists - -If you feel that some of your music is embarrassing for others you can mute specific artists in the settings window. -This functionality is inspired by the [adblock ticket](https://github.com/Mastermindzh/tidal-hifi/issues/112), and whilst I personally feel you should simply buy Tidal, I also believe in muting sound that you don't want to hear. - -Anyway, to block an artist, open the settings window (see image below) and enter a list of artists in the textarea as seen below. -Don't forget to turn the feature on and Tidal-hifi will automatically mute the player whenever that artist is playing. - -This will allow you to skip the song without anyone noticing. (you can always say "no idea, it seems to have no audio"). - -![muted artists settings window](./settings-muted-artists.png) diff --git a/docs/settings-muted-artists.png b/docs/settings-muted-artists.png deleted file mode 100644 index 17a5e71..0000000 Binary files a/docs/settings-muted-artists.png and /dev/null differ diff --git a/src/constants/settings.js b/src/constants/settings.js index 1a4e7ff..85cdb77 100644 --- a/src/constants/settings.js +++ b/src/constants/settings.js @@ -13,10 +13,9 @@ const settings = { api: "api", menuBar: "menuBar", playBackControl: "playBackControl", - muteArtists: "muteArtists", - mutedArtists: "mutedArtists", skipArtists: "skipArtists", skippedArtists: "skippedArtists", + adBlock: "adBlock", disableBackgroundThrottle: "disableBackgroundThrottle", apiSettings: { root: "apiSettings", diff --git a/src/main.js b/src/main.js index c09e380..98d6b09 100644 --- a/src/main.js +++ b/src/main.js @@ -1,5 +1,5 @@ require("@electron/remote/main").initialize(); -const { app, BrowserWindow, components, globalShortcut, ipcMain, protocol } = require("electron"); +const { app, BrowserWindow, components, globalShortcut, ipcMain, protocol, session } = require("electron"); const { settings, store, @@ -146,6 +146,16 @@ function addGlobalShortcuts() { app.on("ready", async () => { if (isMainInstanceOrMultipleInstancesAllowed()) { await components.whenReady(); + + // Adblock + if (store.get(settings.adBlock)) { + const filter = { urls: ["https://listen.tidal.com/*"] }; + session.defaultSession.webRequest.onBeforeRequest(filter, (details, callback) => { + if (details.url.match(/\d\?country/)) callback({ cancel: true }); + else callback({ cancel: false }); + }); + } + createWindow(); addMenu(mainWindow); createSettingsWindow(); diff --git a/src/pages/settings/preload.js b/src/pages/settings/preload.js index 49c23a8..93ff4d9 100644 --- a/src/pages/settings/preload.js +++ b/src/pages/settings/preload.js @@ -3,15 +3,14 @@ let trayIcon, mpris, enableCustomHotkeys, enableDiscord, - muteArtists, skipArtists, notifications, playBackControl, api, port, menuBar, - mutedArtists, skippedArtists, + adBlock, disableBackgroundThrottle, singleInstance, disableHardwareMediaKeys, @@ -36,10 +35,9 @@ function refreshSettings() { enableCustomHotkeys.checked = store.get(settings.enableCustomHotkeys); enableDiscord.checked = store.get(settings.enableDiscord); minimizeOnClose.checked = store.get(settings.minimizeOnClose); - muteArtists.checked = store.get(settings.muteArtists); - mutedArtists.value = store.get(settings.mutedArtists).join("\n"); skipArtists.checked = store.get(settings.skipArtists); skippedArtists.value = store.get(settings.skippedArtists).join("\n"); + adBlock.checked = store.get(settings.adBlock); singleInstance.checked = store.get(settings.singleInstance); disableHardwareMediaKeys.checked = store.get(settings.flags.disableHardwareMediaKeys); gpuRasterization.checked = store.get(settings.flags.gpuRasterization); @@ -121,10 +119,9 @@ window.addEventListener("DOMContentLoaded", () => { mpris = get("mprisCheckbox"); enableCustomHotkeys = get("enableCustomHotkeys"); enableDiscord = get("enableDiscord"); - muteArtists = get("muteArtists"); - mutedArtists = get("mutedArtists"); skipArtists = get("skipArtists"); skippedArtists = get("skippedArtists"); + adBlock = get("adBlock"); disableBackgroundThrottle = get("disableBackgroundThrottle"); singleInstance = get("singleInstance"); disableHardwareMediaKeys = get("disableHardwareMediaKeys"); @@ -142,10 +139,9 @@ window.addEventListener("DOMContentLoaded", () => { addInputListener(enableCustomHotkeys, settings.enableCustomHotkeys); addInputListener(enableDiscord, settings.enableDiscord); addInputListener(minimizeOnClose, settings.minimizeOnClose); - addInputListener(muteArtists, settings.muteArtists); - addTextAreaListener(mutedArtists, settings.mutedArtists); addInputListener(skipArtists, settings.skipArtists); addTextAreaListener(skippedArtists, settings.skippedArtists); + addInputListener(adBlock, settings.adBlock); addInputListener(disableBackgroundThrottle, settings.disableBackgroundThrottle); addInputListener(singleInstance, settings.singleInstance); addInputListener(disableHardwareMediaKeys, settings.flags.disableHardwareMediaKeys); diff --git a/src/pages/settings/settings.html b/src/pages/settings/settings.html index 85bf67f..09d0ee1 100644 --- a/src/pages/settings/settings.html +++ b/src/pages/settings/settings.html @@ -54,26 +54,25 @@

Notifications

-

Mute Artists automatically

-

The following list of artists (1 per line) will be muted automatically.

+

Skip Artists automatically

+

The following list of artists (1 per line) will be skipped automatically.

- +
-

Skip Artists automatically

-

The following list of artists (1 per line) will be skipped automatically.

+

Block ads

+

Enjoys ad-free playback with video feature enabled for free accounts.

-
diff --git a/src/preload.js b/src/preload.js index e23d6ed..72fe193 100644 --- a/src/preload.js +++ b/src/preload.js @@ -13,7 +13,6 @@ const appName = "Tidal Hifi"; let currentSong = ""; let player; let currentPlayStatus = statuses.paused; -let isMutedArtist = true; const elements = { play: '*[data-test="play"]', @@ -329,7 +328,6 @@ setInterval(function () { const title = elements.getText("title"); const artists = elements.getArtists(); skipArtistsIfFoundInSkippedArtistsList(artists); - muteArtistIfFoundInMutedArtistsList(artists); // doing this here so that nothing can possibly fail before we call this function const album = elements.getAlbumName(); const current = elements.getText("current"); @@ -381,24 +379,6 @@ setInterval(function () { () => {} ); - /** - * Checks whether the current artist is included in the "muted artists" list and if so it will automatically mute the player - */ - function muteArtistIfFoundInMutedArtistsList(artists) { - if (store.get(settings.muteArtists)) { - const mutedArtists = store.get(settings.mutedArtists); - if (mutedArtists.find((artist) => artist === artists) !== undefined) { - if (!elements.isMuted()) { - isMutedArtist = true; - elements.click("volume"); - } - } else if (isMutedArtist && elements.isMuted()) { - elements.click("volume"); - isMutedArtist = false; - } - } - } - /** * automatically skip a song if the artists are found in the list of artists to skip * @param {*} artists list of artists to skip diff --git a/src/scripts/settings.js b/src/scripts/settings.js index fe79179..bd30cd0 100644 --- a/src/scripts/settings.js +++ b/src/scripts/settings.js @@ -10,10 +10,9 @@ const store = new Store({ notifications: true, api: true, playBackControl: true, - muteArtists: false, - mutedArtists: ["TIDAL"], skipArtists: false, skippedArtists: [""], + adBlock: false, disableBackgroundThrottle: true, menuBar: true, apiSettings: {