# -*- coding: utf-8 -*- import requests import redis import json import pdb TOKEN_REDIS = {'host': '10.10.3.10', 'port': 6379, 'db': 3} class QcloudDataApi(): def __init__(self, appid, secret): self.appid = appid self.secret = secret pool = redis.ConnectionPool(host=TOKEN_REDIS['host'], port=TOKEN_REDIS['port'], db=TOKEN_REDIS['db'], decode_responses=True) self.redis = redis.Redis(connection_pool=pool) self.token = self.get_access_token() def get_access_token(self): token = self.redis.get(self.appid) if not token: token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={" \ "}".format(self.appid, self.secret) r = requests.get(token_url) if r.status_code == 200: data = r.json() try: self.redis.set(self.appid, data['access_token']) self.redis.expire(self.appid, data['expires_in']) token = data['access_token'] except Exception as e: print("write token to redis failed ,{}!".format(e)) token = None return token def get_data(self): if not self.token: print("get token failed ,pls check it first!") return False self.get_getUserPortrait() def get_getUserPortrait(self): url1="https://api.weixin.qq.com/datacube/getweanalysisappiddailyretaininfo?access_token={}".format(self.token) url2="https://api.weixin.qq.com/datacube/getweanalysisappiddailyvisittrend?access_token={}".format(self.token) url = "https://api.weixin.qq.com/datacube/getweanalysisappiduserportrait?access_token={}".format(self.token) post_data = {} post_data['access_token'] = self.token post_data['end_date'] = '20190617' post_data['begin_date'] = '20190610' headers = {'Content-Type': 'application/json'} r = requests.post(url=url2, headers=headers, data=json.dumps(post_data)) if r.status_code == 200: data = r.json() print("{}".format(data)) def main(): appid = "wxf567b46cecf6ec58" secret = "dea5e1a99debd567eb4532a032bdc62d" qc = QcloudDataApi(appid, secret) qc.get_data() if __name__ == "__main__": main()