mirror of
https://github.com/beetbox/beets.git
synced 2025-12-09 18:12:19 +01:00
Add explicit checks for lyrics texts fetched from the tested sources. - Introduced `LyricsPage` class to represent lyrics pages for integrated tests. - Configured expected lyrics for each of the URLs that are being fetched. - Consolidated integrated tests in a new `TestLyricsSources` class. - Mocked Google Search API to return the lyrics page under test.
555 lines
18 KiB
Python
555 lines
18 KiB
Python
from __future__ import annotations
|
|
|
|
import os
|
|
import textwrap
|
|
from typing import NamedTuple
|
|
from urllib.parse import urlparse
|
|
|
|
import pytest
|
|
|
|
|
|
def xfail_on_ci(msg: str) -> pytest.MarkDecorator:
|
|
return pytest.mark.xfail(
|
|
bool(os.environ.get("GITHUB_ACTIONS")),
|
|
reason=msg,
|
|
raises=AssertionError,
|
|
)
|
|
|
|
|
|
class LyricsPage(NamedTuple):
|
|
"""Lyrics page representation for integrated tests."""
|
|
|
|
url: str
|
|
lyrics: str
|
|
artist: str = "The Beatles"
|
|
track_title: str = "Lady Madonna"
|
|
url_title: str | None = None # only relevant to the Google backend
|
|
marks: list[str] = [] # markers for pytest.param
|
|
|
|
def __str__(self) -> str:
|
|
"""Return name of this test case."""
|
|
return f"{self.backend}-{self.source}"
|
|
|
|
@classmethod
|
|
def make(cls, url, lyrics, *args, **kwargs):
|
|
return cls(url, textwrap.dedent(lyrics).strip(), *args, **kwargs)
|
|
|
|
@property
|
|
def root_url(self) -> str:
|
|
return urlparse(self.url).netloc
|
|
|
|
@property
|
|
def source(self) -> str:
|
|
return self.root_url.replace("www.", "").split(".")[0]
|
|
|
|
@property
|
|
def backend(self) -> str:
|
|
if (source := self.source) in {"genius", "tekstowo", "lrclib"}:
|
|
return source
|
|
return "google"
|
|
|
|
|
|
lyrics_pages = [
|
|
LyricsPage.make(
|
|
"http://www.absolutelyrics.com/lyrics/view/the_beatles/lady_madonna",
|
|
"""
|
|
The Beatles - Lady Madonna
|
|
|
|
Lady Madonna, children at your feet.
|
|
Wonder how you manage to make ends meet.
|
|
Who finds the money? When you pay the rent?
|
|
Did you think that money was heaven sent?
|
|
Friday night arrives without a suitcase.
|
|
Sunday morning creep in like a nun.
|
|
Monday's child has learned to tie his bootlace.
|
|
See how they run.
|
|
Lady Madonna, baby at your breast.
|
|
Wonder how you manage to feed the rest.
|
|
See how they run.
|
|
Lady Madonna, lying on the bed,
|
|
Listen to the music playing in your head.
|
|
Tuesday afternoon is never ending.
|
|
Wednesday morning papers didn't come.
|
|
Thursday night you stockings needed mending.
|
|
See how they run.
|
|
Lady Madonna, children at your feet.
|
|
Wonder how you manage to make ends meet.
|
|
""",
|
|
url_title="Lady Madonna Lyrics :: The Beatles - Absolute Lyrics",
|
|
),
|
|
LyricsPage.make(
|
|
"https://www.azlyrics.com/lyrics/beatles/ladymadonna.html",
|
|
"""
|
|
Lady Madonna, children at your feet
|
|
Wonder how you manage to make ends meet
|
|
Who finds the money when you pay the rent
|
|
Did you think that money was Heaven sent?
|
|
Friday night arrives without a suitcase
|
|
Sunday morning creeping like a nun
|
|
Monday's child has learned to tie his bootlace
|
|
See how they run
|
|
|
|
Lady Madonna, baby at your breast
|
|
Wonders how you manage to feed the rest?
|
|
|
|
See how they run
|
|
|
|
Lady Madonna lying on the bed
|
|
Listen to the music playing in your head
|
|
|
|
Tuesday afternoon is never ending
|
|
Wednesday morning papers didn't come
|
|
Thursday night your stockings needed mending
|
|
See how they run
|
|
|
|
Lady Madonna, children at your feet
|
|
Wonder how you manage to make ends meet
|
|
""",
|
|
url_title="The Beatles - Lady Madonna Lyrics | AZLyrics.com",
|
|
marks=[xfail_on_ci("AZLyrics is blocked by Cloudflare")],
|
|
),
|
|
LyricsPage.make(
|
|
"http://www.chartlyrics.com/_LsLsZ7P4EK-F-LD4dJgDQ/Lady+Madonna.aspx",
|
|
"""
|
|
Lady Madonna,
|
|
Children at your feet
|
|
Wonder how you manage to make ends meet.
|
|
|
|
Who finds the money
|
|
When you pay the rent?
|
|
Did you think that money was heaven-sent?
|
|
|
|
Friday night arrives without a suitcase.
|
|
Sunday morning creeping like a nun.
|
|
Monday's child has learned to tie his bootlace.
|
|
|
|
See how they run.
|
|
|
|
Lady Madonna,
|
|
Baby at your breast
|
|
Wonders how you manage to feed the rest.
|
|
|
|
See how they run.
|
|
|
|
Lady Madonna,
|
|
Lying on the bed.
|
|
Listen to the music playing in your head.
|
|
|
|
Tuesday afternoon is never ending.
|
|
Wednesday morning papers didn't come.
|
|
Thursday night your stockings needed mending.
|
|
|
|
See how they run.
|
|
|
|
Lady Madonna,
|
|
Children at your feet
|
|
Wonder how you manage to make ends meet.
|
|
""",
|
|
url_title="The Beatles Lady Madonna lyrics",
|
|
),
|
|
LyricsPage.make(
|
|
"https://genius.com/The-beatles-lady-madonna-lyrics",
|
|
"""
|
|
[Intro: Instrumental]
|
|
|
|
[Verse 1: Paul McCartney]
|
|
Lady Madonna, children at your feet
|
|
Wonder how you manage to make ends meet
|
|
Who finds the money when you pay the rent?
|
|
Did you think that money was heaven sent?
|
|
|
|
[Bridge: Paul McCartney]
|
|
Friday night arrives without a suitcase
|
|
Sunday morning creeping like a nun
|
|
Monday's child has learned to tie his bootlace
|
|
See how they run
|
|
|
|
[Verse 2: Paul McCartney]
|
|
Lady Madonna, baby at your breast
|
|
Wonders how you manage to feed the rest
|
|
|
|
[Bridge: Paul McCartney, John Lennon & George Harrison]
|
|
[Tenor Saxophone Solo: Ronnie Scott]
|
|
See how they run
|
|
|
|
[Verse 3: Paul McCartney]
|
|
Lady Madonna, lying on the bed
|
|
Listen to the music playing in your head
|
|
|
|
[Bridge: Paul McCartney]
|
|
Tuesday afternoon is never ending
|
|
Wednesday morning papers didn't come
|
|
Thursday night your stockings needed mending
|
|
See how they run
|
|
|
|
[Verse 4: Paul McCartney]
|
|
Lady Madonna, children at your feet
|
|
Wonder how you manage to make ends meet
|
|
|
|
[Outro: Instrumental]
|
|
""",
|
|
marks=[xfail_on_ci("Genius returns 403 FORBIDDEN in CI")],
|
|
),
|
|
LyricsPage.make(
|
|
"https://www.lacoccinelle.net/259956-the-beatles-lady-madonna.html",
|
|
"""
|
|
Lady Madonna
|
|
Mademoiselle Madonna
|
|
|
|
Lady Madonna, children at your feet.
|
|
Mademoiselle Madonna, les enfants à vos pieds
|
|
Wonder how you manage to make ends meet.
|
|
Je me demande comment vous vous débrouillez pour joindre les deux bouts
|
|
Who finds the money, when you pay the rent ?
|
|
Qui trouve l'argent pour payer le loyer ?
|
|
Did you think that money was heaven sent ?
|
|
Pensiez-vous que ça allait être envoyé du ciel ?
|
|
|
|
Friday night arrives without a suitcase.
|
|
Le vendredi soir arrive sans bagages
|
|
Sunday morning creeping like a nun.
|
|
Le dimanche matin elle se traine comme une nonne
|
|
Monday's child has learned to tie his bootlace.
|
|
Lundi l'enfant a appris à lacer ses chaussures
|
|
See how they run.
|
|
Regardez comme ils courent
|
|
|
|
Lady Madonna, baby at your breast.
|
|
Mademoiselle Madonna, le bébé a votre sein
|
|
Wonder how you manage to feed the rest.
|
|
Je me demande comment vous faites pour nourrir le reste
|
|
|
|
Lady Madonna, lying on the bed,
|
|
Mademoiselle Madonna, couchée sur votre lit
|
|
Listen to the music playing in your head.
|
|
Vous écoutez la musique qui joue dans votre tête
|
|
""",
|
|
url_title="Paroles et traduction The Beatles : Lady Madonna - paroles de chanson", # noqa: E501
|
|
),
|
|
LyricsPage.make(
|
|
# note that this URL needs to be followed with a slash, otherwise it
|
|
# redirects to the same URL with a slash
|
|
"https://www.letras.mus.br/the-beatles/275/",
|
|
"""
|
|
Lady Madonna
|
|
Children at your feet
|
|
Wonder how you manage
|
|
To make ends meet
|
|
Who finds the money
|
|
When you pay the rent?
|
|
Did you think that money
|
|
Was Heaven sent?
|
|
Friday night arrives without a suitcase
|
|
Sunday morning creeping like a nun
|
|
Monday's child has learned
|
|
To tie his bootlace
|
|
See how they run
|
|
Lady Madonna
|
|
Baby at your breast
|
|
Wonders how you manage
|
|
To feed the rest
|
|
See how they run
|
|
Lady Madonna
|
|
Lying on the bed
|
|
Listen to the music
|
|
Playing in your head
|
|
Tuesday afternoon is neverending
|
|
Wednesday morning papers didn't come
|
|
Thursday night your stockings
|
|
Needed mending
|
|
See how they run
|
|
Lady Madonna
|
|
Children at your feet
|
|
Wonder how you manage
|
|
To make ends meet
|
|
""",
|
|
url_title="Lady Madonna - The Beatles - LETRAS.MUS.BR",
|
|
),
|
|
LyricsPage.make(
|
|
"https://lrclib.net/api/get/14038",
|
|
"""
|
|
[00:08.35] Lady Madonna, children at your feet
|
|
[00:12.85] Wonder how you manage to make ends meet
|
|
[00:17.56] Who finds the money when you pay the rent
|
|
[00:21.78] Did you think that money was heaven sent
|
|
[00:26.22] Friday night arrives without a suitcase
|
|
[00:30.02] Sunday morning creeping like a nun
|
|
[00:34.53] Monday's child has learned to tie his bootlace
|
|
[00:39.18] See how they run
|
|
[00:43.33] Lady Madonna, baby at your breast
|
|
[00:48.50] Wonders how you manage to feed the rest
|
|
[00:52.54]
|
|
[01:01.32] Ba-ba, ba-ba, ba-ba, ba-ba-ba
|
|
[01:05.03] Ba-ba, ba-ba, ba-ba, ba, ba-ba, ba-ba
|
|
[01:09.58] Ba-ba, ba-ba, ba-ba, ba-ba-ba
|
|
[01:14.27] See how they run
|
|
[01:19.05] Lady Madonna, lying on the bed
|
|
[01:22.99] Listen to the music playing in your head
|
|
[01:27.92]
|
|
[01:36.33] Tuesday afternoon is never ending
|
|
[01:40.47] Wednesday morning papers didn't come
|
|
[01:44.76] Thursday night your stockings needed mending
|
|
[01:49.35] See how they run
|
|
[01:53.73] Lady Madonna, children at your feet
|
|
[01:58.65] Wonder how you manage to make ends meet
|
|
[02:06.04]
|
|
""",
|
|
),
|
|
LyricsPage.make(
|
|
"https://www.lyricsmania.com/lady_madonna_lyrics_the_beatles.html",
|
|
"""
|
|
Lady Madonna, children at your feet.
|
|
Wonder how you manage to make ends meet.
|
|
Who finds the money? When you pay the rent?
|
|
Did you think that money was heaven sent?
|
|
|
|
Friday night arrives without a suitcase.
|
|
Sunday morning creep in like a nun.
|
|
Monday's child has learned to tie his bootlace.
|
|
See how they run.
|
|
|
|
Lady Madonna, baby at your breast.
|
|
Wonder how you manage to feed the rest.
|
|
|
|
See how they run.
|
|
Lady Madonna, lying on the bed,
|
|
Listen to the music playing in your head.
|
|
|
|
Tuesday afternoon is never ending.
|
|
Wednesday morning papers didn't come.
|
|
Thursday night you stockings needed mending.
|
|
See how they run.
|
|
|
|
Lady Madonna, children at your feet.
|
|
Wonder how you manage to make ends meet.
|
|
""",
|
|
url_title="The Beatles - Lady Madonna Lyrics",
|
|
),
|
|
LyricsPage.make(
|
|
"https://www.lyricsmode.com/lyrics/b/beatles/lady_madonna.html",
|
|
"""
|
|
Lady Madonna, children at your feet.
|
|
Wonder how you manage to make ends meet.
|
|
Who finds the money? When you pay the rent?
|
|
Did you think that money was heaven sent?
|
|
|
|
Friday night arrives without a suitcase.
|
|
Sunday morning creep in like a nun.
|
|
Mondays child has learned to tie his bootlace.
|
|
See how they run.
|
|
|
|
Lady Madonna, baby at your breast.
|
|
Wonder how you manage to feed the rest.
|
|
|
|
See how they run.
|
|
Lady Madonna, lying on the bed,
|
|
Listen to the music playing in your head.
|
|
|
|
Tuesday afternoon is never ending.
|
|
Wednesday morning papers didn't come.
|
|
Thursday night you stockings needed mending.
|
|
See how they run.
|
|
|
|
Lady Madonna, children at your feet.
|
|
Wonder how you manage to make ends meet.
|
|
""",
|
|
url_title="Lady Madonna lyrics by The Beatles - original song full text. Official Lady Madonna lyrics, 2024 version | LyricsMode.com", # noqa: E501
|
|
),
|
|
LyricsPage.make(
|
|
"https://www.lyricsontop.com/amy-winehouse-songs/jazz-n-blues-lyrics.html",
|
|
"""
|
|
It's all gone within two days,
|
|
Follow my father
|
|
His extravagant ways
|
|
So, if I got it out I'll spend it all.
|
|
Heading In parkway, til I hit the wall.
|
|
I cross my fingers at the cash machine,
|
|
As I check my balance I kiss the screen,
|
|
I love it when it says I got the main's
|
|
To got o Miss Sixty and pick up my jeans.
|
|
Money ever last long
|
|
Had to fight what's wrong,
|
|
Blow it all on bags and shoes,
|
|
Jazz n' blues.
|
|
Money ever last long,
|
|
Had to fight what's wrong,
|
|
Blow it all on bags and shoes,
|
|
Jazz n' blues.
|
|
|
|
Standing to the … bar today,
|
|
Waiting impatient to throw my cash away,
|
|
For that Russian JD and coke
|
|
Had the drinks all night, and now I am bold
|
|
But that's cool, cause I can buy more from you.
|
|
And I didn't forgot about that 50 Compton,
|
|
Tell you what? My fancy's coming through
|
|
I'll take you at shopping, can you wait til next June?
|
|
Yeah, Money ever last long
|
|
Had to fight what's wrong,
|
|
Blow it all on bags and shoes,
|
|
Jazz n' blues.
|
|
Money ever last long,
|
|
Had to fight what's wrong,
|
|
Blow it all on bags and shoes,
|
|
Jazz n' blues.
|
|
|
|
(Instrumental Break)
|
|
|
|
Money ever last long
|
|
Had to fight what's wrong,
|
|
Blow it all on bags and shoes,
|
|
Jazz n' blues.
|
|
Money ever last long,
|
|
Had to fight what's wrong,
|
|
Blow it all on bags and shoes,
|
|
Jazz n' blues.
|
|
Money ever last long,
|
|
Had to fight what's wrong,
|
|
Blow it all on bags and shoes,
|
|
Jazz n' blues.
|
|
""",
|
|
artist="Amy Winehouse",
|
|
track_title="Jazz N' Blues",
|
|
url_title="Amy Winehouse - Jazz N' Blues lyrics complete",
|
|
),
|
|
LyricsPage.make(
|
|
"https://www.musica.com/letras.asp?letra=59862",
|
|
"""
|
|
Lady Madonna, baby at your breast
|
|
Wonders how you manage to feed the rest
|
|
See how they run
|
|
Lady Madonna lying on the bed
|
|
Listen to the music playing in your head
|
|
Tuesday afternoon is never ending
|
|
Wednesday morning papers didn't come
|
|
Thursday night your stockings needed mending
|
|
See how they run
|
|
Lady Madonna, children at your feet
|
|
Wonder how you manage to make ends meet
|
|
""",
|
|
url_title="Lady Madonna - Letra - The Beatles - Musica.com",
|
|
),
|
|
LyricsPage.make(
|
|
"https://www.paroles.net/the-beatles/paroles-lady-madonna",
|
|
"""
|
|
Lady Madonna, children at your feet.
|
|
Wonder how you manage to make ends meet.
|
|
Who finds the money? When you pay the rent?
|
|
Did you think that money was heaven sent?
|
|
|
|
Friday night arrives without a suitcase.
|
|
Sunday morning creep in like a nun.
|
|
Monday's child has learned to tie his bootlace.
|
|
See how they run.
|
|
|
|
Lady Madonna, baby at your breast.
|
|
Wonders how you manage to feed the rest.
|
|
|
|
See how they run.
|
|
Lady Madonna, lying on the bed,
|
|
Listen to the music playing in your head.
|
|
""",
|
|
url_title="Paroles Lady Madonna par The Beatles - Lyrics - Paroles.net",
|
|
),
|
|
LyricsPage.make(
|
|
"https://www.songlyrics.com/the-beatles/lady-madonna-lyrics",
|
|
"""
|
|
Lady Madonna, children at your feet
|
|
Wonder how you manage to make ends meet
|
|
Who finds the money? When you pay the rent?
|
|
Did you think that money was Heaven sent?
|
|
Friday night arrives without a suitcase
|
|
Sunday morning creep in like a nun
|
|
Monday's child has learned to tie his bootlace
|
|
See how they run
|
|
|
|
Lady Madonna, baby at your breast
|
|
Wonder how you manage to feed the rest
|
|
|
|
See how they run
|
|
|
|
Lady Madonna, lying on the bed
|
|
Listen to the music playing in your head
|
|
|
|
Tuesday afternoon is never ending
|
|
Wednesday morning papers didn't come
|
|
Thursday night you stockings needed mending
|
|
See how they run
|
|
|
|
Lady Madonna, children at your feet
|
|
Wonder how you manage to make ends meet
|
|
""",
|
|
url_title="THE BEATLES - LADY MADONNA LYRICS",
|
|
),
|
|
LyricsPage.make(
|
|
"https://sweetslyrics.com/the-beatles/lady-madonna-lyrics",
|
|
"""
|
|
Lady Madonna, children at your feet.
|
|
Wonder how you manage to make ends meet.
|
|
Who finds the money when you pay the rent?
|
|
Did you think that money was heaven sent?
|
|
|
|
Friday night arrives without a suitcase.
|
|
Sunday morning creeping like a nun.
|
|
Monday's child has learned to tie his bootlace.
|
|
See how they run...
|
|
|
|
Lady Madonna, baby at your breast.
|
|
Wonders how you manage to feed the rest.
|
|
|
|
(Sax solo)
|
|
|
|
See how they run...
|
|
|
|
Lady Madonna, lying on the bed.
|
|
Listen to the music playing in your head.
|
|
|
|
Tuesday afternoon is never ending.
|
|
Wednesday morning papers didn't come.
|
|
Thursday night your stockings needed mending.
|
|
See how they run...
|
|
|
|
Lady Madonna, children at your feet.
|
|
Wonder how you manage to make ends meet.
|
|
""",
|
|
url_title="The Beatles - Lady Madonna",
|
|
),
|
|
LyricsPage.make(
|
|
"https://www.tekstowo.pl/piosenka,the_beatles,lady_madonna.html",
|
|
"""
|
|
Lady Madonna,
|
|
Children at your feet
|
|
Wonder how you manage to make ends meet.
|
|
|
|
Who find the money
|
|
When you pay the rent?
|
|
Did you think that money was Heaven sent?
|
|
|
|
Friday night arrives without a suitcase
|
|
Sunday morning creeping like a nun
|
|
Monday's child has learned to tie his bootlace
|
|
|
|
See how they run
|
|
|
|
Lady Madonna
|
|
Baby at your breast
|
|
Wonders how you manage to feed the rest
|
|
|
|
See how they run
|
|
|
|
Lady Madonna
|
|
Lying on the bed
|
|
Listen to the music playing in your head
|
|
|
|
Tuesday afternoon is neverending
|
|
Wednesday morning papers didn't come
|
|
Thursday night your stockings needed mending
|
|
|
|
See how they run
|
|
|
|
Lady Madonna,
|
|
Children at your feet
|
|
Wonder how you manage to make ends meet
|
|
""",
|
|
),
|
|
]
|