|
@@ -8,16 +8,16 @@ import pandas as pd
|
|
|
import random
|
|
|
import urllib
|
|
|
import json
|
|
|
-import gspread
|
|
|
+
|
|
|
import datetime
|
|
|
-from gspread_pandas import Spread, Client
|
|
|
-from oauth2client.service_account import ServiceAccountCredentials
|
|
|
+
|
|
|
import os
|
|
|
import threading
|
|
|
from googleapiclient.discovery import build
|
|
|
from oauth2client.service_account import ServiceAccountCredentials
|
|
|
import dataset
|
|
|
import pymysql
|
|
|
+
|
|
|
pymysql.install_as_MySQLdb()
|
|
|
from datetime import datetime
|
|
|
import platform
|
|
@@ -26,33 +26,34 @@ db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/hhh?charset=utf8mb
|
|
|
db.query('delete from ga_pagepath')
|
|
|
db.begin()
|
|
|
|
|
|
-table=db['ga_pagepath']
|
|
|
+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 header
|
|
|
headers = {
|
|
|
- "Authorization": "Bearer " + "QCAM5upFjeBVp54PGqT4eMZSXPU0y4vYk1e1CoASa2P",
|
|
|
- "Content-Type": "application/x-www-form-urlencoded"
|
|
|
+ "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])
|
|
|
+ for i in range(0, 24):
|
|
|
+ com_table.append([i, 6000])
|
|
|
+ # com_table.append([24,70000])
|
|
|
|
|
|
|
|
|
-def send_msg_pg(pv):
|
|
|
- # line notify send message
|
|
|
- current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') #現在時間
|
|
|
- hour = datetime.now().strftime('%H')
|
|
|
+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="否"
|
|
|
+ complet = "否"
|
|
|
# for i in range(0,25):
|
|
|
# if int(hour)+1==com_table[i][0]:
|
|
|
# print(i)
|
|
@@ -61,104 +62,117 @@ def send_msg_pg(pv):
|
|
|
# elif int(hour) == 24:
|
|
|
# if int(kw) > 70000 :
|
|
|
# complet="是"
|
|
|
- print('網頁瀏覽量',pv)
|
|
|
- if int(pv) > 6000:
|
|
|
- complet = "是"
|
|
|
- params = {"message": "\n現在時間: " + current_time + "\n當前pageViews: "+pv + "\n是否達標: " + 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)
|
|
|
+ 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.
|
|
|
+ """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)
|
|
|
+ credentials = ServiceAccountCredentials.from_json_keyfile_name(
|
|
|
+ key_file, SCOPES)
|
|
|
|
|
|
- # Build the service object.
|
|
|
- analytics = build('analyticsreporting', 'v4', credentials=credentials)
|
|
|
+ # Build the service object.
|
|
|
+ analytics = build('analyticsreporting', 'v4', credentials=credentials)
|
|
|
|
|
|
- return analytics
|
|
|
+ return analytics
|
|
|
|
|
|
|
|
|
-def get_report(analytics,body):
|
|
|
- """Queries the Analytics Reporting API V4.
|
|
|
+def 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()
|
|
|
+ return analytics.reports().batchGet(
|
|
|
+ body={
|
|
|
+ 'reportRequests': body
|
|
|
+ }
|
|
|
+ ).execute()
|
|
|
|
|
|
|
|
|
def print_response(response):
|
|
|
- """Parses and prints the Analytics Reporting API V4 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
|
|
|
+ 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}],
|
|
|
+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'
|
|
|
- }]
|
|
|
+ '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)
|
|
|
+ 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(elmt['ga:pageviews'])
|
|
|
-# result.append(elmt)
|
|
|
- print('inserting.....')
|
|
|
- return message
|
|
|
+ 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 message
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
- creat_table()
|
|
|
- main('123')
|
|
|
+ creat_table()
|
|
|
+ main('123')
|