def get_lyrics_by_match_query(musixmatch_api: Musixmatch, q_track: str,
                               q_artist: str):
     response: dict = {}
     try:
         response: dict = musixmatch_api.matcher_lyrics_get(
             q_track=q_track, q_artist=q_artist)
         response = response.get("message")
     except Exception as e:
         logger.error(e)
     return response
Exemplo n.º 2
0
def get_song_musixmatch(track_name, artist_name):
    musixmatch = Musixmatch(MUSIXMATCH_TOKEN)
    response = musixmatch.matcher_lyrics_get(track_name, artist_name)

    if response['message']['header']['status_code'] != 200:
        return None

    lyrics = add_line_breaks(
        response['message']['body']['lyrics']['lyrics_body'].split('\n'))

    return {
        'lyrics': lyrics if lyrics != [""] else None,
        'source': 'Musixmatch',
    }
Exemplo n.º 3
0
def get_lyrics_mus(artist, artist2, song):
    credentials = json.load(open("authorization.json"))
    musixmatch_key = credentials['musixmatch_key']

    if artist2 is not None:
        artist_details = artist + ' feat ' + artist2
    else:
        artist_details = artist
    mus = Musixmatch(musixmatch_key)
    response = mus.matcher_lyrics_get(q_track=song, q_artist=artist_details)

    if len(response['message']['body']) != 0:
        print(response['message']['body']['lyrics']['lyrics_body'])
        return response['message']['body']['lyrics']['lyrics_body']
    return None
Exemplo n.º 4
0
Arquivo: tests.py Projeto: ccmmaa/idb
    def test_song(self):
        song_id = '3nWzRkoCa44adZZ00li9sF'
        track = spotify.track(song_id)

        track_name = track['name']

        musixmatch = Musixmatch('a4eb641afe366d7ce6d2013779c11916')

        lyrics_res = musixmatch.matcher_lyrics_get(
            q_artist='Big Sean', q_track=track_name)['message']
        if lyrics_res['header']['status_code'] == 200:
            lyrics = lyrics_res['body']['lyrics']['lyrics_body']
        else:
            lyrics = 'Lyrics Not Available for This Song'

        cor_song_res = [
            'Go Legend (& Metro Boomin)',
            "If young Metro don't trust you, I'm gon' shoot you\nDo you know where you're going to?\nDo you like the things that life is showing you?\nWhere are you going to? (straight)\nDo you know?\n\n[Chorus: Travis Scott & Big Sean]\nMe and my best friend, 7-Eleven (yeah)\nWe go legend, we go legend (yeah, yeah)\nWe go legend, we go legend (alright)\nWe go legend, we go legend, yeah\nMe and my best friend, 7-Eleven, yeah\nWe go legend (go), we go legend (go), yeah (yeah)\nWe go legend (go), we go legend (go legend)\nWe go legend, we go legend, yeah\nWith my best friend (alright), 7-Eleven (whoa)\nWe go legend, (yeah) we can go legend\nCodeine legend (yeah, yeah), microphone legend\nWe go legend, yeah\n\n\nIn my house, yeah, hear alarms\nRingin' through my house (through my house), got 'em goin'\nClimbing in and out (in and out)\nWhat you knowin'? Never run your mouth (never run your mouth)\n \n\nLook, bitch, this not a drill, this the real thing (whoa)\nI do what the f**k I feel, f**k your feelings, yeah\nMade my blueprints, so my life got no ceilings (I don't see 'em)\nI create the energy that they keep stealing, yeah\n...\n\n******* This Lyrics is NOT for Commercial use *******\n(1409617537910)"
        ]

        self.assertEqual([track_name, lyrics], cor_song_res)
Exemplo n.º 5
0
class TestMusixmatch(unittest.TestCase):
    def setUp(self):
        self.musixmatch = Musixmatch(os.environ.get('APIKEY'))
        self.url = 'http://api.musixmatch.com/ws/1.1/'

    def test_get_url(self):
        self.assertEqual(
            self.musixmatch._get_url('chart.artists.get?'
                                     'page=1&page_size=1&country=us'
                                     '&format=json'),
            self.url + 'chart.artists.get?'
            'page=1&page_size=1'
            '&country=us&format=json&apikey={}'.format(
                os.environ.get('APIKEY')))

    def test_apikey(self):
        self.assertEqual(self.musixmatch._apikey, os.environ.get('APIKEY'))

    def test_chart_artists(self):
        self.assertEqual(
            self.musixmatch.chart_artists(1, 1)['message']['body']
            ['artist_list'][0]['artist']['artist_vanity_id'], 'Ed-Sheeran')
        self.assertEqual(
            self.musixmatch.chart_artists(1, 1)['message']['body']
            ['artist_list'][0]['artist']['artist_mbid'],
            'b8a7c51f-362c-4dcb-a259-bc6e0095f0a6')

    def test_chart_tracks_get(self):
        self.assertEqual(
            self.musixmatch.chart_tracks_get(
                1, 1,
                1)['message']['body']['track_list'][0]['track']['album_name'],
            '2U (feat. Justin Bieber)')
        self.assertEqual(
            self.musixmatch.chart_tracks_get(
                1, 1,
                1)['message']['body']['track_list'][0]['track']['track_name'],
            '2U')

    def test_track_search(self):
        self.assertEqual(
            self.musixmatch.track_search(
                q_track='Let Me Love You',
                q_artist='justinbieber',
                page_size=10,
                page=1,
                s_track_rating='desc')['message']['body']['track_list'], [])

    def test_track_get(self):
        self.assertEqual(
            self.musixmatch.track_get(15445219)['message']['body']['track']
            ['artist_name'], 'Lady Gaga')
        self.assertEqual(
            self.musixmatch.track_get(15445219)['message']['body']['track']
            ['album_name'], 'The Fame Monster')

    def test_track_lyrics_get(self):
        self.assertEqual(
            self.musixmatch.track_lyrics_get(15953433)['message']['body']
            ['lyrics']['lyrics_language'], 'en')
        self.assertEqual(
            self.musixmatch.track_lyrics_get(15953433)['message']['body']
            ['lyrics']['lyrics_language_description'], 'English')
        self.assertEqual(
            self.musixmatch.track_lyrics_get(15953433)['message']['body']
            ['lyrics']['lyrics_id'], 15912802)

    def test_track_snippet_get(self):
        self.assertEqual(
            self.musixmatch.track_snippet_get(16860631)['message']['body']
            ['snippet']['snippet_id'], 16229519)
        self.assertEqual(
            self.musixmatch.track_snippet_get(16860631)['message']['body']
            ['snippet']['snippet_body'], "You shoot me down, but I won't fall")

    def test_track_subtitle_get(self):
        self.assertEqual(
            self.musixmatch.track_subtitle_get(14201829)['message']['body'],
            '')

    def test_track_richsync_get(self):
        self.assertEqual(
            self.musixmatch.track_richsync_get(114837357)['message']['body']
            ['richsync']['richsync_id'], 6)
        self.assertEqual(
            self.musixmatch.track_richsync_get(114837357)['message']['body']
            ['richsync']['richsync_length'], 230)

    def test_track_lyrics_post(self):
        self.assertEqual(
            self.musixmatch.track_lyrics_post(
                1471157, 'test')['message']['header']['status_code'], 200)
        self.assertEqual(
            self.musixmatch.track_lyrics_post(1471157,
                                              'test')['message']['body'], '')

    def test_track_lyrics_feedback_post(self):
        self.assertEqual(
            self.musixmatch.track_lyrics_post(
                1471157, 4193713, 'wrong_verses')['message']['body'], '')

    def test_matcher_lyrics_get(self):
        self.assertEqual(
            self.musixmatch.matcher_lyrics_get('Sexy and I know it',
                                               'LMFAO')['message']['body']
            ['lyrics']['lyrics_language_description'], 'English')
        self.assertEqual(
            self.musixmatch.matcher_lyrics_get(
                'Sexy and I know it',
                'LMFAO')['message']['body']['lyrics']['lyrics_language'], 'en')

    def test_matcher_track_get(self):
        self.assertEqual(
            self.musixmatch.matcher_track_get(
                'Lose Yourself (soundtrack)',
                'Eminem')['message']['body']['track']['track_name'],
            'Lose Yourself - '
            'Soundtrack Version'
            ' (Explicit)')
        self.assertEqual(
            self.musixmatch.matcher_track_get(
                'Lose Yourself (soundtrack)',
                'Eminem')['message']['body']['track']['album_name'],
            'Curtain Call')

    def test_matcher_subtitle_get(self):
        self.assertEqual(
            self.musixmatch.matcher_subtitle_get('Sexy and I know it', 'LMFAO',
                                                 200, 3)['message']['body'],
            '')

    def test_artist_get(self):
        self.assertEqual(
            self.musixmatch.artist_get(118)['message']['body']['artist']
            ['artist_name'], 'Queen')
        self.assertEqual(
            self.musixmatch.artist_get(118)['message']['body']['artist']
            ['artist_mbid'], '5eecaf18-02ec-47af-a4f2-7831db373419')

    def test_artist_search(self):
        self.assertEqual(
            self.musixmatch.artist_search(
                'prodigy', 1, 1, 16439,
                '4a4ee089-93b1-4470-af9a-6ff575d32704')['message']['body']
            ['artist_list'][0]['artist']['artist_id'], 16439)
        self.assertEqual(
            self.musixmatch.artist_search(
                'prodigy', 1, 1, 16439,
                '4a4ee089-93b1-4470-af9a-6ff575d32704')['message']['body']
            ['artist_list'][0]['artist']['artist_name'], 'The Prodigy')

    def test_artist_albums_get(self):
        self.assertEqual(
            self.musixmatch.artist_albums_get(1039, 1, 1, 1, 'desc')['message']
            ['body']['album_list'][0]['album']['album_id'], 25660826)
        self.assertEqual(
            self.musixmatch.artist_albums_get(1039, 1, 1, 1, 'desc')['message']
            ['body']['album_list'][0]['album']['album_name'], 'Kaleidoscope')

    def test_artist_related_get(self):
        self.assertEqual(
            self.musixmatch.artist_related_get(
                56, 1,
                1)['message']['body']['artist_list'][0]['artist']['artist_id'],
            298)
        self.assertEqual(
            self.musixmatch.artist_related_get(56, 1, 1)['message']['body']
            ['artist_list'][0]['artist']['artist_name'], 'Outkast')

    def test_album_get(self):
        self.assertEqual(
            self.musixmatch.album_get(14250417)['message']['body']['album']
            ['album_id'], 14250417)
        self.assertEqual(
            self.musixmatch.album_get(14250417)['message']['body']['album']
            ['album_name'], 'Party Rock')

    def test_album_tracks_get(self):
        self.assertEqual(
            self.musixmatch.album_tracks_get(
                13750844, 1, 1,
                '')['message']['body']['track_list'][0]['track']['track_id'],
            30057052)
        self.assertEqual(
            self.musixmatch.album_tracks_get(
                13750844, 1, 1,
                '')['message']['body']['track_list'][0]['track']['track_name'],
            "Don't Panic")

    def test_tracking_url_get(self):
        self.assertEqual(
            self.musixmatch.tracking_url_get('www.mylyricswebsite.com')
            ['message']['header']['status_code'], 200)

    def test_catalogue_dump_get(self):
        self.assertEqual(
            self.musixmatch.catalogue_dump_get('test')['message']['body'], '')
Exemplo n.º 6
0
authenticator = IAMAuthenticator(
    'R7Ja2rP0jp6LucFzOl5-4xbMSVSX5Fci8wc63J0O5-l3')
tone_analyzer = ToneAnalyzerV3(version='2017-09-21',
                               authenticator=authenticator)

tone_analyzer.set_service_url(
    'https://api.us-south.tone-analyzer.watson.cloud.ibm.com/instances/b8f00a45-63d1-4bb9-b1a0-1c2e6bc3e4ca'
)

if token:
    for obs in track_info:
        try:
            labels.append(obs[2])
            sp = spotipy.Spotify(auth=token)
            results = sp.search(q=obs[0] + ' ' + obs[1], limit=1)
            lyrics = musixmatch.matcher_lyrics_get(obs[1], obs[0])

            lyric_body = ''
            for track in results['tracks']['items']:
                track_ids.append(track['id'])

                # get pitches from Spotify
                aud_analysis = sp.audio_analysis(track['id'])
                all_harmonies.append(aud_analysis['segments'][0]['pitches'])
                song_names.append(track['name'] + ' by ' +
                                  track['artists'][0]['name'])
                #print(obs[1] + ' by ' + obs[0] + ' (' + obs[2] + '):\n\n', lyrics['message']['body']['lyrics']['lyrics_body'][:-70])
                if (lyrics['message']['header']['status_code'] != 404):
                    lyric_body = lyrics['message']['body']['lyrics'][
                        'lyrics_body'][:-70]
                else:
# lyricsList.append(lyrics['message']['body']['lyrics']['lyrics_copyright'])
# lyricsList

# In[72]:

for i in range(0, 10000):
    songNameList[i] = re.sub(
        r'\([^)]*\)', '', songNameList[i]
    )  ##Removes anything that's in the parenthesis of song name. for example Mr. Brightside (Remix). The bracket part gets removed.
    if (
            songNameList[i].startswith('b')
    ):  #Some song names have the letter 'b' in the starting of their names. This removes that.
        songNameList[i] = songNameList[i][1:]

    print(f'Song Name: {songNameList[i]} \nArtist Name: {artistNameList[i]}')
    lyricsQ = musixmatch.matcher_lyrics_get(songNameList[i], artistNameList[i])
    if (
            lyricsQ['message']['header']['status_code'] == 200
    ):  #status code 200 means successful query. And we will append the result to the end of our lyricsList
        lyricsList.append(lyricsQ['message']['body']['lyrics']['lyrics_body'])
    else:  #In case of an unsuccessful query, append empty string
        lyricsList.append('')
        print('Lyrics not found!')
    print(lyricsList)

# In[77]:

print(len(lyricsList))  #Tells us how many lyrics have we gotten.

# In[81]:
Exemplo n.º 8
0
    artists.append(chart[i].artist)
    i += 1

i = 0
while (i < 100):
    songs.append(chart[i].title)
    i += 1

table['Title'] = pd.Series(songs)
table['Artist'] = pd.Series(artists)

#Get Song Lyrics

i = 0
while (i < 100):
    lyrics = ((((musixmatch.matcher_lyrics_get(
        table['Title'][i], table['Artist'][i]).get('message')).get('body')
                ).get('lyrics')).get('lyrics_body'))
    all_lyrics += lyrics.split('...', 1)[0]
    i += 1

all_lyrics = all_lyrics.replace(',', '')

#Text Processing
processed_lyrics = all_lyrics.split("\n")
processed_lyrics = list(filter(None, processed_lyrics))

i = 0
while (i != len(processed_lyrics)):
    processed_lyrics[i] += "', 'country'"
    i += 1
Exemplo n.º 9
0
class TestMusixmatch(unittest.TestCase):
    def setUp(self):
        self.musixmatch = Musixmatch(os.environ.get("APIKEY"))
        self.url = "http://api.musixmatch.com/ws/1.1/"

    def test_get_url(self):
        self.assertEqual(
            self.musixmatch._get_url("chart.artists.get?"
                                     "page=1&page_size=1&country=us"
                                     "&format=json"),
            self.url + "chart.artists.get?"
            "page=1&page_size=1"
            "&country=us&format=json&apikey={}".format(
                os.environ.get("APIKEY")),
        )

    def test_apikey(self):
        self.assertEqual(self.musixmatch._apikey, os.environ.get("APIKEY"))

    def test_chart_artists(self):
        self.assertEqual(
            self.musixmatch.chart_artists(1, 1)["message"]["body"]
            ["artist_list"][0]["artist"]["artist_vanity_id"],
            "Ed-Sheeran",
        )
        self.assertEqual(
            self.musixmatch.chart_artists(1, 1)["message"]["body"]
            ["artist_list"][0]["artist"]["artist_mbid"],
            "b8a7c51f-362c-4dcb-a259-bc6e0095f0a6",
        )

    def test_chart_tracks_get(self):
        self.assertEqual(
            self.musixmatch.chart_tracks_get(
                1, 1,
                1)["message"]["body"]["track_list"][0]["track"]["album_name"],
            "2U (feat. Justin Bieber)",
        )
        self.assertEqual(
            self.musixmatch.chart_tracks_get(
                1, 1,
                1)["message"]["body"]["track_list"][0]["track"]["track_name"],
            "2U",
        )

    def test_track_search(self):
        self.assertEqual(
            self.musixmatch.track_search(
                q_track="Let Me Love You",
                q_artist="justinbieber",
                page_size=10,
                page=1,
                s_track_rating="desc",
            )["message"]["body"]["track_list"],
            [],
        )

    def test_track_get(self):
        self.assertEqual(
            self.musixmatch.track_get(15445219)["message"]["body"]["track"]
            ["artist_name"],
            "Lady Gaga",
        )
        self.assertEqual(
            self.musixmatch.track_get(15445219)["message"]["body"]["track"]
            ["album_name"],
            "The Fame Monster",
        )

    def test_track_lyrics_get(self):
        self.assertEqual(
            self.musixmatch.track_lyrics_get(15953433)["message"]["body"]
            ["lyrics"]["lyrics_language"],
            "en",
        )
        self.assertEqual(
            self.musixmatch.track_lyrics_get(15953433)["message"]["body"]
            ["lyrics"]["lyrics_language_description"],
            "English",
        )
        self.assertEqual(
            self.musixmatch.track_lyrics_get(15953433)["message"]["body"]
            ["lyrics"]["lyrics_id"],
            15912802,
        )

    def test_track_snippet_get(self):
        self.assertEqual(
            self.musixmatch.track_snippet_get(16860631)["message"]["body"]
            ["snippet"]["snippet_id"],
            16229519,
        )
        self.assertEqual(
            self.musixmatch.track_snippet_get(16860631)["message"]["body"]
            ["snippet"]["snippet_body"],
            "You shoot me down, but I won't fall",
        )

    def test_track_subtitle_get(self):
        self.assertEqual(
            self.musixmatch.track_subtitle_get(14201829)["message"]["body"],
            "")

    def test_track_richsync_get(self):
        self.assertEqual(
            self.musixmatch.track_richsync_get(114837357)["message"]["body"]
            ["richsync"]["richsync_id"],
            6,
        )
        self.assertEqual(
            self.musixmatch.track_richsync_get(114837357)["message"]["body"]
            ["richsync"]["richsync_length"],
            230,
        )

    def test_track_lyrics_post(self):
        self.assertEqual(
            self.musixmatch.track_lyrics_post(
                1471157, "test")["message"]["header"]["status_code"],
            200,
        )
        self.assertEqual(
            self.musixmatch.track_lyrics_post(1471157,
                                              "test")["message"]["body"], "")

    def test_track_lyrics_feedback_post(self):
        self.assertEqual(
            self.musixmatch.track_lyrics_post(
                1471157, 4193713, "wrong_verses")["message"]["body"],
            "",
        )

    def test_matcher_lyrics_get(self):
        self.assertEqual(
            self.musixmatch.matcher_lyrics_get("Sexy and I know it", "LMFAO")
            ["message"]["body"]["lyrics"]["lyrics_language_description"],
            "English",
        )
        self.assertEqual(
            self.musixmatch.matcher_lyrics_get(
                "Sexy and I know it",
                "LMFAO")["message"]["body"]["lyrics"]["lyrics_language"],
            "en",
        )

    def test_matcher_track_get(self):
        self.assertEqual(
            self.musixmatch.matcher_track_get(
                "Lose Yourself (soundtrack)",
                "Eminem")["message"]["body"]["track"]["track_name"],
            "Lose Yourself - "
            "Soundtrack Version"
            " (Explicit)",
        )
        self.assertEqual(
            self.musixmatch.matcher_track_get(
                "Lose Yourself (soundtrack)",
                "Eminem")["message"]["body"]["track"]["album_name"],
            "Curtain Call",
        )

    def test_matcher_subtitle_get(self):
        self.assertEqual(
            self.musixmatch.matcher_subtitle_get("Sexy and I know it", "LMFAO",
                                                 200, 3)["message"]["body"],
            "",
        )

    def test_artist_get(self):
        self.assertEqual(
            self.musixmatch.artist_get(118)["message"]["body"]["artist"]
            ["artist_name"],
            "Queen",
        )
        self.assertEqual(
            self.musixmatch.artist_get(118)["message"]["body"]["artist"]
            ["artist_mbid"],
            "5eecaf18-02ec-47af-a4f2-7831db373419",
        )

    def test_artist_search(self):
        self.assertEqual(
            self.musixmatch.artist_search(
                "prodigy", 1, 1, 16439, "4a4ee089-93b1-4470-af9a-6ff575d32704")
            ["message"]["body"]["artist_list"][0]["artist"]["artist_id"],
            16439,
        )
        self.assertEqual(
            self.musixmatch.artist_search(
                "prodigy", 1, 1, 16439, "4a4ee089-93b1-4470-af9a-6ff575d32704")
            ["message"]["body"]["artist_list"][0]["artist"]["artist_name"],
            "The Prodigy",
        )

    def test_artist_albums_get(self):
        self.assertEqual(
            self.musixmatch.artist_albums_get(1039, 1, 1, 1, "desc")["message"]
            ["body"]["album_list"][0]["album"]["album_id"],
            25660826,
        )
        self.assertEqual(
            self.musixmatch.artist_albums_get(1039, 1, 1, 1, "desc")["message"]
            ["body"]["album_list"][0]["album"]["album_name"],
            "Kaleidoscope",
        )

    def test_artist_related_get(self):
        self.assertEqual(
            self.musixmatch.artist_related_get(
                56, 1,
                1)["message"]["body"]["artist_list"][0]["artist"]["artist_id"],
            298,
        )
        self.assertEqual(
            self.musixmatch.artist_related_get(56, 1, 1)["message"]["body"]
            ["artist_list"][0]["artist"]["artist_name"],
            "Outkast",
        )

    def test_album_get(self):
        self.assertEqual(
            self.musixmatch.album_get(14250417)["message"]["body"]["album"]
            ["album_id"],
            14250417,
        )
        self.assertEqual(
            self.musixmatch.album_get(14250417)["message"]["body"]["album"]
            ["album_name"],
            "Party Rock",
        )

    def test_album_tracks_get(self):
        self.assertEqual(
            self.musixmatch.album_tracks_get(
                13750844, 1, 1,
                "")["message"]["body"]["track_list"][0]["track"]["track_id"],
            30057052,
        )
        self.assertEqual(
            self.musixmatch.album_tracks_get(
                13750844, 1, 1,
                "")["message"]["body"]["track_list"][0]["track"]["track_name"],
            "Don't Panic",
        )

    def test_tracking_url_get(self):
        self.assertEqual(
            self.musixmatch.tracking_url_get("www.mylyricswebsite.com")
            ["message"]["header"]["status_code"],
            200,
        )

    def test_catalogue_dump_get(self):
        self.assertEqual(
            self.musixmatch.catalogue_dump_get("test")["message"]["body"], "")