Exemplo n.º 1
0
def get_tracks_musixmatch():
    try:
        musixmatch = Musixmatch(MM_API_KEY)
        con = mdb.connect(ADDRESS, USERNAME, PASSWORD, SCHEMA)
        for i in range(1, 10):
            chart = musixmatch.chart_tracks_get(i, 100, 0, country='il')
            list_of_tracks = chart.get('message').get('body').get('track_list')
            for j in range(100):
                track = list_of_tracks[j].get('track')
                song_id = track.get('track_id')
                title = track.get('track_name')
                lyrics_id = track.get('lyrics_id')
                album_id = track.get('album_id')
                album_name = track.get('album_name')
                artist_id = track.get('artist_id')
                artist_name = track.get('artist_name')
                album_cover = track.get('album_coverart_100x100')
                rating = track.get('track_rating')
                insert_new_artist_mm(con, artist_name, artist_id)
                insert_new_album_mm(con, album_id, album_name, artist_id, album_cover)
                insert_new_song_mm(con, song_id, title, lyrics_id, album_id, artist_id, rating)
    except:
        pass
Exemplo n.º 2
0
    'UG', 'NZ'
]

genre_names = {}

out = open('canciones.csv', 'w')
out.write('lyrics_string,genre_class\n')

for country in countries:
    j = 0

    while True:
        j += 1

        tracks = musixmatch.chart_tracks_get(page=j,
                                             page_size=100,
                                             f_has_lyrics=1,
                                             country=country)

        track_list = tracks['message']['body']['track_list']

        if len(track_list) == 0:
            break

        for i in range(len(track_list)):
            track = track_list[i]['track']
            id = track['track_id']
            genre_list = track['primary_genres']['music_genre_list']
            # Ignoramos canciones sin género asigando
            if len(genre_list) > 0:
                genre_track = genre_list[0]['music_genre']
                genre = genre_track['music_genre_id']
Exemplo n.º 3
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.º 4
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"], "")