In [15]:
import requests
import json
import re


def sort_results(items):
    return sorted(items, key = lambda r: [r['formatted_title'].lower(), r['index']])

def get_index(title):
    name_pattern = ' \([0-9]+\)'
    m = re.findall(name_pattern, title)
    if m:
        return int(m[0].strip(' ()'))

    return 0

def populate_results(results):

    for r in results[0:10]:
        url = r['resource_url']
        req = requests.get(url)
        res = req.json()
        r['real_name'] = 'asjdh'

        if 'aliases' in res and res['aliases']:
            r['aliases'] = ', '.join([a['name'] for a in res['aliases']])
            
        print '-----------------------------------------'
        print(json.dumps(res, indent=2))
        print '--'
    
    #print(json.dumps(results, indent=2))
    print


    #return results
    


#q = 'Eno'
q = 'supersonic'
#q = '"Brian Eno"'

q_stripped = q.strip("'\"")

url = 'http://172.20.10.207:8099/discogs-proxy/database/search?q={q}&type=artist&per_page=100'.format(q=q)

results = []
results_exact = []
results_start = []
results_other = []
name_pattern = ' \([0-9]+\)'

max_requests = 10
x = 0
while url and x < max_requests:
    print x
    x += 1
    r = requests.get(url)
    data = r.json()
    #next = data['pagination']['urls']['next']
    url = reduce(dict.get, ['pagination', 'urls', 'next'], data)
    print (url)
    #print(json.dumps(data, indent=2))
    
    for r in data['results']:
        if 'title' in r:
            title = r['title']
            formatted_title = re.sub(name_pattern, '', title)
            r['index'] = get_index(title)
            r['formatted_title'] = formatted_title

            if formatted_title.lower() == q_stripped.lower():
                results_exact.append(r)
            elif formatted_title.lower().startswith(q_stripped.lower()):
                results_start.append(r)
            else:
                results_other.append(r)
       
    
results = sort_results(results_exact) + sort_results(results_start) + sort_results(results_other)

results = populate_results(results)




 
    
print 'RESULTS'
print(json.dumps(results, indent=2))
    
#print 'EXACT:'            
#print(json.dumps(results_exact, indent=2))
#print 'START:'
#print(json.dumps(sort_results(results_start_sorted), indent=2))
#print 'OTHER:'            
#print(json.dumps(results_other, indent=2))


0
https://www.openbroadcast.org/discogs-proxy/database/search?q=supersonic&per_page=100&type=artist&page=2
1
None
-----------------------------------------
{
  "profile": "", 
  "releases_url": "https://www.openbroadcast.org/discogs-proxy/artists/202567/releases", 
  "name": "Supersonic", 
  "uri": "https://www.discogs.com/artist/202567-Supersonic", 
  "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/202567", 
  "id": 202567, 
  "data_quality": "Correct", 
  "aliases": [
    {
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/202568", 
      "id": 202568, 
      "name": "Aquatic Ghost"
    }, 
    {
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/795304", 
      "id": 795304, 
      "name": "Bondee System"
    }, 
    {
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/1586936", 
      "id": 1586936, 
      "name": "Euforia (4)"
    }, 
    {
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/202566", 
      "id": 202566, 
      "name": "Joseph (2)"
    }, 
    {
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/96080", 
      "id": 96080, 
      "name": "Michael Bondee"
    }, 
    {
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/537935", 
      "id": 537935, 
      "name": "Rey (4)"
    }, 
    {
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/1034699", 
      "id": 1034699, 
      "name": "Ulrik Rey Henningsen"
    }, 
    {
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/3831515", 
      "id": 3831515, 
      "name": "Y Experience"
    }
  ]
}
--
-----------------------------------------
{
  "profile": "", 
  "releases_url": "https://www.openbroadcast.org/discogs-proxy/artists/230559/releases", 
  "name": "Supersonic (2)", 
  "uri": "https://www.discogs.com/artist/230559-Supersonic-2", 
  "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/230559", 
  "id": 230559, 
  "data_quality": "Correct", 
  "namevariations": [
    "Super Sonic", 
    "Super Sonic*"
  ]
}
--
-----------------------------------------
{
  "profile": "", 
  "releases_url": "https://www.openbroadcast.org/discogs-proxy/artists/246854/releases", 
  "name": "Supersonic (3)", 
  "uri": "https://www.discogs.com/artist/246854-Supersonic-3", 
  "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/246854", 
  "id": 246854, 
  "data_quality": "Correct"
}
--
-----------------------------------------
{
  "profile": "", 
  "releases_url": "https://www.openbroadcast.org/discogs-proxy/artists/261657/releases", 
  "name": "Supersonic (4)", 
  "uri": "https://www.discogs.com/artist/261657-Supersonic-4", 
  "members": [
    {
      "active": true, 
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/176046", 
      "id": 176046, 
      "name": "Domenico Scuteri"
    }, 
    {
      "active": true, 
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/104975", 
      "id": 104975, 
      "name": "Woody Bianchi"
    }
  ], 
  "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/261657", 
  "id": 261657, 
  "data_quality": "Correct"
}
--
-----------------------------------------
{
  "profile": "", 
  "realname": "Simon Ghahary", 
  "releases_url": "https://www.openbroadcast.org/discogs-proxy/artists/364710/releases", 
  "name": "Supersonic (5)", 
  "uri": "https://www.discogs.com/artist/364710-Supersonic-5", 
  "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/364710", 
  "id": 364710, 
  "data_quality": "Correct", 
  "aliases": [
    {
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/710650", 
      "id": 710650, 
      "name": "Simon Ghahary"
    }
  ]
}
--
-----------------------------------------
{
  "profile": "", 
  "releases_url": "https://www.openbroadcast.org/discogs-proxy/artists/559238/releases", 
  "name": "Supersonic (6)", 
  "uri": "https://www.discogs.com/artist/559238-Supersonic-6", 
  "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/559238", 
  "id": 559238, 
  "data_quality": "Correct"
}
--
-----------------------------------------
{
  "profile": "", 
  "releases_url": "https://www.openbroadcast.org/discogs-proxy/artists/727318/releases", 
  "name": "Supersonic (7)", 
  "uri": "https://www.discogs.com/artist/727318-Supersonic-7", 
  "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/727318", 
  "id": 727318, 
  "data_quality": "Correct", 
  "aliases": [
    {
      "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/897020", 
      "id": 897020, 
      "name": "Dancetronix"
    }
  ]
}
--
-----------------------------------------
{
  "profile": "", 
  "releases_url": "https://www.openbroadcast.org/discogs-proxy/artists/1321435/releases", 
  "name": "Supersonic (8)", 
  "uri": "https://www.discogs.com/artist/1321435-Supersonic-8", 
  "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/1321435", 
  "id": 1321435, 
  "data_quality": "Needs Major Changes"
}
--
-----------------------------------------
{
  "profile": "", 
  "releases_url": "https://www.openbroadcast.org/discogs-proxy/artists/1959695/releases", 
  "name": "Supersonic (9)", 
  "uri": "https://www.discogs.com/artist/1959695-Supersonic-9", 
  "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/1959695", 
  "id": 1959695, 
  "data_quality": "Needs Major Changes"
}
--
-----------------------------------------
{
  "profile": "", 
  "releases_url": "https://www.openbroadcast.org/discogs-proxy/artists/2843577/releases", 
  "name": "Supersonic (10)", 
  "uri": "https://www.discogs.com/artist/2843577-Supersonic-10", 
  "resource_url": "https://www.openbroadcast.org/discogs-proxy/artists/2843577", 
  "id": 2843577, 
  "data_quality": "Needs Major Changes"
}
--

RESULTS
null

In [ ]: