From 925ef98985e8fbf06ed7954dbc282b6844ceb835 Mon Sep 17 00:00:00 2001 From: amontariol <51965949+amontariol@users.noreply.github.com> Date: Tue, 18 Nov 2025 16:47:28 +0100 Subject: [PATCH 01/25] Plugin that tries to skip live versions of songs --- src/i18n/resources/en.json | 4 ++ src/plugins/skip-live-songs/index.ts | 75 +++++++++++++++++++++++++ src/plugins/skip-live-songs/patterns.ts | 39 +++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 src/plugins/skip-live-songs/index.ts create mode 100644 src/plugins/skip-live-songs/patterns.ts diff --git a/src/i18n/resources/en.json b/src/i18n/resources/en.json index 4cf482aa3b..7e0aa60939 100644 --- a/src/i18n/resources/en.json +++ b/src/i18n/resources/en.json @@ -802,6 +802,10 @@ "description": "Automatically skip silences sections in songs", "name": "Skip Silences" }, + "skip-live-songs": { + "description": "Automatically tries to skip renditions of songs", + "name": "Skip Live Songs" + }, "sponsorblock": { "description": "Automatically Skips non-music parts like intro/outro or parts of music videos where the song isn't playing", "name": "SponsorBlock" diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts new file mode 100644 index 0000000000..0481e4b8a2 --- /dev/null +++ b/src/plugins/skip-live-songs/index.ts @@ -0,0 +1,75 @@ +import { t } from '@/i18n'; +import { createPlugin } from '@/utils'; +import type { SongInfo } from '@/providers/song-info'; +import { nonStudioPatterns } from './patterns'; + +export default createPlugin({ + name: () => t('plugins.skip-live-songs.name'), + description: () => t('plugins.skip-live-songs.description'), + restartNeeded: false, + config: { + enabled: false, + }, + renderer: { + lastSkippedVideoId: '', + + _skipLiveHandler: undefined as unknown as ((songInfo: SongInfo) => void) | undefined, + + start({ ipc }) { + console.debug('[Skip Live Songs] Renderer started'); + + const SELECTORS = [ + 'yt-icon-button.next-button', + '.next-button', + 'button[aria-label*="Next"]', + 'button[aria-label*="next"]', + '#player-bar-next-button', + 'ytmusic-player-bar .next-button', + '.player-bar .next-button', + ]; + + const handler = (songInfo: SongInfo) => { + const titleToCheck = songInfo.alternativeTitle || songInfo.title; + if (!titleToCheck) return; + + // Skip if we've already attempted this video id + if (songInfo.videoId === this.lastSkippedVideoId) return; + + const isNonStudio = nonStudioPatterns.some(pattern => pattern.test(titleToCheck)); + + if (!isNonStudio) return; // studio version — nothing to do + + // Mark as attempted so we don't loop repeatedly + this.lastSkippedVideoId = songInfo.videoId; + console.info(`[Skip Live Songs] Skipping non-studio song: "${titleToCheck}" (id: ${songInfo.videoId})`); + + let clicked = false; + for (const sel of SELECTORS) { + const button = document.querySelector(sel); + if (button) { + button.click(); + console.debug(`[Skip Live Songs] Clicked next button using selector: ${sel}`); + clicked = true; + break; + } + } + + if (!clicked) { + console.warn('[Skip Live Songs] Could not find next button with any configured selector'); + } + }; + + this._skipLiveHandler = handler; + ipc.on('peard:update-song-info', handler); + }, + + // Unregister the ipc handler on plugin stop to avoid duplicate listeners on hot reload + stop({ ipc }) { + if (this._skipLiveHandler) { + ipc.removeAllListeners('peard:update-song-info'); + this._skipLiveHandler = undefined; + console.debug('[Skip Live Songs] Renderer stopped and listeners removed'); + } + }, + }, +}); diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts new file mode 100644 index 0000000000..181f9fb366 --- /dev/null +++ b/src/plugins/skip-live-songs/patterns.ts @@ -0,0 +1,39 @@ +/** + * Patterns to detect non-studio recordings + * + * Add or modify patterns here to customize what gets skipped. + * All patterns are not case-sensitive. + */ + +export const nonStudioPatterns = [ + // "Live" in specific contexts (not as part of song title) + /[\(\[]live[\)\]]/i, // "(Live)" or "[Live]" in parentheses/brackets + /live\s+(at|from|in|on|with|@)/i, // "Live at", "Live from", "Live in", etc. + /live\s+with\b/i, // "Live with" (e.g. "Live with the SFSO") + /-\s*live\s*$/i, // "- Live" at the end of title + /:\s*live\s*$/i, // ": Live" at the end of title + + // Concert/Performance indicators + /\b(concert|festival|tour)\b/i, // Concert, Festival, Tour + /\(.*?(concert|live performance|live recording).*?(19|20)\d{2}\)/i, // (Live 1985), (Concert 2024) + + // Recording types + /\b(acoustic|unplugged|rehearsal|demo)\b/i, // Acoustic, Unplugged, Rehearsal, Demo + + // Venues + /\b(arena|stadium|center|centre|hall)\b/i, // Arena, Stadium, Center, Hall + /\bmadison\s+square\s+garden\b/i, // Madison Square Garden + /day\s+on\s+the\s+green/i, // Day on the Green + + // Famous venues/festivals + /\b(wembley|glastonbury|woodstock|coachella)\b/i, // Wembley, Glastonbury, Woodstock, Coachella + + // Dates and locations + /\b(january|february|march|april|may|june|july|august|september|october|november|december)\s+\d+/i, // "September 22", "August 31" + /\b\d{1,2}[/-]\d{1,2}[/-]\d{2,4}\b/, // Date formats: 09/22/2024, 9-22-24 + /\b[A-Z][a-z]+,\s*[A-Z]{2}\b/, // Locations: "Oakland, CA", "London, UK" + /\b[A-Z][a-z]+\s+City\b/i, // Cities: "Mexico City", "New York City" + /\b(tokyo|paris|berlin|sydney)\b/i, // More cities + /\b(bbc|radio|session)\b/i, // Radio sessions +]; + From bee0523eecf3b9214f8df7c5727c0144ee8f5121 Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:07:07 +0100 Subject: [PATCH 02/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index 0481e4b8a2..6b2ebfd265 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -1,5 +1,6 @@ import { t } from '@/i18n'; import { createPlugin } from '@/utils'; + import type { SongInfo } from '@/providers/song-info'; import { nonStudioPatterns } from './patterns'; From 7ab5bf3b028dc9bd037e93f290f61c20d75f0ea6 Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:07:15 +0100 Subject: [PATCH 03/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index 6b2ebfd265..2e67e208a7 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -2,6 +2,7 @@ import { t } from '@/i18n'; import { createPlugin } from '@/utils'; import type { SongInfo } from '@/providers/song-info'; + import { nonStudioPatterns } from './patterns'; export default createPlugin({ From 63776bf897de4270cdfb66917434504310414ffa Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:07:33 +0100 Subject: [PATCH 04/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index 2e67e208a7..e581414a3f 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -2,8 +2,8 @@ import { t } from '@/i18n'; import { createPlugin } from '@/utils'; import type { SongInfo } from '@/providers/song-info'; - import { nonStudioPatterns } from './patterns'; +import type { SongInfo } from '@/providers/song-info'; export default createPlugin({ name: () => t('plugins.skip-live-songs.name'), From 4e6256ef9a9d9eb060ff7e35266432ffdd8f694f Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:07:40 +0100 Subject: [PATCH 05/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index e581414a3f..f3b254f4c5 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -15,7 +15,9 @@ export default createPlugin({ renderer: { lastSkippedVideoId: '', - _skipLiveHandler: undefined as unknown as ((songInfo: SongInfo) => void) | undefined, + _skipLiveHandler: undefined as unknown as + | ((songInfo: SongInfo) => void) + | undefined, start({ ipc }) { console.debug('[Skip Live Songs] Renderer started'); From e1f559e7a72cfb992ad2b16a7a20331d8bdebe03 Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:07:49 +0100 Subject: [PATCH 06/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index f3b254f4c5..ad3fc9a016 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -39,7 +39,9 @@ export default createPlugin({ // Skip if we've already attempted this video id if (songInfo.videoId === this.lastSkippedVideoId) return; - const isNonStudio = nonStudioPatterns.some(pattern => pattern.test(titleToCheck)); + const isNonStudio = nonStudioPatterns.some((pattern) => + pattern.test(titleToCheck), + ); if (!isNonStudio) return; // studio version — nothing to do From f63bb72ee371be9bbb8e2266f287eed19a2b94de Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:07:55 +0100 Subject: [PATCH 07/25] Update src/plugins/skip-live-songs/patterns.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/patterns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index 181f9fb366..61ddb25088 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -22,7 +22,7 @@ export const nonStudioPatterns = [ // Venues /\b(arena|stadium|center|centre|hall)\b/i, // Arena, Stadium, Center, Hall - /\bmadison\s+square\s+garden\b/i, // Madison Square Garden + /\bmadison\s+square\s+garden\b/i, // Madison Square Garden /day\s+on\s+the\s+green/i, // Day on the Green // Famous venues/festivals From 43992d735ddafe686b2e22dde393cb8f4143a7ca Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:08:01 +0100 Subject: [PATCH 08/25] Update src/plugins/skip-live-songs/patterns.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/patterns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index 61ddb25088..66f09105ef 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -23,7 +23,7 @@ export const nonStudioPatterns = [ // Venues /\b(arena|stadium|center|centre|hall)\b/i, // Arena, Stadium, Center, Hall /\bmadison\s+square\s+garden\b/i, // Madison Square Garden - /day\s+on\s+the\s+green/i, // Day on the Green + /day\s+on\s+the\s+green/i, // Day on the Green // Famous venues/festivals /\b(wembley|glastonbury|woodstock|coachella)\b/i, // Wembley, Glastonbury, Woodstock, Coachella From 10c4584e7a1fdc4377138ff722ccb5ac3ddb74cd Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:08:07 +0100 Subject: [PATCH 09/25] Update src/plugins/skip-live-songs/patterns.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/patterns.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index 66f09105ef..364ad6a092 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -24,7 +24,6 @@ export const nonStudioPatterns = [ /\b(arena|stadium|center|centre|hall)\b/i, // Arena, Stadium, Center, Hall /\bmadison\s+square\s+garden\b/i, // Madison Square Garden /day\s+on\s+the\s+green/i, // Day on the Green - // Famous venues/festivals /\b(wembley|glastonbury|woodstock|coachella)\b/i, // Wembley, Glastonbury, Woodstock, Coachella From c60d715df70a70a279be2b6c4db4fb2ee9a6b9ed Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:08:13 +0100 Subject: [PATCH 10/25] Update src/plugins/skip-live-songs/patterns.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/patterns.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index 364ad6a092..e05a8bacea 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -26,7 +26,6 @@ export const nonStudioPatterns = [ /day\s+on\s+the\s+green/i, // Day on the Green // Famous venues/festivals /\b(wembley|glastonbury|woodstock|coachella)\b/i, // Wembley, Glastonbury, Woodstock, Coachella - // Dates and locations /\b(january|february|march|april|may|june|july|august|september|october|november|december)\s+\d+/i, // "September 22", "August 31" /\b\d{1,2}[/-]\d{1,2}[/-]\d{2,4}\b/, // Date formats: 09/22/2024, 9-22-24 From 0f9c16ecf84c6079e58789b424098519c17a0efd Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:08:20 +0100 Subject: [PATCH 11/25] Update src/plugins/skip-live-songs/patterns.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/patterns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index e05a8bacea..fdbc4722c1 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -28,7 +28,7 @@ export const nonStudioPatterns = [ /\b(wembley|glastonbury|woodstock|coachella)\b/i, // Wembley, Glastonbury, Woodstock, Coachella // Dates and locations /\b(january|february|march|april|may|june|july|august|september|october|november|december)\s+\d+/i, // "September 22", "August 31" - /\b\d{1,2}[/-]\d{1,2}[/-]\d{2,4}\b/, // Date formats: 09/22/2024, 9-22-24 + /\b\d{1,2}[/-]\d{1,2}[/-]\d{2,4}\b/, // Date formats: 09/22/2024, 9-22-24 /\b[A-Z][a-z]+,\s*[A-Z]{2}\b/, // Locations: "Oakland, CA", "London, UK" /\b[A-Z][a-z]+\s+City\b/i, // Cities: "Mexico City", "New York City" /\b(tokyo|paris|berlin|sydney)\b/i, // More cities From 70e6ce14709b2082c1acc996ae5e877e8cef2d52 Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:08:59 +0100 Subject: [PATCH 12/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index ad3fc9a016..da5e687369 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -54,7 +54,9 @@ export default createPlugin({ const button = document.querySelector(sel); if (button) { button.click(); - console.debug(`[Skip Live Songs] Clicked next button using selector: ${sel}`); + console.debug( + `[Skip Live Songs] Clicked next button using selector: ${sel}`, + ); clicked = true; break; } From e2c07fe691495e602ce3b19ca5125eeef19a03f4 Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:09:37 +0100 Subject: [PATCH 13/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index da5e687369..4924dd513f 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -47,7 +47,9 @@ export default createPlugin({ // Mark as attempted so we don't loop repeatedly this.lastSkippedVideoId = songInfo.videoId; - console.info(`[Skip Live Songs] Skipping non-studio song: "${titleToCheck}" (id: ${songInfo.videoId})`); + console.info( + `[Skip Live Songs] Skipping non-studio song: "${titleToCheck}" (id: ${songInfo.videoId})`, + ); let clicked = false; for (const sel of SELECTORS) { From 41f8334854145fcbc2a3d9f2cbc8324502fada03 Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:10:10 +0100 Subject: [PATCH 14/25] Update src/plugins/skip-live-songs/patterns.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/patterns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index fdbc4722c1..6daa2e656b 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -21,7 +21,7 @@ export const nonStudioPatterns = [ /\b(acoustic|unplugged|rehearsal|demo)\b/i, // Acoustic, Unplugged, Rehearsal, Demo // Venues - /\b(arena|stadium|center|centre|hall)\b/i, // Arena, Stadium, Center, Hall + /\b(arena|stadium|center|centre|hall)\b/i, // Arena, Stadium, Center, Hall /\bmadison\s+square\s+garden\b/i, // Madison Square Garden /day\s+on\s+the\s+green/i, // Day on the Green // Famous venues/festivals From 473c9423afee900412c3d58848b413883085abec Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:10:26 +0100 Subject: [PATCH 15/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index 4924dd513f..784f13454a 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -65,7 +65,9 @@ export default createPlugin({ } if (!clicked) { - console.warn('[Skip Live Songs] Could not find next button with any configured selector'); + console.warn( + '[Skip Live Songs] Could not find next button with any configured selector', + ); } }; From 548c53625bf6a9a440fc860310d8a060fbc5898a Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:10:41 +0100 Subject: [PATCH 16/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index 784f13454a..0f6afc6c13 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -80,7 +80,9 @@ export default createPlugin({ if (this._skipLiveHandler) { ipc.removeAllListeners('peard:update-song-info'); this._skipLiveHandler = undefined; - console.debug('[Skip Live Songs] Renderer stopped and listeners removed'); + console.debug( + '[Skip Live Songs] Renderer stopped and listeners removed', + ); } }, }, From dd350d4c2c5237b0dc9b5bff2783503d99279d07 Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:10:58 +0100 Subject: [PATCH 17/25] Update src/plugins/skip-live-songs/patterns.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/patterns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index 6daa2e656b..7d5e27d2a2 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -1,6 +1,6 @@ /** * Patterns to detect non-studio recordings - * + * * Add or modify patterns here to customize what gets skipped. * All patterns are not case-sensitive. */ From 16df9f32ded704f2aba41baa6912c66c8b92f943 Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:11:17 +0100 Subject: [PATCH 18/25] Update src/plugins/skip-live-songs/patterns.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/patterns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index 7d5e27d2a2..f6d3d4cf88 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -7,7 +7,7 @@ export const nonStudioPatterns = [ // "Live" in specific contexts (not as part of song title) - /[\(\[]live[\)\]]/i, // "(Live)" or "[Live]" in parentheses/brackets + /[\(\[]live[\)\]]/i, // "(Live)" or "[Live]" in parentheses/brackets /live\s+(at|from|in|on|with|@)/i, // "Live at", "Live from", "Live in", etc. /live\s+with\b/i, // "Live with" (e.g. "Live with the SFSO") /-\s*live\s*$/i, // "- Live" at the end of title From 00009640c8e462de2f68d94be68ff2927ff9e76c Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:11:37 +0100 Subject: [PATCH 19/25] Update src/plugins/skip-live-songs/patterns.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/patterns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index f6d3d4cf88..9cac84c06c 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -8,7 +8,7 @@ export const nonStudioPatterns = [ // "Live" in specific contexts (not as part of song title) /[\(\[]live[\)\]]/i, // "(Live)" or "[Live]" in parentheses/brackets - /live\s+(at|from|in|on|with|@)/i, // "Live at", "Live from", "Live in", etc. + /live\s+(at|from|in|on|with|@)/i, // "Live at", "Live from", "Live in", etc. /live\s+with\b/i, // "Live with" (e.g. "Live with the SFSO") /-\s*live\s*$/i, // "- Live" at the end of title /:\s*live\s*$/i, // ": Live" at the end of title From 445448bcaa04e0f8ac5d467a04e4c3052278a0ef Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:11:55 +0100 Subject: [PATCH 20/25] Update src/plugins/skip-live-songs/patterns.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/patterns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index 9cac84c06c..fedc53803a 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -9,7 +9,7 @@ export const nonStudioPatterns = [ // "Live" in specific contexts (not as part of song title) /[\(\[]live[\)\]]/i, // "(Live)" or "[Live]" in parentheses/brackets /live\s+(at|from|in|on|with|@)/i, // "Live at", "Live from", "Live in", etc. - /live\s+with\b/i, // "Live with" (e.g. "Live with the SFSO") + /live\s+with\b/i, // "Live with" (e.g. "Live with the SFSO") /-\s*live\s*$/i, // "- Live" at the end of title /:\s*live\s*$/i, // ": Live" at the end of title From 36c3d096a8e0e011060ef281a707b27679d47bca Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:12:13 +0100 Subject: [PATCH 21/25] Update src/plugins/skip-live-songs/patterns.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/patterns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index fedc53803a..b831b1e7fc 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -10,7 +10,7 @@ export const nonStudioPatterns = [ /[\(\[]live[\)\]]/i, // "(Live)" or "[Live]" in parentheses/brackets /live\s+(at|from|in|on|with|@)/i, // "Live at", "Live from", "Live in", etc. /live\s+with\b/i, // "Live with" (e.g. "Live with the SFSO") - /-\s*live\s*$/i, // "- Live" at the end of title + /-\s*live\s*$/i, // "- Live" at the end of title /:\s*live\s*$/i, // ": Live" at the end of title // Concert/Performance indicators From 2f02ace938e874d3d0405a691f875730f33feae1 Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:16:44 +0100 Subject: [PATCH 22/25] Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 1 + src/plugins/skip-live-songs/patterns.ts | 17 +++++++---------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index 0f6afc6c13..1f88860b95 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -2,6 +2,7 @@ import { t } from '@/i18n'; import { createPlugin } from '@/utils'; import type { SongInfo } from '@/providers/song-info'; + import { nonStudioPatterns } from './patterns'; import type { SongInfo } from '@/providers/song-info'; diff --git a/src/plugins/skip-live-songs/patterns.ts b/src/plugins/skip-live-songs/patterns.ts index b831b1e7fc..d498243d87 100644 --- a/src/plugins/skip-live-songs/patterns.ts +++ b/src/plugins/skip-live-songs/patterns.ts @@ -11,15 +11,12 @@ export const nonStudioPatterns = [ /live\s+(at|from|in|on|with|@)/i, // "Live at", "Live from", "Live in", etc. /live\s+with\b/i, // "Live with" (e.g. "Live with the SFSO") /-\s*live\s*$/i, // "- Live" at the end of title - /:\s*live\s*$/i, // ": Live" at the end of title - + /:\s*live\s*$/i, // ": Live" at the end of title // Concert/Performance indicators - /\b(concert|festival|tour)\b/i, // Concert, Festival, Tour + /\b(concert|festival|tour)\b/i, // Concert, Festival, Tour /\(.*?(concert|live performance|live recording).*?(19|20)\d{2}\)/i, // (Live 1985), (Concert 2024) - // Recording types - /\b(acoustic|unplugged|rehearsal|demo)\b/i, // Acoustic, Unplugged, Rehearsal, Demo - + /\b(acoustic|unplugged|rehearsal|demo)\b/i, // Acoustic, Unplugged, Rehearsal, Demo // Venues /\b(arena|stadium|center|centre|hall)\b/i, // Arena, Stadium, Center, Hall /\bmadison\s+square\s+garden\b/i, // Madison Square Garden @@ -29,9 +26,9 @@ export const nonStudioPatterns = [ // Dates and locations /\b(january|february|march|april|may|june|july|august|september|october|november|december)\s+\d+/i, // "September 22", "August 31" /\b\d{1,2}[/-]\d{1,2}[/-]\d{2,4}\b/, // Date formats: 09/22/2024, 9-22-24 - /\b[A-Z][a-z]+,\s*[A-Z]{2}\b/, // Locations: "Oakland, CA", "London, UK" - /\b[A-Z][a-z]+\s+City\b/i, // Cities: "Mexico City", "New York City" - /\b(tokyo|paris|berlin|sydney)\b/i, // More cities - /\b(bbc|radio|session)\b/i, // Radio sessions + /\b[A-Z][a-z]+,\s*[A-Z]{2}\b/, // Locations: "Oakland, CA", "London, UK" + /\b[A-Z][a-z]+\s+City\b/i, // Cities: "Mexico City", "New York City" + /\b(tokyo|paris|berlin|sydney)\b/i, // More cities + /\b(bbc|radio|session)\b/i, // Radio sessions ]; From 5e586545a9504f549933e4756f238f94ba22a1eb Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:16:55 +0100 Subject: [PATCH 23/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index 1f88860b95..5bb053ed1d 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -4,6 +4,7 @@ import { createPlugin } from '@/utils'; import type { SongInfo } from '@/providers/song-info'; import { nonStudioPatterns } from './patterns'; + import type { SongInfo } from '@/providers/song-info'; export default createPlugin({ From d6c4f78409850a54ea6a0bb627504e311958c67d Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:17:32 +0100 Subject: [PATCH 24/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index 5bb053ed1d..94bd6e0214 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -2,8 +2,8 @@ import { t } from '@/i18n'; import { createPlugin } from '@/utils'; import type { SongInfo } from '@/providers/song-info'; - import { nonStudioPatterns } from './patterns'; +import type { SongInfo } from '@/providers/song-info'; import type { SongInfo } from '@/providers/song-info'; From e6a93399fb8d66e5c951ab840228e6cae1adb911 Mon Sep 17 00:00:00 2001 From: Adrien Montariol <51965949+amontariol@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:17:45 +0100 Subject: [PATCH 25/25] Update src/plugins/skip-live-songs/index.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/plugins/skip-live-songs/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/skip-live-songs/index.ts b/src/plugins/skip-live-songs/index.ts index 94bd6e0214..fc4308b500 100644 --- a/src/plugins/skip-live-songs/index.ts +++ b/src/plugins/skip-live-songs/index.ts @@ -3,7 +3,6 @@ import { createPlugin } from '@/utils'; import type { SongInfo } from '@/providers/song-info'; import { nonStudioPatterns } from './patterns'; -import type { SongInfo } from '@/providers/song-info'; import type { SongInfo } from '@/providers/song-info';