| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 | #!/usr/bin/python3import sysimport codecsimport tracebackimport requestsimport reimport pandas as pdimport randomimport urllibimport jsonimport datetimeimport osimport threadingfrom googleapiclient.discovery import buildfrom oauth2client.service_account import ServiceAccountCredentialsimport datasetimport pymysqlpymysql.install_as_MySQLdb()from datetime import datetimeimport platformdb = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/hhh?charset=utf8mb4')db.query('delete from ga_pagepath')db.begin()table = db['ga_pagepath']SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']platform_now = platform.system().lower()# KEY_FILE_LOCATION = 'c:\gitlab\kw_tools\monitor\corded-velocity-301807-a3e3d5420aba.json'KEY_FILE_LOCATION = '/Users/zooeytsai/Downloads/corded-velocity-301807-a3e3d5420aba.json'# line notify headerheaders = {    "Authorization": "Bearer " + "QCAM5upFjeBVp54PGqT4eMZSXPU0y4vYk1e1CoASa2P",    "Content-Type": "application/x-www-form-urlencoded"}com_table = []def creat_table():    for i in range(0, 24):        com_table.append([i, 6000])    # com_table.append([24,70000])def send_msg_pg(viewid, pv):    # line notify send message    current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 現在時間    hour = datetime.now().strftime('%H')    # 判斷是否達標    complet = "否"    # for i in range(0,25):    #   if int(hour)+1==com_table[i][0]:    #     print(i)    #     if int(kw) > com_table[i][1] :    #       complet="是"    #   elif int(hour) == 24:    #     if int(kw) > 70000 :    #       complet="是"    print('網頁瀏覽量', pv)    if viewid == '208868237':        if int(pv) > 2000:            complet = "是"        else:            complet = '否'    else:        if int(pv) > 2300:            complet = "是"        else:            complet = "否"    params = {"message": "\n現在時間: " + current_time + "\n當前pageViews: " + pv + "\n是否達標: " + complet}    print(params)    return params    r = requests.post("https://notify-api.line.me/api/notify", headers=headers, params=params)    print(r)def initialize_analyticsreporting(key_file):    """Initializes an Analytics Reporting API V4 service object.  Returns:    An authorized Analytics Reporting API V4 service object.  """    credentials = ServiceAccountCredentials.from_json_keyfile_name(        key_file, SCOPES)    # Build the service object.    analytics = build('analyticsreporting', 'v4', credentials=credentials)    return analyticsdef get_report(analytics, body):    """Queries the Analytics Reporting API V4.  Args:    analytics: An authorized Analytics Reporting API V4 service object.  Returns:    The Analytics Reporting API V4 response.  """    return analytics.reports().batchGet(        body={            'reportRequests': body        }    ).execute()def print_response(response):    """Parses and prints the Analytics Reporting API V4 response.  Args:    response: An Analytics Reporting API V4 response.  """    result = []    for report in response.get('reports', []):        columnHeader = report.get('columnHeader', {})        dimensionHeaders = columnHeader.get('dimensions', [])        metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])        for row in report.get('data', {}).get('rows', []):            dimensions = row.get('dimensions', [])            dateRangeValues = row.get('metrics', [])            ga_dict = {}            for header, dimension in zip(dimensionHeaders, dimensions):                #        print(header + ': ', dimension)                ga_dict[header] = dimension            for i, values in enumerate(dateRangeValues):                #        print('Date range:', str(i))                for metricHeader, value in zip(metricHeaders, values.get('values')):                    ga_dict[metricHeader.get('name')] = value                #          print(metricHeader.get('name') + ':', value)                result.append(ga_dict)        return result#        print(ga_dict)def main(viewid, key_file):    creat_table()    analytics = initialize_analyticsreporting(key_file)    current_time = datetime.now().strftime('%Y-%m-%d')  # 現在時間    body = [{'viewId': viewid,             'dateRanges': [{'startDate': current_time, 'endDate': current_time}],             'metrics': [{'expression': 'ga:users'}, {'expression': 'ga:newusers'}, {'expression': 'ga:sessions'},                         {'expression': 'ga:pageviews'}, {'expression': 'ga:bounceRate'},                         {'expression': 'ga:pageviewsPerSession'}],             #  'dimensions': [{'name': 'ga:pagePath'}],             #  'orderBys':[{"fieldName": "ga:pageviews", "sortOrder": "DESCENDING"}],             'pageSize': '100'             }]    response = get_report(analytics, body)    ga_dict = print_response(response)    result = []    for elmt in ga_dict:        print(elmt)        hour = datetime.now().strftime('%H')        # if int(hour)+1 > 8 :        message = send_msg_pg(viewid, elmt['ga:pageviews'])    #      result.append(elmt)    print('inserting.....')    return messageif __name__ == '__main__':    creat_table()    main('123')
 |