mirror of
https://github.com/beetbox/beets.git
synced 2025-12-24 01:25:47 +01:00
refactor scrape_lyrics_from_url into smaller functions
This commit is contained in:
parent
ea89cf32eb
commit
a938e68c98
3 changed files with 236 additions and 215 deletions
|
|
@ -24,6 +24,8 @@ import unicodedata
|
|||
import difflib
|
||||
import itertools
|
||||
|
||||
from bs4 import BeautifulSoup, Comment
|
||||
|
||||
from beets.plugins import BeetsPlugin
|
||||
from beets import ui
|
||||
from beets import config
|
||||
|
|
@ -340,25 +342,31 @@ def is_lyrics(text, artist=None):
|
|||
return len(badTriggersOcc) < 2
|
||||
|
||||
|
||||
def scrape_lyrics_from_url(url):
|
||||
"""Scrape lyrics from a URL. If no lyrics can be found, return None
|
||||
instead.
|
||||
def _scrape_normalize_eol(html):
|
||||
"""Return html text where only authorized eol marker is \n
|
||||
"""
|
||||
from bs4 import BeautifulSoup, Comment
|
||||
html = fetch_url(url)
|
||||
if not html:
|
||||
return None
|
||||
|
||||
soup = BeautifulSoup(html)
|
||||
|
||||
for tag in soup.findAll('br'):
|
||||
tag.replaceWith('\n')
|
||||
html.replace('\r','\n')
|
||||
# Replace <br> without introducing superfluous newline in the output
|
||||
BREAK_RE = re.compile(r'\n?\s*<br\s*/?>\s*\n?', re.I)
|
||||
html = BREAK_RE.sub('\n', html)
|
||||
return html
|
||||
|
||||
def _scrape_filter_soup(soup):
|
||||
"""Remove sections from soup that cannot be parents of lyrics section
|
||||
"""
|
||||
# Remove non relevant html parts
|
||||
[s.extract() for s in soup(['head', 'script'])]
|
||||
comments = soup.findAll(text=lambda text: isinstance(text, Comment))
|
||||
[s.extract() for s in comments]
|
||||
|
||||
# Remove ads now as they can interrupt the lyrics block
|
||||
ads = soup.find_all('div', class_=re.compile('ad'))
|
||||
[s.extract() for s in ads]
|
||||
return soup
|
||||
|
||||
def _scrape_streamline_soup(soup):
|
||||
"""Transform soup into a succession of <p></p> blocks
|
||||
"""
|
||||
try:
|
||||
for tag in soup.findAll(True):
|
||||
tag.name = 'p' # keep tag contents
|
||||
|
|
@ -379,20 +387,48 @@ def scrape_lyrics_from_url(url):
|
|||
pTag = soup.new_tag("p")
|
||||
bodyTag.parent.insert(0, pTag)
|
||||
pTag.insert(0, bodyTag)
|
||||
return soup
|
||||
|
||||
def _scrape_longest_paragraph(soup):
|
||||
"""Return longest paragraph from soup
|
||||
"""
|
||||
tagTokens = []
|
||||
|
||||
|
||||
for tag in soup.findAll('p'):
|
||||
soup2 = BeautifulSoup(str(tag))
|
||||
# Extract all text of <p> section.
|
||||
tagTokens += soup2.findAll(text=True)
|
||||
|
||||
if tagTokens:
|
||||
# Lyrics are expected to be the longest paragraph
|
||||
tagTokens = sorted(tagTokens, key=len, reverse=True)
|
||||
soup = BeautifulSoup(tagTokens[0])
|
||||
return unescape(tagTokens[0].strip("\n\r: "))
|
||||
|
||||
def _scrape_custom_process_soup(soup):
|
||||
"""Apply custom operations on soup to handle cases for specific websites
|
||||
"""
|
||||
# metrolyrics.com: lyrics text is splitted into multiple <p class='verse'>
|
||||
for match in soup.find_all('p', class_='verse'):
|
||||
match.insert_before('\n')
|
||||
match.unwrap()
|
||||
return soup
|
||||
|
||||
def scrape_lyrics_from_html(html):
|
||||
"""Scrape lyrics from a URL. If no lyrics can be found, return None
|
||||
instead.
|
||||
"""
|
||||
if not html:
|
||||
return None
|
||||
|
||||
html = _scrape_normalize_eol(html)
|
||||
soup = BeautifulSoup(html)
|
||||
soup = _scrape_filter_soup(soup)
|
||||
soup = _scrape_streamline_soup(soup)
|
||||
soup = _scrape_custom_process_soup(soup)
|
||||
# print(soup)
|
||||
soup = _scrape_longest_paragraph(soup)
|
||||
|
||||
return soup
|
||||
|
||||
def fetch_google(artist, title):
|
||||
"""Fetch lyrics from Google search results.
|
||||
|
|
@ -416,7 +452,9 @@ def fetch_google(artist, title):
|
|||
urlTitle = item['title']
|
||||
if not is_page_candidate(urlLink, urlTitle, title, artist):
|
||||
continue
|
||||
lyrics = scrape_lyrics_from_url(urlLink)
|
||||
|
||||
html = fetch_url(urlLink)
|
||||
lyrics = scrape_lyrics_from_html(html)
|
||||
if not lyrics:
|
||||
continue
|
||||
|
||||
|
|
|
|||
|
|
@ -64,36 +64,16 @@ def is_lyrics_content_ok(title, text):
|
|||
return False
|
||||
|
||||
|
||||
class LyricsPluginTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
"""Set up configuration"""
|
||||
lyrics.LyricsPlugin()
|
||||
|
||||
def test_default_ok(self):
|
||||
"""Test each lyrics engine with the default query"""
|
||||
|
||||
lyrics.fetch_url = MockFetchUrl()
|
||||
|
||||
for f in (lyrics.fetch_lyricswiki, lyrics.fetch_lyricscom):
|
||||
res = f(definfo['artist'], definfo['title'])
|
||||
self.assertTrue(lyrics.is_lyrics(res))
|
||||
self.assertTrue(is_lyrics_content_ok(definfo['title'], res))
|
||||
|
||||
def test_missing_lyrics(self):
|
||||
self.assertFalse(lyrics.is_lyrics(LYRICS_TEXTS['missing_texts']))
|
||||
|
||||
|
||||
class LyricsScrapingPluginTest(unittest.TestCase):
|
||||
|
||||
class LyricsSourcesPluginTest(unittest.TestCase):
|
||||
# Every source entered in default beets google custom search engine
|
||||
# must be listed below.
|
||||
# Use default query when possible, or override artist and title field
|
||||
# if website don't have lyrics for default query.
|
||||
sourcesOk = [
|
||||
dict(definfo, url='http://www.songlyrics.com',
|
||||
path=u'/the-beatles/lady-madonna-lyrics'),
|
||||
dict(definfo, url=u'http://www.elyricsworld.com',
|
||||
path=u'/lady_madonna_lyrics_beatles.html'),
|
||||
# dict(definfo, url='http://www.songlyrics.com',
|
||||
# path=u'/the-beatles/lady-madonna-lyrics'),
|
||||
# dict(definfo, url=u'http://www.elyricsworld.com',
|
||||
# path=u'/lady_madonna_lyrics_beatles.html'),
|
||||
dict(artist=u'Beres Hammond', title=u'I could beat myself',
|
||||
url=u'http://www.reggaelyrics.info',
|
||||
path=u'/beres-hammond/i-could-beat-myself'),
|
||||
|
|
@ -111,61 +91,65 @@ class LyricsScrapingPluginTest(unittest.TestCase):
|
|||
path=u'/lyrics/beatles/ladymadonna.html'),
|
||||
dict(definfo, url=u'http://www.chartlyrics.com',
|
||||
path=u'/_LsLsZ7P4EK-F-LD4dJgDQ/Lady+Madonna.aspx'),
|
||||
]
|
||||
|
||||
# Websites that can't be scraped yet and whose results must be
|
||||
# flagged as invalid lyrics.
|
||||
sourcesFail = [
|
||||
dict(definfo, url=u'http://www.smartlyrics.com',
|
||||
path=u'/Song18148-The-Beatles-Lady-Madonna-lyrics.aspx'),
|
||||
dict(definfo, url='http://www.metrolyrics.com/',
|
||||
path='best-for-last-lyrics-adele.html'),
|
||||
dict(definfo, artist=u'Lilly Wood & the prick', title=u"Hey it's ok",
|
||||
url=u'http://www.lyricsmania.com',
|
||||
path=u'/hey_its_ok_lyrics_lilly_wood_and_the_prick.html'),
|
||||
dict(definfo, url=u'http://www.lyrics007.com',
|
||||
path=u'/The%20Beatles%20Lyrics/Lady%20Madonna%20Lyrics.html'),
|
||||
dict(definfo, url=u'http://www.smartlyrics.com',
|
||||
path=u'/Song18148-The-Beatles-Lady-Madonna-lyrics.aspx'),
|
||||
dict(definfo, url='http://www.releaselyrics.com',
|
||||
path=u'/e35f/the-beatles-lady-madonna'),
|
||||
path=u'/e35f/the-beatles-lady-madonna'),
|
||||
dict(definfo, url='http://www.metrolyrics.com/',
|
||||
path='lady-madonna-lyrics-beatles.html'),
|
||||
]
|
||||
|
||||
# Websites that return truncated lyrics because of scraping issues, and
|
||||
# thus should not be included as sources to Google CSE.
|
||||
# They are good candidates for later inclusion after improvement
|
||||
# iterations of the scraping algorithm.
|
||||
sourcesIncomplete = [
|
||||
dict(definfo, artist=u'Lilly Wood & the prick', title=u"Hey it's ok",
|
||||
url=u'http://www.lacoccinelle.net',
|
||||
path=u'/paroles-officielles/550512.html'),
|
||||
# Websites that can't be scraped yet.
|
||||
# The reason why the scraping fail is indicated before each source dict.
|
||||
sourcesFail = [
|
||||
|
||||
|
||||
# Lyrics consist in multiple small <p> sections instead of a long one
|
||||
#dict(definfo, artist=u'Lilly Wood & the prick', title=u"Hey it's ok",
|
||||
# url=u'http://www.lacoccinelle.net',
|
||||
# path=u'/paroles-officielles/550512.html'),
|
||||
]
|
||||
|
||||
def setUp(self):
|
||||
"""Set up configuration"""
|
||||
lyrics.LyricsPlugin()
|
||||
lyrics.fetch_url = MockFetchUrl()
|
||||
|
||||
def test_default_ok(self):
|
||||
"""Test each lyrics engine with the default query"""
|
||||
|
||||
for f in (lyrics.fetch_lyricswiki, lyrics.fetch_lyricscom):
|
||||
res = f(definfo['artist'], definfo['title'])
|
||||
self.assertTrue(lyrics.is_lyrics(res))
|
||||
self.assertTrue(is_lyrics_content_ok(definfo['title'], res))
|
||||
|
||||
def test_missing_lyrics(self):
|
||||
self.assertFalse(lyrics.is_lyrics(LYRICS_TEXTS['missing_texts']))
|
||||
|
||||
def test_sources_ok(self):
|
||||
for s in self.sourcesOk:
|
||||
url = s['url'] + s['path']
|
||||
res = lyrics.scrape_lyrics_from_url(url)
|
||||
res = lyrics.scrape_lyrics_from_html(lyrics.fetch_url(url))
|
||||
self.assertTrue(lyrics.is_lyrics(res), url)
|
||||
self.assertTrue(is_lyrics_content_ok(s['title'], res), url)
|
||||
|
||||
def test_sources_fail(self):
|
||||
for s in self.sourcesFail:
|
||||
url = s['url'] + s['path']
|
||||
res = lyrics.scrape_lyrics_from_url(url)
|
||||
# very unlikely these sources pass if the scraping algo is not
|
||||
# tweaked on purpose for these cases
|
||||
self.assertFalse(lyrics.is_lyrics(res), "%s => %s" % (url, res))
|
||||
|
||||
def test_sources_incomplete(self):
|
||||
for s in self.sourcesIncomplete:
|
||||
url = s['url'] + s['path']
|
||||
res = lyrics.scrape_lyrics_from_url(url)
|
||||
|
||||
self.assertTrue(lyrics.is_lyrics(res))
|
||||
# these sources may pass if the html source evolve or after
|
||||
# a random improvement in the scraping algo: we want to
|
||||
# be noticed if it's the case.
|
||||
if is_lyrics_content_ok(s['title'], res):
|
||||
log.debug(u'Source {0} actually return valid lyrics!'
|
||||
.format(s['url']))
|
||||
url = s['url'] + s['path']
|
||||
html = lyrics.fetch_url(url)
|
||||
res = lyrics.scrape_lyrics_from_html(html)
|
||||
if lyrics.is_lyrics(res):
|
||||
if is_lyrics_content_ok(s['title'], res):
|
||||
log.info(u'{0} can be added to sources :\n{1}'
|
||||
.format(s['url'], res))
|
||||
else:
|
||||
log.info(u'{0} return invalid lyrics:\n{1}'.
|
||||
format(s['url'], res))
|
||||
|
||||
def test_is_page_candidate(self):
|
||||
for s in self.sourcesOk:
|
||||
|
|
|
|||
|
|
@ -1,155 +1,154 @@
|
|||
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="ie7 oldie"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="ie8 oldie"> <![endif]-->
|
||||
<!--[if gt IE 8]><!-->
|
||||
<html>
|
||||
<!--<![endif]-->
|
||||
<head>
|
||||
<title>The Beatles - Lady Madonna Lyrics</title>
|
||||
<meta http-equiv=content-language content=en-us>
|
||||
<meta name="robots" content="INDEX,FOLLOW" >
|
||||
<meta property="fb:admins" content="100002318964661" />
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="content-language" content="en-us">
|
||||
<meta name="keywords" content="Lady Madonna, The Beatles, The Beatles Lady Madonna Lyrics, Lady Madonna song lyrics, Lady Madonna lyrics">
|
||||
<meta name="description" content="Read guaranteed accurate human-edited The Beatles Lady Madonna lyrics from lyrics007">
|
||||
<link rel="canonical" href="http://www.lyrics007.com/The%20Beatles%20Lyrics/Lady%20Madonna%20Lyrics.html" />
|
||||
<link rel="stylesheet" href="http://www.lyrics007.com/s.css" rev="stylesheet" type="text/css">
|
||||
<link href='http://fonts.googleapis.com/css?family=Oswald' rel='stylesheet' type='text/css'>
|
||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://www.lyrics007.com/lyrics007.js"></script>
|
||||
<script type="text/javascript" >
|
||||
/* 007 - 728x90 - Top - Brand Ads only */
|
||||
cf_page_artist = "The Beatles";
|
||||
cf_page_song = "Lady Madonna";
|
||||
</script>
|
||||
<meta property="fb:admins" content="100002318964661" />
|
||||
<title>The Beatles Lady Madonna Lyrics | Lyrics007</title>
|
||||
<link href="/boilerplate.css" rel="stylesheet" type="text/css">
|
||||
<link href="/007.css" rel="stylesheet" type="text/css">
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<script src="/respond.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript" src="/top.js"></script>
|
||||
<div class="ads_728">
|
||||
<script type="text/javascript">
|
||||
cf_page_genre = "";
|
||||
cf_adunit_id = "39380715";
|
||||
</script>
|
||||
<script src="//srv.clickfuse.com/showads/showad.php"></script></div>
|
||||
<div class="navigate"><a href="http://www.lyrics007.com">Home</a> >> The Beatles - Lady Madonna Lyrics</div>
|
||||
<div class="main">
|
||||
<h1>The Beatles - Lady Madonna Lyrics</h1>
|
||||
<div class="content">
|
||||
<div style="display:block;float:right;padding-top:10px;padding-right:0px;padding-bottom:10px;"><script type="text/javascript"><!--
|
||||
google_ad_client = "ca-pub-0919305250342516";
|
||||
/* 160x600, created 12/9/08 */
|
||||
google_ad_slot = "8583291572";
|
||||
google_ad_width = 160;
|
||||
google_ad_height = 600;
|
||||
//-->
|
||||
</script>
|
||||
<script type="text/javascript"
|
||||
src="//pagead2.googlesyndication.com/pagead/show_ads.js">
|
||||
</script></div>Writer(s):LENNON, JOHN WINSTON / MCCARTNEY, PAUL JAMES<br>Artist: <a href="http://www.lyrics007.com/The%20Beatles%20Lyrics.html">The Beatles Lyrics</a>
|
||||
<br>Popularity: 9957 users have visited this page.<br>Album: Track 22 on The Beatles Collection, Volume 5: Sgt. Pepper's Lonely Hearts Club Band<br>
|
||||
<div itemscope itemtype="http://data-vocabulary.org/Review-aggregate">Rate:
|
||||
<span itemprop="itemreviewed">Lady Madonna</span> gets avg. rating
|
||||
<span itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating">
|
||||
<span itemprop="average">7.3</span>
|
||||
out of <span itemprop="best">10</span>
|
||||
</span> based on <span itemprop="votes">3</span> ratings. Rate the song now!!!</div>
|
||||
<div class=rating></div><div class=rating></div><div class=rating></div><div class=rating></div><div class=rating></div><div class=rating></div><div class=rating></div><div class=rating></div><div class=rating></div><div class=rating></div><br><br>
|
||||
<div class="gridContainer clearfix">
|
||||
<div style="width:100%;text-align:center;">
|
||||
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<!-- auto_size -->
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-0919305250342516"
|
||||
data-ad-slot="9819980608"
|
||||
data-ad-format="auto"></ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script></div>
|
||||
<a href="http://www.lyrics007.com">Home</a> >> <a href="http://www.lyrics007.com/The%20Beatles%20Lyrics.html">The Beatles Lyrics</a> >> The Beatles - Lady Madonna Lyrics<div id="LayoutDiv1">
|
||||
<h1>The Beatles Lady Madonna Lyrics</h1>
|
||||
Artist: <a href="http://www.lyrics007.com/The Beatles%20Lyrics.html">The Beatles Lyrics</a>
|
||||
<br />Popularity : 2898 users have visited this page.
|
||||
<br />Album: Track 22 on <i>The Beatles Collection, Volume 5: Sgt. Pepper's Lonely Hearts Club Band</i>
|
||||
<br />Recorded: 3 and 6 February 1968, EMI Studios, London
|
||||
<br />Writer(s): Lennon–McCartney
|
||||
<br />Genre: Rock and roll
|
||||
<br />Producer(s): George Martin
|
||||
<br />Length: 2:16
|
||||
<br />Certification: Platinum (RIAA)<br />Format: 7" single
|
||||
<br />Label: Parlophone (UK), Capitol (US)
|
||||
<br />Released: 15 March 1968
|
||||
<br /><br><br>Lady Madonna, children at your feet
|
||||
<BR>
|
||||
Wonder how you manage to make ends meet
|
||||
<BR>
|
||||
Who find the money when you pay the rent
|
||||
<BR>
|
||||
Did you think that money was heaven sent
|
||||
<BR>
|
||||
|
||||
<!-- START: RTM Ad -->
|
||||
<div class="rtm_ad" data-sid="LWOS" data-subtag="ros" data-artist="The Beatles" data-song="Lady Madonna" data-search="">
|
||||
<!-- Note: This fail-safe link will be dynamically replaced -->
|
||||
<a href="http://www.ringtonematcher.com/go/?sid=LWOS" rel="nofollow" target="_blank" style="text-decoration: none;">
|
||||
<img src="//cdn.ringtonematcher.com/images/icons/phones/darkblue_left.gif" style="border-style: none; vertical-align: middle; margin-right: 5px;">
|
||||
<span style="text-decoration: underline; color: red; font: bold 16px Arial; verticalalign: middle;">Send Ringtones to your Cell</span>
|
||||
<img src="//cdn.ringtonematcher.com/images/icons/phones/darkblue_right.gif" style="border-style: none; verticalalign: middle; margin-left: 5px;"></a>
|
||||
</div>
|
||||
<!-- END: RTM Ad -->Lady Madonna, children at your feet<br />
|
||||
Wonder how you manage to make ends meet<br />
|
||||
Who find the money when you pay the rent<br />
|
||||
Did you think that money was heaven sent<br />
|
||||
<br />
|
||||
Friday night arrives without a suitcase<br />
|
||||
Sunday morning creeping like a nun<br />
|
||||
Monday's child has learned to tie his bootlegs<br />
|
||||
See how they run<br />
|
||||
<br />
|
||||
Lady Madonna, baby at your breast<br />
|
||||
Wonders how you manage to feed the rest<br />
|
||||
Pa pa pa pa,<br />
|
||||
See how they run<br />
|
||||
<br />
|
||||
Lady Madonna lying on the bed<br />
|
||||
Listen to the music playing in your head<br />
|
||||
<br />
|
||||
Tuesday afternoon is never ending<br />
|
||||
Wednesday morning papers didn't come<br />
|
||||
Thursday night you stocking needed mending<br />
|
||||
See how they run<br />
|
||||
<br />
|
||||
Lady Madonna, children at your feet<br />
|
||||
Wonder how you manage to make ends meet<br>
|
||||
<!-- START: RTM Ad -->
|
||||
<div class="rtm_ad" data-sid="LWOS" data-subtag="ros" data-artist="The Beatles" data-song="Lady Madonna" data-search="">
|
||||
<!-- Note: This fail-safe link will be dynamically replaced -->
|
||||
<a href="http://www.ringtonematcher.com/go/?sid=LWOS" rel="nofollow" target="_blank" style="text-decoration: none;">
|
||||
<img src="//cdn.ringtonematcher.com/images/icons/phones/darkblue_left.gif" style="border-style: none; vertical-align: middle; margin-right: 5px;">
|
||||
<span style="text-decoration: underline; color: red; font: bold 16px Arial; verticalalign: middle;">Send Ringtones to your Cell</span>
|
||||
<img src="//cdn.ringtonematcher.com/images/icons/phones/darkblue_right.gif" style="border-style: none; verticalalign: middle; margin-left: 5px;"></a>
|
||||
</div>
|
||||
<!-- END: RTM Ad -->
|
||||
<script language='javaScript' type='text/javascript'>
|
||||
document.write("<img src='http://licensing.lyrics007.com/in" + "fo.php?id=1536077&referer=0'>");
|
||||
</script><br>
|
||||
<form action="/correct.php" method="post" id="correctit" target="_blank">
|
||||
<input type="hidden" name="id" value="TXpJNU1UWXg" />
|
||||
</form><br>If you believe the lyrics are not correct you can <a href="#" onclick="document.getElementById('correctit').submit();return false;">Submit Corrections</a> to us<br>Add a comment and share what The Beatles Lady Madonna Lyrics means to you with your friends:<br>
|
||||
<fb:comments href="http://www.lyrics007.com/The%20Beatles%20Lyrics/Lady%20Madonna%20Lyrics.html" num_posts="5" width="640"></fb:comments>
|
||||
Featured lyrics:
|
||||
<ul>
|
||||
<li><a href="/Johnny%20Cash%20Lyrics/Ship%20Those%20Niggers%20Back%20Lyrics.html">Johnny Rebel - Ship Those Niggers Back Lyrics</a>
|
||||
<li><a href="/Demi%20Lovato%20Lyrics/Never%20Been%20Hurt%20Lyrics.html">Demi Lovato - Never Been Hurt Lyrics</a>
|
||||
<li><a href="/Blink-182%20Lyrics/Roller%20Coaster%20Lyrics.html">Blink-182 - Roller Coaster Lyrics</a>
|
||||
<li><a href="/Kenny%20Chesney%20Lyrics/I%20Go%20Back%20Lyrics.html">Kenny Chesney - I Go Back Lyrics</a>
|
||||
<li><a href="/Toto%20Lyrics/Hold%20The%20Line%20Lyrics.html">Toto - Hold the Line Lyrics</a>
|
||||
<li><a href="/Backstreet%20Boys%20Lyrics/The%20One%20Lyrics.html">Backstreet Boys - The One Lyrics</a>
|
||||
<li><a href="/Beyonce%20Lyrics/Standing%20On%20The%20Sun%20Lyrics.html">Beyonce - Standing On The Sun Lyrics</a>
|
||||
<li><a href="/Johnny%20Cash%20Lyrics/A%20Thing%20Called%20Love%20Lyrics.html">Johnny Cash - A Thing Called Love Lyrics</a>
|
||||
<li><a href="/Sugababes%20Lyrics/Too%20Lost%20In%20You%20Lyrics.html">Sugababes - Too Lost in You Lyrics</a>
|
||||
<li><a href="/Green%20Day%20Lyrics/Paranoia%20Lyrics.html">Harvey Danger - Flagpole Sitta Lyrics</a>
|
||||
</ul>Lyrics © Sony/ATV Music Publishing LLC
|
||||
<br><img src="/images/LF.png">
|
||||
</div>
|
||||
<div class="side_bar">
|
||||
<script type="text/javascript"><!--
|
||||
google_ad_client = "ca-pub-0919305250342516";
|
||||
/* 300x250, created 9/18/08 */
|
||||
google_ad_slot = "8367624871";
|
||||
google_ad_width = 300;
|
||||
google_ad_height = 250;
|
||||
//-->
|
||||
</script>
|
||||
<script type="text/javascript"
|
||||
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
|
||||
</script><br>
|
||||
<form action="/print.php" method="post" id="printit" target="_blank">
|
||||
<input type="hidden" name="id" value="TXpJNU1UWXg" /></form><br><div style="width:300px;">
|
||||
<div style="width: 60px; float: left;"><a class=twitter-share-button href="https://twitter.com/share" data-count="vertical" data-lang="en" data-url="http://www.lyrics007.com/The%20Beatles%20Lyrics/Lady%20Madonna%20Lyrics.html">Tweet</a></div>
|
||||
<div style="width:60px; float:right;"><a href="#" onclick="document.getElementById('printit').submit();return false;" rel="nofollow"><img src="/images/print.gif" border=0></a></div>
|
||||
<div style="width:80px;padding-left:30px; float:left;">
|
||||
<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
|
||||
<g:plusone size="tall"></g:plusone></div>
|
||||
<div style="width:70px; flat:left;" class="fb-like" data-href="http://www.lyrics007.com/The%20Beatles%20Lyrics/Lady%20Madonna%20Lyrics.html" data-send="false" data-layout="box_count" data-width="70" data-show-faces="false"></div>
|
||||
</div><br>More lyrics from The Beatles Collection, Volume 5: Sgt. Pepper's Lonely Hearts Club Band album<br>
|
||||
<ol><li><a href="/The%20Beatles%20Lyrics/Sgt.%20Pepper's%20Lonely%20Hearts%20Club%20Band%20Lyrics.html">Sgt. Pepper's Lonely Hearts Club Band Lyrics</a><li><a href="/The%20Beatles%20Lyrics/A%20Little%20Help%20From%20My%20Friends%20Lyrics.html">With a Little Help From My Friends Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Lucy%20in%20the%20Sky%20with%20Diamonds%20Lyrics.html">Lucy in the Sky With Diamonds Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Getting%20Better%20Lyrics.html">Getting Better Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Fixing%20a%20Hole%20Lyrics.html">Fixing a Hole Lyrics</a><li><a href="/The%20Beatles%20Lyrics/She's%20Leaving%20Home%20Lyrics.html">She's Leaving Home Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Being%20For%20The%20Benefit%20Of%20Mr.%20Kite%20Lyrics.html">Being for the Benefit of Mr. Kite Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Within%20You%20Without%20You%20Lyrics.html">Within You Without You Lyrics</a><li><a href="/The%20Beatles%20Lyrics/When%20I'm%20Sixty-four%20Lyrics.html">When I'm Sixty-Four Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Lovely%20Rita%20Lyrics.html">Lovely Rita Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Good%20Morning%20Good%20Morning%20Lyrics.html">Good Morning Good Morning Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Sgt.%20Pepper's%20Lonely%20Hearts%20Club%20Band%20(Reprise)%20Lyrics.html">Sgt. Pepper's Lonely Hearts Club Band (reprise) Lyrics</a><li><a href="/The%20Beatles%20Lyrics/A%20Day%20in%20Life%20Lyrics.html">A Day in the Life Lyrics</a><li><a href="/The%20Beatles%20Lyrics/I%20Want%20To%20Hold%20Your%20Hand%20Lyrics.html">I Want to Hold Your Hand Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Long%20Tall%20Sally%20Lyrics.html">Long Tall Sally Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Yes%20It%20Is%20Lyrics.html">Yes It Is Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Day%20Tripper%20Lyrics.html">Day Tripper Lyrics</a><li><a href="/The%20Beatles%20Lyrics/We%20Can%20Work%20It%20Out%20Lyrics.html">We Can Work It Out Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Paperback%20Writer%20Lyrics.html">Paperback Writer Lyrics</a><li><a href="/The%20Beatles%20Lyrics/The%20Inner%20Light%20Lyrics.html">The Inner Light Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Revolution%20Lyrics.html">Revolution Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Lady%20Madonna%20Lyrics.html">Lady Madonna Lyrics</a><li><a href="/The%20Beatles%20Lyrics/Hey%20Jude%20Lyrics.html">Hey Jude Lyrics</a></ol><script>
|
||||
<BR>
|
||||
Friday night arrives without a suitcase
|
||||
<BR>
|
||||
Sunday morning creeping like a nun
|
||||
<BR>
|
||||
Monday's child has learned to tie his bootlace
|
||||
<BR>
|
||||
See how they run
|
||||
<BR>
|
||||
|
||||
<BR>
|
||||
Lady Madonna, baby at your breast
|
||||
<BR>
|
||||
Wonders how you manage to feed the rest
|
||||
<div class="ad300"><font color=red>sponsored links</font><br><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<!-- l_007 -->
|
||||
<ins class="adsbygoogle"
|
||||
style="display:inline-block;width:300px;height:250px"
|
||||
data-ad-client="ca-pub-0919305250342516"
|
||||
data-ad-slot="2166102852"></ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script></div>
|
||||
<BR>
|
||||
|
||||
<BR>
|
||||
See how they run
|
||||
<BR>
|
||||
|
||||
<BR>
|
||||
Lady Madonna lying on the bed
|
||||
<BR>
|
||||
Listen to the music playing in your head
|
||||
<BR>
|
||||
|
||||
<BR>
|
||||
Tuesday afternoon is never ending
|
||||
<BR>
|
||||
Wednesday morning papers didn't come
|
||||
<BR>
|
||||
Thursday night your stocking needed mending
|
||||
<BR>
|
||||
See how they run
|
||||
<BR>
|
||||
|
||||
<BR>
|
||||
Lady Madonna, children at your feet
|
||||
<BR>
|
||||
Wonder how you manage to make ends meet
|
||||
<br><br>Thanks to Quidam for the correction
|
||||
<div class="album_cover"><img src="/images/cover_art/80/23/9" alt="The Beatles's Lady Madonna album cover" title="The Beatles's Lady Madonna album cover"></div><center><iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.lyrics007.com%2FThe%2520Beatles%2520Lyrics%2FLady%2520Madonna%2520Lyrics.html&width&layout=button_count&action=like&show_faces=false&share=true&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:21px; width:150px;" allowTransparency="true"></iframe></center><div style="clear:both;text-align:center;"><script>
|
||||
/* Lyrics007 - 300x250 - Brand Ads Only */
|
||||
cf_page_artist = "The Beatles";
|
||||
cf_page_song = "Lady Madonna";
|
||||
cf_page_genre = "";
|
||||
cf_adunit_id = "39380716";
|
||||
cf_adunit_id = "39380905";
|
||||
</script>
|
||||
<script src="//srv.clickfuse.com/showads/showad.php"></script>
|
||||
<br><br>
|
||||
<script src="//srv.clickfuse.com/showads/showad.php"></script></div>
|
||||
<div id="disqus_thread"></div>
|
||||
<script type="text/javascript">
|
||||
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
|
||||
var disqus_shortname = 'mylyrics007'; // required: replace example with your forum shortname
|
||||
|
||||
/* * * DON'T EDIT BELOW THIS LINE * * */
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
|
||||
<br>The hottest lyrics from The Beatles<ul><ul><li><a href="/The%20Beatles%20Lyrics/Let%20it%20Be%20Lyrics.html">Let It Be Lyrics</a>
|
||||
<li><a href="/The%20Beatles%20Lyrics/Here%20Comes%20The%20Sun%20Lyrics.html">Here Comes the Sun Lyrics</a>
|
||||
<li><a href="/The%20Beatles%20Lyrics/Come%20Together%20Lyrics.html">Come Together Lyrics</a>
|
||||
<li><a href="/The%20Beatles%20Lyrics/Across%20The%20Universe%20Lyrics.html">Across the Universe Lyrics</a>
|
||||
<li><a href="/The%20Beatles%20Lyrics/While%20My%20Guitar%20Gently%20Weeps%20Lyrics.html">While My Guitar Gently Weeps Lyrics</a>
|
||||
<li><a href="/The%20Beatles%20Lyrics/Yesterday%20Lyrics.html">Yesterday Lyrics</a>
|
||||
<li><a href="/The%20Beatles%20Lyrics/Help!%20Lyrics.html">Help! Lyrics</a>
|
||||
<li><a href="/The%20Beatles%20Lyrics/Revolution%20Lyrics.html">Revolution Lyrics</a>
|
||||
<li><a href="/The%20Beatles%20Lyrics/Hello%20Goodbye%20Lyrics.html">Hello Goodbye Lyrics</a>
|
||||
<li><a href="/The%20Beatles%20Lyrics/Can't%20Buy%20Me%20Love%20Lyrics.html">Can't Buy Me Love Lyrics</a>
|
||||
</ul></ul>
|
||||
|
||||
<br>
|
||||
<script language="javascript" type="text/javascript">
|
||||
document.write("<img src=\"http://licensing.lyrics007.com/info.php?id=1536077\">");
|
||||
</script>
|
||||
<br><img src="/images/LF.png">
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">Lyrics007 gets licensed to display lyrics and pay the lyrics writers through LyricFind. The most of song titles are calibrated according to wikipedia</div>
|
||||
<div class="copyright"> ©COPYRIGHT 2012, LYRICS007.COM, ALL RIGHTS RESERVED.</div>
|
||||
<div id="myDiv"></div>
|
||||
<div> ©COPYRIGHT 2014, LYRICS007.COM, ALL RIGHTS RESERVED.</div>
|
||||
<!--329161-->
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue