Beispiel #1
0
def get_lyrics(track):
    """Get the lyrics for a track using the AzLyrics API. If no
    lyrics are available, return an empty string."""
    credit = track['recording']['artist-credit'][0]
    artist = credit['artist']['name']
    song = track['recording']['title']

    az = Azlyrics(artist, song)
    cache_key = '_'.join(az.normalize_artist_music())
    lyrics = cache.get(cache_key)

    if lyrics is None:
        try:
            lyrics = to_ascii(az.format_lyrics(az.get_lyrics()))
        except Exception:
            lyrics = ""  # lyrics not available
        cache.add(cache_key, lyrics)
    return lyrics
Beispiel #2
0
 def get_songs_lyrics(self, artist, songs):
     lyrics = []
     prev = time.time()
     for i, song in enumerate(songs):
         print('**** {}. SONG: {} ****'.format(i, song))
         try:
             lyric = Azlyrics(artist, song).get_lyrics()[0][2:]
         except Exception as e:
             lyric = ""
         lyrics.append(lyric)
         t = random.randint(5, 15)
         time.sleep(t)
     print("{} took {:.2f} minutes to crawl.".format(
         artist, (time.time() - prev) / 60))
     return lyrics
Beispiel #3
0
 def test_title_capitalized(self):
     expected = "Sun by Two Door Cinema Club"
     az = Azlyrics("Two door cinema club", "sun")
     self.assertEqual(expected, az.format_title())
Beispiel #4
0
 def test_format_lyric(self):
     expected = "blablabla\n2bla2bla2bla"
     az = Azlyrics("", "")
     self.assertEqual(expected,
                      az.format_lyrics(["blablabla", "2bla2bla2bla"]))
Beispiel #5
0
 def test_normalize_artist_music(self):
     az = Azlyrics("Artista", "MUsica")
     artist, music = az.normalize_artist_music()
     self.assertEqual("artista", artist)
     self.assertEqual("musica", music)
Beispiel #6
0
 def test_lyric_in_two_divs_not_alone(self):
     expected = ["Run, Run", "Far Away"]
     mock_page = "<div>Run, Run</div><p>OKOKOK</p><div>Far Away</div>"
     az = Azlyrics("", "")
     self.assertEqual(expected, az.extract_lyrics(mock_page))
Beispiel #7
0
 def test_lyric_in_one_div(self):
     expected = ["Run, Run"]
     mock_page = "<div>Run, Run</div>"
     az = Azlyrics("", "")
     self.assertEqual(expected, az.extract_lyrics(mock_page))
Beispiel #8
0
 def test_url_with_special_chars(self):
     expected = "http://azlyrics.com/lyrics/legiaourbana/tempoperdido.html"
     az = Azlyrics("Legião Urbana", "Tempo Perdido")
     self.assertEqual(expected, az.url())
Beispiel #9
0
 def test_url_spaces(self):
     expected = "http://azlyrics.com/lyrics/brunoetrio/garimpo.html"
     az = Azlyrics("Bruno e Trio", "Garimpo")
     self.assertEqual(expected, az.url())
Beispiel #10
0
 def test_url_uppercase(self):
     expected = "http://azlyrics.com/lyrics/molejo/cilada.html"
     az = Azlyrics("MOLEJO", "CILADA")
     self.assertEqual(expected, az.url())
Beispiel #11
0
    def test_url_default_generate_rick_roll(self):

        expected = "http://azlyrics.com/lyrics/rickastley/nevergonnagiveyouup.html"
        az = Azlyrics("", "")
        self.assertEqual(expected, az.url())
Beispiel #12
0
    for synced_line in str(synced_lyrics).splitlines():
        time.sleep(float(synced_line.split('\t', 1)[0]))
        print(synced_line.split('\t', 1)[1])


if __name__ == '__main__':
    args = parse_args()
    metadata = retrieve_spotify_metadata()

    artist = metadata['xesam:artist'][0]
    title = metadata['xesam:title'].split(" (feat.", 1)[0]
    title = title.split(' (with', 1)[0]

    print('{0} - {1}'.format(artist, title))

    az = Azlyrics(artist, title)
    lyrics = az.get_lyrics()
    formatted_lyrics = az.format_lyrics(lyrics)
    sync = sync.Sync(artist, title)

    if args.sync:
        synced_lyrics = ''
        restart_song()
        for phrase in formatted_lyrics.splitlines():
            start_time = time.time()
            input()
            print(phrase)
            synced_lyrics += '{}\t{}\n'.format(str(time.time() - start_time),
                                               phrase)
        sync.save_synced_lyrics(synced_lyrics)