Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

MetroLyrics API

Project description

This repo is actually not directly related to Taylor Swift. It’s just a simple Python API for getting lyrics from MetroLyrics. Here is how easy it is:

from tswift import Artist
import random

tswift = Artist('Taylor Swift')
song = random.choice(tswift.songs)


This package depends on lxml, requests, and google. These should be installed when you install this package from pip:

pip install tswift

After installing, you can also print a random Taylor Swift song lyric with the command:



The module comes with a simple command line interface. By default, it will display a random song by Taylor Swift. You can specify an artist like this:

tswift 'Lynyrd Skynyrd'

You can choose a particular song:

tswift 'Lynyrd Skynyrd' -s Freebird

There is also a “lyric search mode”, which allows you to search for a song by lyrics, e.g.:

tswift -l 'I would walk 500 miles'

Im Gonna Be 500 Miles

When I wake up, well I know I'm gonna be,
I'm gonna be the man who wakes up next you


Artist class

The constructor takes a single argument, the artist name. This name will be “slugified” in order to use it within URLs. This process involves replacing spaces with hyphens, and making everything lowercase. If this is not sufficient for your particular artist, you’ll need to provide a pre-slugified version of their name.

  • songs - a list of Song instances by this artist. This will call load() if it hasn’t been called yet
  • name - the artist’s slugified name
  • load() - populates the songs list

Song class

The constructor can be called in two ways. In the first, you provide a Metrolyrics URL, and the class will infer the artist and song title:

s = Song(url='url here')

In the second way, you provide a title and artist, which will be slugified.

s = Song('Taylor Swift', 'Love Story')

The attributes are:

  • lyrics - a string. Accessing this will call load() if not yet loaded
  • title - de-slugified title of song
  • artist - de-slugified artist name
  • load() - loads the lyrics
  • format() - returns the lyrics, with a header that includes the title and artist.

The static method Song.find_song(lyrics) takes a string with a search term, and performs a Google search. It returns a Song instance corresponding to the first Metrolyrics link it finds, stopping after 20 results. If nothing is found, returns None.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for tswift, version 0.7.0
Filename, size File type Python version Upload date Hashes
Filename, size tswift-0.7.0-py2.py3-none-any.whl (6.1 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size tswift-0.7.0.tar.gz (5.2 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page