Exemplo n.º 1
0
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
Exemplo n.º 2
0
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,
        },
    )