|
@@ -0,0 +1,143 @@
|
|
|
+#!/usr/bin/python3
|
|
|
+import sys
|
|
|
+import codecs
|
|
|
+import traceback
|
|
|
+import requests
|
|
|
+import re
|
|
|
+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
|
|
|
+from datetime import datetime
|
|
|
+import schedule
|
|
|
+
|
|
|
+db = 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']
|
|
|
+KEY_FILE_LOCATION = 'c:\\keys\\choozmo-ga-beee24b7a4c1.json' #'c:\\keys\\choozmo-ga-beee24b7a4c1.json'
|
|
|
+VIEW_ID = '188916214'
|
|
|
+
|
|
|
+# line notify header
|
|
|
+headers = {
|
|
|
+ "Authorization": "Bearer " + "WekCRfnAirSiSxALiD6gcm0B56EejsoK89zFbIaiZQD",
|
|
|
+ "Content-Type": "application/x-www-form-urlencoded"
|
|
|
+}
|
|
|
+
|
|
|
+def send_msg(kw):
|
|
|
+ # line notify send message
|
|
|
+ current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') #現在時間
|
|
|
+ # 判斷是否達標
|
|
|
+ complet="否"
|
|
|
+ if int(kw) > 56000 :
|
|
|
+ complet="是"
|
|
|
+ params = {"message": "\n現在時間: " + current_time + "\n當前pageViews: "+kw + "\n是否達標: " + complet}
|
|
|
+ print(params)
|
|
|
+ r = requests.post("https://notify-api.line.me/api/notify",headers=headers, params=params)
|
|
|
+ print(r.text)
|
|
|
+
|
|
|
+def scheduleMonitor():
|
|
|
+ # 清空任務
|
|
|
+ schedule.clear()
|
|
|
+ # 建立一個按1小時隔執行任務
|
|
|
+ schedule.every(1).hours.do(main)
|
|
|
+ while True:
|
|
|
+ schedule.run_pending()
|
|
|
+
|
|
|
+def initialize_analyticsreporting():
|
|
|
+ """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_LOCATION, SCOPES)
|
|
|
+
|
|
|
+ # Build the service object.
|
|
|
+ analytics = build('analyticsreporting', 'v4', credentials=credentials)
|
|
|
+
|
|
|
+ return analytics
|
|
|
+
|
|
|
+
|
|
|
+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()
|
|
|
+
|
|
|
+
|
|
|
+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():
|
|
|
+ analytics = initialize_analyticsreporting()
|
|
|
+#(FB_|facebook|IG_|LINE_|LINEMP_|qsear.ch)
|
|
|
+
|
|
|
+ body=[{ 'viewId': VIEW_ID,
|
|
|
+ 'dateRanges': [{'startDate': '2021-11-03', 'endDate': '2021-11-03'}],
|
|
|
+
|
|
|
+ '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)
|
|
|
+ send_msg(elmt['ga:pageviews'])
|
|
|
+# result.append(elmt)
|
|
|
+ print('inserting.....')
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ scheduleMonitor()
|