diff --git a/plugins/lyrics-genius/front.js b/plugins/lyrics-genius/front.js
index 48227e1d..b8e78c1c 100644
--- a/plugins/lyrics-genius/front.js
+++ b/plugins/lyrics-genius/front.js
@@ -3,20 +3,34 @@ const is = require("electron-is");
module.exports = () => {
ipcRenderer.on("update-song-info", (_, extractedSongInfo) => {
- const lyricsTab = document.querySelector('tp-yt-paper-tab[tabindex="-1"]');
+ const tabList = document.querySelectorAll("tp-yt-paper-tab");
+ const tabs = {
+ upNext: tabList[0],
+ lyrics: tabList[1],
+ discover: tabList[2],
+ }
// Check if disabled
- if (!lyricsTab || !lyricsTab.hasAttribute("disabled")) {
+ if (!tabs.lyrics?.hasAttribute("disabled")) {
return;
}
+ let hasLyrics = true;
+
const html = ipcRenderer.sendSync(
"search-genius-lyrics",
extractedSongInfo
);
if (!html) {
+ // Delete previous lyrics if tab is open and couldn't get new lyrics
+ checkLyricsContainer(() => {
+ hasLyrics = false;
+ setTabsOnclick(undefined);
+ });
return;
- } else if (is.dev()) {
+ }
+
+ if (is.dev()) {
console.log("Fetched lyrics from Genius");
}
@@ -35,27 +49,16 @@ module.exports = () => {
return;
}
- lyricsTab.removeAttribute("disabled");
- lyricsTab.removeAttribute("aria-disabled");
- document.querySelector("tp-yt-paper-tab").onclick = () => {
- lyricsTab.removeAttribute("disabled");
- lyricsTab.removeAttribute("aria-disabled");
- };
+ enableLyricsTab();
- lyricsTab.onclick = () => {
+ setTabsOnclick(enableLyricsTab);
+
+ checkLyricsContainer();
+
+ tabs.lyrics.onclick = () => {
const tabContainer = document.querySelector("ytmusic-tab-renderer");
const observer = new MutationObserver((_, observer) => {
- const lyricsContainer = document.querySelector(
- '[page-type="MUSIC_PAGE_TYPE_TRACK_LYRICS"] > ytmusic-message-renderer'
- );
- if (lyricsContainer) {
- lyricsContainer.innerHTML = `
- ${lyrics}
-
-
-
`;
- observer.disconnect();
- }
+ checkLyricsContainer(() => observer.disconnect());
});
observer.observe(tabContainer, {
attributes: true,
@@ -63,5 +66,41 @@ module.exports = () => {
subtree: true,
});
};
+
+ function checkLyricsContainer(callback = () => {}) {
+ const lyricsContainer = document.querySelector(
+ '[page-type="MUSIC_PAGE_TYPE_TRACK_LYRICS"] > ytmusic-message-renderer'
+ );
+ if (lyricsContainer) {
+ callback();
+ setLyrics(lyricsContainer)
+ }
+ }
+
+ function setLyrics(lyricsContainer) {
+ lyricsContainer.innerHTML =
+ `
+ ${hasLyrics ? lyrics : 'Could not retrieve lyrics from genius'}
+
+
+ `;
+ if (hasLyrics) {
+ lyricsContainer.querySelector('.footer').textContent = 'Source: Genius';
+ enableLyricsTab();
+ }
+ }
+
+ function setTabsOnclick(callback) {
+ for (tab of [tabs.upNext, tabs.discover]) {
+ if (tab) {
+ tab.onclick = callback;
+ }
+ }
+ }
+
+ function enableLyricsTab() {
+ tabs.lyrics.removeAttribute("disabled");
+ tabs.lyrics.removeAttribute("aria-disabled");
+ }
});
};
diff --git a/plugins/lyrics-genius/style.css b/plugins/lyrics-genius/style.css
index 3b02cafb..26100bab 100644
--- a/plugins/lyrics-genius/style.css
+++ b/plugins/lyrics-genius/style.css
@@ -6,8 +6,7 @@
text-decoration: none;
}
-#contents.genius-lyrics {
- font-size: 1vw;
- opacity: 0.9;
- text-align: center;
+.description {
+ font-size: 1.1vw !important;
+ text-align: center !important;
}
diff --git a/providers/song-info.js b/providers/song-info.js
index c4028355..88f757a3 100644
--- a/providers/song-info.js
+++ b/providers/song-info.js
@@ -112,13 +112,12 @@ const suffixesToRemove = [
" - topic",
"vevo",
" (performance video)",
- " (official music video)",
- " (official video)",
" (clip officiel)",
];
function cleanupName(name) {
if (!name) return name;
+ name = name.replace(/\((?:official)?[ ]?(?:music)?[ ]?(?:lyric[s]?)?[ ]?(?:video)?\)$/i, '')
const lowCaseName = name.toLowerCase();
for (const suffix of suffixesToRemove) {
if (lowCaseName.endsWith(suffix)) {