一、需求
每天需要從友盟網站獲取若干應用如下信息
二、實現-分解
1)獲取api祕鑰
#獲取api祕鑰
def authorize(user, pasw):
url = 'http://api.umeng.com/authorize'
body = {'email': '%s'%(user), 'password': '%s'%(pasw)}
response = requests.post(url, params = body)
return response.json()['auth_token']
auth_token=authorize('賬戶名稱','賬戶密碼') #參數user代表友盟賬號,pasw代表友盟密碼,返回token,重要的密匙
2)獲取賬戶下所有應用的信息,取所需要應用的appkey
def apps(auth_token):
url='http://api.umeng.com/apps?&auth_token=%s'%(auth_token)
response=requests.get(url)
return response.json()
apps(auth_token)
3)獲取特定應用特定日期的基礎數據(活躍用戶、累計用戶、啓動次數、新增用戶)
appkey='XXXXXXXXXXXXXXXXXXXX'
def app_data(appkey,date,auth_token):
url='http://api.umeng.com/base_data?appkey=%s&date=%s&auth_token=%s'%(appkey,date,auth_token)
response=requests.get(url)
return response.json()
app_data(appkey,'2019-12-04',auth_token)
4)獲取留存率
#獲取留存率
def app_data(appkey,start_date,end_date,auth_token):
url='http://api.umeng.com/retentions?appkey=%s&start_date=%s&end_date=%s&period_type=daily&auth_token=%s'%(appkey,start_date,end_date,auth_token)
response=requests.get(url)
#最近一天的留存率數據沒有會報錯
try:
return response.json()[0]['retention_rate'][0]
except IndexError:
return ''
app_data(appkey,'2019-12-03','2019-12-03',auth_token)
5)獲取使用時長
#獲取使用時長
def app_data(appkey,start_date,end_date,auth_token):
#period_type=daily_per_launch單次使用時長
url='http://api.umeng.com/durations?appkey=%s&start_date=%s&end_date=%s&period_type=daily_per_launch&auth_token=%s'%(appkey,start_date,end_date,auth_token)
response=requests.get(url)
return response.json()['average']
app_data(appkey,'2019-12-04','2019-12-04',auth_token)
三、整合
import requests
import pandas as pd
import datetime
auth_token='xxxxxxxxxxxxx'
appkey_ios='yyyyyyyyyyyy'
appkey_andriod='zzzzzzzzzzzz'
def all_data(appkey,date,auth_token):
url_base='http://api.umeng.com/base_data?appkey=%s&date=%s&auth_token=%s'%(appkey,date,auth_token)
response_base=requests.get(url_base)
url_duration='http://api.umeng.com/durations?appkey=%s&start_date=%s&end_date=%s&period_type=daily_per_launch&auth_token=%s'%(appkey,date,date,auth_token)
response_duration=requests.get(url_duration)
url_retentions='http://api.umeng.com/retentions?appkey=%s&start_date=%s&end_date=%s&period_type=daily&auth_token=%s'%(appkey,date,date,auth_token)
respons_retentions=requests.get(url_retentions)
try :
retentions=str(respons_retentions.json()[0]['retention_rate'][0])+'%'
except IndexError:
retentions=''
return str(response_base.json()['new_users'])+'\t'+\
str(response_base.json()['installations'])+'\t'+''+'\t'+\
str(response_base.json()['active_users'])+'\t'+\
str(response_base.json()['launches'])+'\t'+\
retentions+'\t'+\
response_duration.json()['average']+'\t'
#寫入txt文檔,循環寫入前4天的數據
f=open(r'G:\temp files\youmeng.txt','w')
for i in range(4,0,-1):
date=(datetime.date.today()-datetime.timedelta(days=i)).strftime('%Y-%m-%d')
content=date+'\t'+all_data(appkey_ios,date,auth_token)+all_data(appkey_andriod,date,auth_token)+'\n'
f.write(content)
f.close()
參考資料:友盟OpenAPI.pdf