#!/usr/bin/env python # -*- coding: utf-8 -*- import httplib, urllib, base64 import json result=[] input = [2251253715, 2180737804] encodeinput = json.dumps(input) deinput = json.loads(encodeinput) exp1 = "Composite(AA.AuId = %d )" % deinput[0] params1 = urllib.urlencode({ 'expr':exp1, 'offset': '0', 'model': 'latest', 'count': '10000', 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', }) conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) response = conn.getresponse() data = response.read() data1 = json.loads(data) conn.close() #print data #'''''''''''''''''''''''''2nd API''''''''''''''''''''''''''''''''' exp2 = 'Id = %d' % deinput[1] params1 = urllib.urlencode({ 'expr':exp2, 'count': '100000', 'model': 'latest', 'attributes': 'F.FId,AA.AuId,AA.AfId,C.CId,J.JId', 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', }) conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) response = conn.getresponse() data = response.read() data2 = json.loads(data) conn.close() #print data2 #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' exp3 = 'RId = %d' % deinput[1] params1 = urllib.urlencode({ 'expr':exp3, 'count': '10000', 'attributes': 'Id', 'model': 'latest', 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', }) conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) response = conn.getresponse() data = response.read() data3 = json.loads(data) conn.close() #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' try: FId2 = data2["entities"][0]["F"] except (KeyError): FId2 = [] try: AuId2= data2["entities"][0]["AA"] except (KeyError): AuId2=[] try: CJId2= data2["entities"][0]["J"]["JId"] except (KeyError): try: CJId2= data2["entities"][0]["C"]["CId"] except: CJId2=[] #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' Id1=[] AfId1=[] for i1 in data1["entities"]: Id1.append(i1["Id"]) if i1["Id"]==deinput[1]: result.append([deinput[0],deinput[1]]) # AA.AuId -> Id try: FId1 = i1["F"] for tmp in FId1: for x in FId2: if x["FId"]==tmp["FId"]: # AA.AuId -> Id -> F.FId -> Id result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) except (KeyError): pass try: AuId1= i1["AA"] for tmp in AuId1: for x in AuId2: if tmp["AuId"]==x["AuId"]: # AA.AuId -> Id -> AA.AuId -> Id result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) except (KeyError): pass try: for tmp in AuId1: if tmp["AuId"]==deinput[0]: if tmp["AfId"] not in AfId1: AfId1.append(tmp["AfId"]) break except(KeyError): pass try: CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id if CJId1 == CJId2: result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) except (KeyError): try: CJId1= i1["C"]["CId"] if CJId1 == CJId2: result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) except: CJId1=[] # AA.AuId -> AA.AfId -> AA.AuId -> Id for x in AuId2: for y in AfId1: try: if y==x["AfId"]: result.append([deinput[0],y,x["AuId"],deinput[1]]) except(KeyError): continue #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' Id3 = [] for i3 in data3["entities"]: Id3.append(i3["Id"]) #************************************************************need gevent #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' for Aid in Id1: exp4 = 'Id = %d' % Aid params1 = urllib.urlencode({ 'expr':exp4, 'count': '100000', 'attributes': 'RId', 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', }) conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) response = conn.getresponse() data = response.read() data4 = json.loads(data) conn.close() #print data4 try: ReId4= data4["entities"][0]["RId"] except (KeyError): ReId4 = [] # AA.AuId -> id -> id # AA.AuId -> id -> id -> id for rid in ReId4: if deinput[1] == rid: result.append([deinput[0],Aid,deinput[1]]) for tmp in Id3: if rid == tmp: result.append([deinput[0],Aid,rid,deinput[1]]) deresult = json.dumps(result) print deresult print len(result)