{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Getting Data through an API call" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So that was the hard way to get data. Now, lets access rap lyrics the easy way using an api that was written for rap genius, courtesy Ed Forson, you can read more about it http://genius-api.com/\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import urllib\n", "import urllib2\n", "import json\n", "import pprint #for pretty print of json files\n", "url = 'http://genius-api.com/api/artistInfo'\n", "values = {'name' : 'Gza',\n", " 'genre' : 'rap'}\n", "data = urllib.urlencode(values)\n", "req = urllib2.Request(url, data)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "response = urllib2.urlopen(req)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "the_page = response.read()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "decoded_data = json.loads(the_page)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print json.dumps(decoded_data, sort_keys=True, indent=4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "decoded_data.viewkeys()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "\n", "print json.dumps(decoded_data.get('songs'), sort_keys=True, indent=4)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "song_url = 'http://genius-api.com/api/songInfo' #Song information\n", "artist_url = 'http://genius-api.com/api/artistInfo' #artist info\n", "values = {'name' : 'Liquid Swords',\n", " 'genre' : 'rap'}" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "data = urllib.urlencode(values)\n", "req = urllib2.Request(song_url, data)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "response = urllib2.urlopen(req)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "song_info = response.read()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "decoded_data = json.loads(song_info)\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print json.dumps(decoded_data, sort_keys=True, indent=4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "lyric_url = 'http://genius-api.com/api/lyricsInfo'\n", "parameters = {'link':'http://rapgenius.com/Gza-liquid-swords-lyrics',\n", " 'genre' : 'rap'}\n", "data = urllib.urlencode(parameters)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "req = urllib2.Request(lyric_url, data)\n", "response = urllib2.urlopen(req)\n", "lyric_info = response.read()\n", "decoded_data = json.loads(lyric_info)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print json.dumps(decoded_data, sort_keys=True, indent=4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "decoded_data.viewkeys()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print json.dumps(decoded_data.get('lyrics'), sort_keys=True, indent=4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "Data_under_investigation = decoded_data.get('lyrics')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "Data_under_investigation.viewkeys()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "Data_under_investigation = decoded_data.get('lyrics').get('sections')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print json.dumps(Data_under_investigation, sort_keys=True, indent=4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "len(Data_under_investigation)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print json.dumps(Data_under_investigation[0].get('verses')[0].get('content'), sort_keys=True, indent=4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print Data_under_investigation[1].get('verses')[0].get('content')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "len(Data_under_investigation)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 }