瀏覽代碼

Merge remote-tracking branch 'origin/master'

zooeytsai 2 年之前
父節點
當前提交
1e54914488

+ 12 - 0
joblist/choozmointernal-2e314f3d4e12.json

@@ -0,0 +1,12 @@
+{
+  "type": "service_account",
+  "project_id": "choozmointernal",
+  "private_key_id": "2e314f3d4e1249f255cbc0668a8ce4ccf1cbd6b9",
+  "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCro3/iYoVWz5E3\nFeO9VtjJo5d9tRDr+prS9ebcIKiVYVD8GgxYKetdzKdnCMhzPGKR4I4iGCC4OU2W\n8xOk1xXVneOouXhYESMB/GpJEspXQCgGHoRrioBASDxtC4BIpfXvyFpr0rl/Nk2F\ni8ihQM0Sa2qZDbBnJIMAqHDQMje6tZs5A3B8svtdXg60N33JU+bPshG5EqbJ0ttq\nPa+66wtsxgzdyTx287/4dgEZCc/CB7Oh8bRhdqAgBT8ZQjW6KEXa4jDs2ny8TTfZ\njpeZaZWE5qpeConhmjNjiL5IKnjjEkQvIYKxDAMEmSRVb4DI3OlE+nZLtg0ETebb\nJ+scoa8hAgMBAAECggEAVI7tLvu4kycZdJj9JMeHb/d/Z7fviUJiSjJJNQOF6moS\nOtEeacTlJsXvZwxlrJgAO7v0agmW/QuGFSrV76zjHeV2RiZxinmO1KilODDgrJF3\n5mPcexq1ynWMB3DWF3RjsGj1Ww9qwahgEr3l7sN9BGkVECg1Uusi+w0A3yEOYZXM\ndDUUx3k4x+9UTHXz0VJ/uL0SZ7yp/aG47erilgpNuZ39J2/sPv5nBy8xMP2ME4QY\nc+tW/JQVB4eFStmcBPS63WZwbegWKMPfdCgdTJGT1A4lwcyeShmnjkFfytLA4O+y\n8pdz8UQIjgR1ZBuQ29VCA26dTE38jb4xQoAgMI7fPQKBgQDvRSUTktcETUbp/hUn\nTIJIlQDlwsowULQ8SS09r69TfPkwkkMnssZ9YFhKII+FpI+8JmwHSe0RomD0hSDc\nO9fb/D1pYq2yplnA+NeP41oLbXD9nxzHqLpd02hahvOPmjwjn02sEDYjH8j42/2g\nnEsMbGLFXTCuXRhF4U3C8X+czwKBgQC3o8ZQkl8zt7TKqCVE8lqpHyYVAGJICgnF\nqJIF9z7UF8Ob/QTsC1FL+Cw8yv3iffIqwCX5p2gNXzbZrR92qtAiLPiChiKTk2jZ\njXUGxSiFK7PKiwHluNbQWrvkAMCVOZOg54ie6AFdr2l4vKaCBfiVJ9Ahj+1Vncq/\nVIgkmFZRDwKBgQCmw011F/nukKGlQqahrkx7pAZtHNdo10bXYbU7cjBDgy32sWpG\nx+5ZwgWnHIyLe8eGPk06w0aM7NygcA0YEkl/lI2E3vbrNdAGlClBqxa+Mjf3PKeF\nbM7/x/HKbpZg9wGFXml3TBE/Z87dzA44m9YewYgRwMLGNDJPuhlFjqX/twKBgDvS\nURcMJ5EsZeuijMmB/YCcUgaDYoC/LGHEQRVKbqAewaz95m2SXkBWLur64Wu3xXyh\nrX0/SIkanD6aw+YfTL/lUGsMkRTr7zr3dsjmzwVasC3pzItuBCRJem2SxSmXYP0I\nj5vcTh2bt8sKAV/X3BuSpZ1ZSmIajeJ4AgWRzoSHAoGBAIeq13kqPm1Nfr6qFi8b\nDBHDv/4VvyxXLyXlRQHEWDDzrdn3gCHbzPjryUdxU8U3u8OTSra6vAyhFEmIk32/\nTq0vx7XH2AdN8iIwo59Qhmp4g1wPoiXKSjXVxAgK7eCfkDi1p+0CzQulZGz3KRIV\nhucDeA0a767QtKpGDi9hi2iZ\n-----END PRIVATE KEY-----\n",
+  "client_email": "gdrive@choozmointernal.iam.gserviceaccount.com",
+  "client_id": "111207848091817318160",
+  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
+  "token_uri": "https://oauth2.googleapis.com/token",
+  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
+  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/gdrive%40choozmointernal.iam.gserviceaccount.com"
+}

+ 81 - 0
joblist/jobcheck.py

@@ -0,0 +1,81 @@
+import requests
+import datetime
+from dateutil import parser
+import gspread
+from oauth2client.service_account import ServiceAccountCredentials
+import time
+
+# drop this at PUBLIC2
+
+# TASK LIST HERE
+# https://docs.google.com/spreadsheets/d/153w046qHhpnZTYU7FJ-S2xyGIH_BXbycLYfLI2fFsZc/edit#gid=0
+
+scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
+creds = ServiceAccountCredentials.from_json_keyfile_name('choozmointernal-2e314f3d4e12.json', scope)
+client = gspread.authorize(creds)
+message = "提醒近期預定執行的作業如下:\n\n"
+message2 = "提醒近期需完成的作業如下:\n\n"
+
+def notify_group(msg):
+    gid='WekCRfnAirSiSxALiD6gcm0B56EejsoK89zFbIaiZQD'
+    headers = {"Authorization": "Bearer " + gid,"Content-Type": "application/x-www-form-urlencoded"}
+    r = requests.post("https://notify-api.line.me/api/notify",headers=headers, params={"message": msg})
+
+sheet = client.open('ChoozMo 專案執行表單_20220720')
+sheet_instance = sheet.get_worksheet(0)
+
+records_data = sheet_instance.get_all_records()
+#print(records_data[0])
+
+for data in records_data:
+    try:
+        print(parser.parse(data["完成日"]))
+        print(datetime.date.today())
+        deltastart = (parser.parse(data["起始日"]).date()-datetime.date.today()).days
+        deltaend = (parser.parse(data["完成日"]).date()-datetime.date.today()).days
+        print(deltastart, deltaend)
+
+        if(deltastart <= 7 and data["完成度"] == "預定執行"):
+            message += "專案:" + data["專案"] + "\n"
+            message += "專案項目:" + data["專案項目"] + "\n"
+            message += "作業:" + data["執行項目"] + "\n"
+            message += "執行人員:" + data["指派對象"] + "\n"
+            message += "PM:" + data["PM"] + "\n"
+            message += "執行期間:" + data["起始日"] + "-" + data["完成日"]
+            if(deltastart>0):
+                message += " (尚有"+ str(deltastart) + "天)\n\n"
+            elif(deltastart==0):
+                message += " (當天開始執行)\n\n"
+            else:
+                message += " (過期"+ str(deltastart).replace('-','') + "天)\n\n"
+
+        elif(deltaend <= 7 and data["完成度"] == "執行中"):
+            message2 += "專案:" + data["專案"] + "\n"
+            message2 += "專案項目:" + data["專案項目"] + "\n"
+            message2 += "作業:" + data["執行項目"] + "\n"
+            message2 += "執行人員:" + data["指派對象"] + "\n"
+            message2 += "PM:" + data["PM"] + "\n"
+            message2 += "完成日:" + data["完成日"]
+            if(deltaend>0):
+                message2 += " (尚有"+ str(deltaend) + "天)\n\n"
+            elif(deltaend==0):
+                message2 += " (當天完成)\n\n"
+            else:
+                message2 += " (過期"+ str(deltaend).replace('-','') + "天)\n\n"
+
+    except:
+        print("PASS")
+
+msg1 = [message[i:i+1000] for i in range(0, len(message), 1000)]
+for m1 in msg1:
+    #notify_group(m1) #annotated to prevent unintentional trigger
+    print(m1)
+
+msg2 = [message2[i:i+1000] for i in range(0, len(message2), 1000)]
+for m2 in msg2:
+    #notify_group(m2)
+    print(m2)
+
+'''notify_group(message)
+time.sleep(5)
+notify_group(message2)'''

二進制
website_clickjobs/type-FD-N/__pycache__/_clickjob.cpython-39.pyc


二進制
website_clickjobs/type-FD-N/__pycache__/_clickjobexp.cpython-39.pyc


+ 86 - 0
website_clickjobs/type-FD-N/_clickjob.py

@@ -0,0 +1,86 @@
+import time
+from datetime import datetime
+import json
+from selenium import webdriver
+from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
+import time
+import os
+import urllib.parse
+from selenium.webdriver.support.ui import WebDriverWait
+from selenium.webdriver.common.by import By
+from selenium.webdriver.support import expected_conditions as EC
+import codecs
+import random
+import requests
+import dataset
+import traceback
+import sys
+from selenium.webdriver.common.keys import Keys
+from selenium.webdriver.firefox.options import *
+
+add_tabs = [4,5,6,7,8,4,5,6,7,8,4,5,6,7,8,4,5,6,7,8]
+sleepint=0
+
+db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/seo?charset=utf8mb4')
+driver=None
+headers = {
+        "Authorization": "Bearer " + "t35vhZtWNgvDNWHc3DJh0OKll3mcB9GvC8K2EAkBug2",
+        "Content-Type": "application/x-www-form-urlencoded"
+}
+
+sleepoffset = 0
+
+def send_msg(kw):
+    params = {"message": "處理關鍵字: "+kw}  
+    r = requests.post("https://notify-api.line.me/api/notify",headers=headers, params=params)
+
+
+def empty_query(q):
+    global driver
+    googleurl='https://www.google.com/search?q='+urllib.parse.quote(q)
+    driver.get(googleurl)
+    time.sleep(3)
+
+
+def process_query(domain, target_domain, brands, query):
+    print(query)
+    sleepoffset = 0
+    global driver
+    driver.get(domain)
+    time.sleep(6)
+    print(driver.current_url)
+    
+
+def run_once(domain, target_domain, brands, query):
+    global driver
+    result=[]
+    options = Options()
+    options.headless = True
+#    options.add_argument("--user-agent=" +user_agent)
+#    options.add_argument('-no-sandbox')
+#    options.add_argument('-disable-dev-shm-usage')
+
+    firefox_profile = webdriver.FirefoxProfile()
+    firefox_profile.set_preference("browser.privatebrowsing.autostart", True)
+
+    driver = webdriver.Firefox(
+    options=options, firefox_profile=firefox_profile)
+
+    driver.delete_all_cookies()
+    driver.set_window_size(1400,1000)
+
+    process_query(domain, target_domain, brands, query)
+    driver.quit()
+
+#execution starts here
+
+def execute(domain, target_domain, brands, query_list, times, sleepinterval):
+    for i in range (0,times):
+        print("Run " + str(i))
+        try:
+            run_once(domain, target_domain, brands, random.choice(query_list))
+        except:
+            traceback.print_exc()
+        #sleepint=random.randint(75,90) - sleepoffset
+        print("Completed (")
+        time.sleep(sleepinterval)

+ 10 - 0
website_clickjobs/type-FD-N/bennis.py

@@ -0,0 +1,10 @@
+from _clickjob import *
+
+domain = 'https://www.bennis.com.tw'
+target_domain = ['bennis.com.tw']
+brands={domain:'班尼斯'}
+query_list = ('班尼斯', '乳膠 墊 推薦', '床 墊 訂 做 價格', '乳膠 床 推薦')
+times = 1666
+sleepinterval = 0.5
+
+execute(domain, target_domain, brands, query_list, times, sleepinterval)

+ 10 - 0
website_clickjobs/type-FD-N/yogoclean.py

@@ -0,0 +1,10 @@
+from _clickjob import *
+
+domain = 'https://www.yogoclean.com'
+target_domain = ['yogoclean.com']
+brands={domain:'有夠讚'}
+query_list = ('有夠讚','有夠讚')
+times = 1666
+sleepinterval = 15
+
+execute(domain, target_domain, brands, query_list, times, sleepinterval)

+ 1 - 1
website_clickjobs/type-FD/_clickjob.py

@@ -85,4 +85,4 @@ def execute(domain, target_domain, brands, query_list):
             traceback.print_exc()
         #sleepint=random.randint(75,90) - sleepoffset
         print("Completed (")
-        time.sleep(8)
+        time.sleep(15)