def get_code(ACCOUNT,PASSWORD): #get url client = APIClient(app_key = APP_KEY,app_secret = APP_SECRET,redirect_uri=CALLBACK_URL) url = client.get_authorize_url() #get code conn = httplib.HTTPSConnection('api.weibo.com') postdata = urllib.urlencode ({'client_id':APP_KEY,'response_type':'code','redirect_uri':CALLBACK_URL,'action':'submit','userId':ACCOUNT,'passwd':PASSWORD,'isLoginSina':0,'from':'','regCallback':'','state':'','ticket':'','withOfficalFlag':0}) conn.request('POST','/oauth2/authorize',postdata,{'Referer':url,'Content-Type': 'application/x-www-form-urlencoded'}) res = conn.getresponse() location = res.getheader('location') code = location.split('=')[1] conn.close() #get client r = client.request_access_token(code) access_token = r.access_token expires_in = r.expires_in client.set_access_token(access_token, expires_in) all_tmp = client.users__show(uid = client.account__get_uid()['uid']) rz7.PIC_URL = all_tmp['profile_image_url'] rz7.NAME = all_tmp['screen_name'] all = {} #a count flag = 0 data = [] all = client.statuses__home_timeline(count = 200) d = dict(all) #fobj = open("api_data","w") tar = '' for i in range(len(d['statuses'])): if 'bmiddle_pic' in d['statuses'][i]: tmp = {} tmp['name'] = d['statuses'][i]['user']['screen_name'] tmp['text'] = d['statuses'][i]['text'] tmp['picture'] = d['statuses'][i]['bmiddle_pic'] tmp['face'] = d['statuses'][i]['user']['profile_image_url'] fn = tar + (str)(flag) + '.jpg' urlretrieve(d['statuses'][i]['bmiddle_pic'],fn) flag = flag + 1 data.append(tmp) return data,flag
def test(request): APP_KEY = "XXXX" APP_SECRET = "XXXXXXXXXXXXX" CALLBACK_URL = "XXXX" # 获取access token client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL) code = request.GET["code"] r = client.request_access_token(code) access_token = r.access_token expires_in = r.expires_in client.set_access_token(access_token, expires_in) # 获取用户uid user_id = client.account__get_uid()["uid"] # 获取用户粉丝数关注数和微博总数 user_counts = client.get.users__counts(uids=int(user_id))[0] followers = int(user_counts["followers_count"]) friends = int(user_counts["friends_count"]) statuses = int(user_counts["statuses_count"]) # 获取用户原创的微博总数和转发的微博总数 transPost = int(client.get.statuses__repost_by_me()["total_number"]) originalPost = int(statuses) - int(transPost) # 获取微博的转发数 statuse_ids = client.get.statuses__user_timeline__ids(count=100, since_id=0, uid=int(user_id))["statuses"] para = ",".join(statuse_ids) noTransPost = 0 beTransPost = 0 beTransNumber = 0 for a in client.get.statuses__count(ids=para): if a["reposts"] == 0: noTransPost += 1 else: beTransPost += 1 beTransNumber += int(a["reposts"]) # Calculate characteristics if originalPost != 0: original_percent = (originalPost * 100) / (originalPost + transPost) originalActivity = np.log(original_percent * statuses / 100) # 用微博总数计算 else: originalActivity = 0 original_percent = 0 if transPost != 0: transportActivity = np.log((100 - original_percent) * statuses / 100) # 用微博总数计算 else: transportActivity = 0 if beTransPost != 0: transAbility = np.log( float(beTransPost) / (originalPost + transPost) * float(beTransNumber) / beTransPost * 1000 ) be_trans_percent = (beTransPost * 100) / (originalPost + transPost) avg_be_trans_number = float(beTransNumber) / beTransPost else: transAbility = 0 be_trans_percent = 0 avg_be_trans_number = 0 if followers != 0: fansNumber = np.log(followers) else: fansNumber = 0 if friends != 0: concernNumber = np.log(friends) else: concernNumber = 0 role = IdentifyUserRole(originalActivity, transportActivity, transAbility, fansNumber, concernNumber) return render_to_response( "test.html", { "followers": followers, "friends": friends, "statuses": statuses, "original": originalPost, "repost": transPost, "a": role, }, )