Explorar o código

更新 'monitor/GA_Daily.py'

miacheng913 %!s(int64=3) %!d(string=hai) anos
pai
achega
373e4b4ba8
Modificáronse 1 ficheiros con 147 adicións e 147 borrados
  1. 147 147
      monitor/GA_Daily.py

+ 147 - 147
monitor/GA_Daily.py

@@ -1,148 +1,148 @@
-#!/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
-
-
-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 = '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"
-}
-
-com_table = []
-def creat_table():
-  for i in range(0,24):
-    com_table.append([i,2300*i])
-  com_table.append([24,56000])
-  print(com_table)
-
-def send_msg(kw):
-  # 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)==com_table[i][0]:
-        print(i)
-        if int(kw) > com_table[i][1] : 
-          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 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)
-  current_time = datetime.now().strftime('%Y-%m-%d') #現在時間
-  body=[{ 'viewId': VIEW_ID,
-  '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)
-      send_msg(elmt['ga:pageviews'])
-#      result.append(elmt)
-  print('inserting.....')
-
-if __name__ == '__main__':
-  creat_table()
+#!/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
+
+
+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 = '~/src/kw_tools/monitor/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"
+}
+
+com_table = []
+def creat_table():
+  for i in range(0,24):
+    com_table.append([i,2300*i])
+  com_table.append([24,56000])
+  print(com_table)
+
+def send_msg(kw):
+  # 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)==com_table[i][0]:
+        print(i)
+        if int(kw) > com_table[i][1] : 
+          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 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)
+  current_time = datetime.now().strftime('%Y-%m-%d') #現在時間
+  body=[{ 'viewId': VIEW_ID,
+  '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)
+      send_msg(elmt['ga:pageviews'])
+#      result.append(elmt)
+  print('inserting.....')
+
+if __name__ == '__main__':
+  creat_table()
   main()