dwd_app_install.py 2.64 KB
# -*- coding: utf-8 -*-


'''
app安装量,定时任务,每天运行一次
'''
import json
import logging
import os
import sys
import time

import requests

from common.mysql_uitl import save_result, save_etl_log
from common.time_util import YMDHMS_FORMAT, now_str

logging.basicConfig(format="%(asctime)s %(name)s:%(levelname)s:%(message)s", datefmt="%Y-%m-%d %H:%M:%S", level=logging.INFO)
file_name = sys.argv[0]
task_file = os.path.split(__file__)[-1].split(".")[0]


def dwd_app_install(data_dt):
    start_date = (datetime.datetime.strptime(data_dt, "%Y-%m-%d") - datetime.timedelta(days=1)).strftime("%Y-%m-%d")
    end_date = data_dt


    android_url = f'https://data.openinstall.io/data/event/growth?apiKey' \
                  f'=3b2b8553beaf1bd0ad4443f7a43ecc705ddf20880e84d1c360df664f&platform=android&beginDate={start_date}' \
                  f'&endDate={end_date}&groupBy=day&excludeDuplication=1'
    ios_url = f'https://data.openinstall.io/data/event/growth?apiKey' \
              f'=3b2b8553beaf1bd0ad4443f7a43ecc705ddf20880e84d1c360df664f&platform=ios&beginDate={start_date}&endDate' \
              f'={end_date}&groupBy=day&excludeDuplication=1'

    android_dict = get_app_install(android_url, 'android')
    ios_dict = get_app_install(ios_url, 'ios')
    ret_dict = dict(android_dict, **ios_dict)
    total_app_num = ret_dict['android_num'] + ret_dict['ios_num']
    ret_dict['total_app_num'] = total_app_num
    if ret_dict:
        ret_list = list()
        ret_list.append(ret_dict)
        row = save_result('tamp_data_dwd', 'dwd_app_install', ret_list, file_name)
        now_time = now_str(YMDHMS_FORMAT)
        save_etl_log('tamp_data_dwd', 'dwd_app_install', data_dt, row, 'done', task_file, now_time)


def get_app_install(url, app_type):
    function_name = sys._getframe().f_code.co_name
    logging.info(f'{function_name} start')
    response_ret = requests.get(url)
    content = response_ret.content.decode()
    content_dict = json.loads(content)
    body = content_dict['body']
    install_dict = {}
    for i in body:
        data_dt = i['date'][0: 10]
        app_name = i['install']
        if app_type == 'android':
            install_dict = dict(data_dt=data_dt, android_num=app_name)
        elif app_type == 'ios':
            install_dict = dict(data_dt=data_dt, ios_num=app_name)
    return install_dict


if __name__ == '__main__':
    # dwd_app_install(data_dt)
    import datetime
    begin = datetime.date(2021, 9, 18)
    end = datetime.date(2021, 9, 22)
    data_dt = begin
    delta = datetime.timedelta(days=1)
    while data_dt <= end:
        print(data_dt.strftime("%Y-%m-%d"))
        dwd_app_install(str(data_dt))
        data_dt += delta