Created
May 13, 2014 17:38
-
-
Save treyhunner/3f657e7d4d3a97d55a44 to your computer and use it in GitHub Desktop.
Find Creative Commons Music
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
""" | |
Find Creative Commons Music | |
Provide names of musical artists and the script returns any relevant URLs for | |
FreeMusicArchive.org, Jamendo.com, and Magnatune.com. | |
Usage:: | |
$ ./findccmusic.py <artist name>... | |
Before using: | |
1. Set your `FreeMusicArchive.org API key`_ | |
2. Set your `Jamendo.com API key`_ | |
3. Download the Magnatune sqlite database and rename it to sqlite_maganatune.db | |
.. _FreeMusicArchive.org API key: http://freemusicarchive.org/api/agreement | |
.. _Jamendo.com API key: https://devportal.jamendo.com/ | |
""" | |
from __future__ import unicode_literals | |
from __future__ import print_function | |
import json | |
import sqlite3 | |
import sys | |
import requests | |
FMA_KEY = "YOUR FMA KEY" | |
JAMENDO_KEY = "YOUR JAMENDO KEY" | |
magnatune_conn = sqlite3.connect('sqlite_magnatune.db') | |
def find_on_fma(artist): | |
"""Return artist URL for FreeMusicArchive.org""" | |
r = requests.get("http://freemusicarchive.org/api/get/artists.json" | |
"?api_key={key}&artist_name={artist}" | |
.format(key=FMA_KEY, artist=artist)) | |
r.raise_for_status() | |
response = json.loads(r.content) | |
if response['dataset']: | |
return response['dataset'][0]['artist_url'] | |
def find_on_magnatune(artist): | |
"""Return artist URL for Magnatune.com""" | |
c = magnatune_conn.cursor() | |
c.execute("SELECT homepage from artists where artist = ?", (artist,)) | |
results = c.fetchone() | |
if results: | |
return "http://magnatune.com/artists/{}".format(results[0]) | |
def find_on_jamendo(artist): | |
"""Return artist URL for Jamendo.com""" | |
r = requests.get("http://api.jamendo.com/v3.0/artists/" | |
"?client_id={key}&format=json&name={artist}" | |
.format(key=JAMENDO_KEY, artist=artist)) | |
r.raise_for_status() | |
response = json.loads(r.content) | |
if response['results']: | |
return response['results'][0]['shareurl'] | |
def print_urls(artist): | |
urls = {} | |
urls['Magnatune'] = find_on_magnatune(artist) | |
urls['FreeMusicArchive'] = find_on_fma(artist) | |
urls['Jamendo'] = find_on_jamendo(artist) | |
for site, url in urls.items(): | |
if url: | |
print("{}: {}".format(site, url)) | |
if __name__ == "__main__": | |
for artist in sys.argv[1:]: | |
artist = artist.decode('utf-8') | |
print_urls(artist) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment