Explorar o código

Merge branch 'master' of http://git.choozmo.com:3000/choozmo/kw_tools

root %!s(int64=2) %!d(string=hai) anos
pai
achega
059504df22

+ 27 - 0
69592a86-ed3b-477e-8060-39af32d8ec49.json

@@ -0,0 +1,27 @@
+
+    {
+       "access_token":"ya29.A0ARrdaM-8J7urxGZFJBi4jt4ORkrCofDLMI3SN_jNfFjt5HlRZnlQ_FCRqQNZupdR0HWhAgzOE92p-AjAaBpKwklGQGxM5m3byAjQsr8qHr237p1lsdWif0kffHt2wpNxowuy5UyrzxbrSsj0zmuzZ5JgthRd",
+       "client_id":"184319941539-gdh6p4v400g0f5fj076bp7l3cf7vn7ha.apps.googleusercontent.com",
+       "client_secret":"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",
+       "refresh_token":"1//0e3GKAc0Xl1V1CgYIARAAGA4SNwF-L9IrMmaPcxVGEA6J-yYeVzx8l9C3op0oiga7Ouw-_b7hv3enOhPwEixoH7pY3efL_aY6cSw",
+       "token_expiry":"2020-10-27T18:03:48Z",
+       "token_uri":"https://accounts.google.com/o/oauth2/token",
+       "user_agent":null,
+       "revoke_uri":"https://oauth2.googleapis.com/revoke",
+       "id_token":null,
+       "id_token_jwt":null,
+       "token_response":{
+          "access_token":"1//0e3GKAc0Xl1V1CgYIARAAGA4SNwF-L9IrMmaPcxVGEA6J-yYeVzx8l9C3op0oiga7Ouw-_b7hv3enOhPwEixoH7pY3efL_aY6cSw",
+          "expires_in": 3599,
+          "scope":"https://www.googleapis.com/auth/youtube.upload",
+          "token_type":"Bearer"
+       },
+       "scopes":[
+          "https://www.googleapis.com/auth/youtube.upload"
+       ],
+       "token_info_uri":"https://oauth2.googleapis.com/tokeninfo",
+       "invalid":false,
+       "_class":"OAuth2Credentials",
+       "_module":"oauth2client.client"
+    }
+            

+ 3 - 2
INNNews/run_sns.py

@@ -24,15 +24,16 @@ def run_once(pport, dockername):
     
     cursor = db.query('select term, url, client from seo.sns_kw')
     for c in cursor:
-        lst.append([c['term'], c['url'], c['client']])
+        lst.append([c['term'], c['url'], c['client'], c['domain']])
     
     obj = random.choice(lst)
     kw = obj[0]
     url = obj[1]
     client = obj[2]
+    domain = obj[3]
     print(kw, url)
     
-    intval = os.system(f'python3 sns_clickbot.py get --kw="{kw}" --url="{url}" --client="{client}" --port="{str(pport)}"')
+    intval = os.system(f'python3 sns_clickbot.py get --kw="{kw}" --url="{url}" --client="{client}" --port="{str(pport)}" --domain="{domain}"')
     
     print('執行完成genetal_clickbot')
     

+ 4 - 3
INNNews/sns_clickbot.py

@@ -51,6 +51,7 @@ def process_query(qs):
     q=qs[0]
     url=qs[1]
     client=qs[2]
+    domain=qs[3]
     global driver
     escaped_search_term = urllib.parse.quote(q)
     googleurl = 'https://www.google.com/search?q={}&num={}&hl={}'.format(escaped_search_term, 100, 'zh-TW')
@@ -73,7 +74,7 @@ def process_query(qs):
                 print(href)
                 print(txt)
                 print("ranking", idx)
-                table.insert({'kw':q,'client':client,'ranking':idx,'title':txt,'url':href,'dt':datetime.datetime.now()})
+                table.insert({'kw':q,'client':client,'ranking':idx,'title':txt,'url':href,'dt':datetime.datetime.now(),'domain':domain})
                 webdriver.ActionChains(driver).move_to_element(elmt).perform()
                 webdriver.ActionChains(driver).move_to_element(elmt).click().perform()
                 time.sleep(5)
@@ -104,9 +105,9 @@ def run_once(q):
 
 class JParams(object):
 
-  def get(self, kw,url,client,port):
+  def get(self, kw,url,client,port,domain):
     print('關鍵字',kw)
-    run_once( (kw,url,client,port)  )
+    run_once( (kw,url,client,port,domain)  )
 
 
 if __name__ == '__main__':

+ 9 - 0
SEO/seo_notify.py

@@ -20,7 +20,11 @@ import sys
 import docker
 import pymysql
 pymysql.install_as_MySQLdb()
+<<<<<<< HEAD
+from ga_click import main
+=======
 from monitor.ga_click import main
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
 
 headers = {
     "Authorization": "Bearer " + "OZDcq7sVKwr3F6YNLtBF3LuIgpa4Ql9eAnBWeD7sHTJ",
@@ -60,7 +64,12 @@ per_total_click = f"毛怪:{d['beastparadise.net']}\n清原:{d['taroboba-yuan.co
 print(per_total_click)
 msg_per_total_click = '\n點擊次數總計:\n' + per_total_click
 msg = "\n機器人執行次數:" + str(idx)
+<<<<<<< HEAD
+ga = main()['ga:sessions']
+ga_sessions = '\n幸福空間的GA Sessions'+ ga
+=======
 ga_sessions = '\n幸福空間的GA Sessions'+main()['ga:sessions']
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
 send_msg(msg_per_total_click + result + ga_sessions)
 
 

+ 71 - 0
SEO/seo_notify_gs.py

@@ -0,0 +1,71 @@
+import redis
+import time
+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
+from bs4 import BeautifulSoup
+import requests
+import dataset
+import time
+import rpyc
+import sys
+import docker
+import pymysql
+pymysql.install_as_MySQLdb()
+from ga_click import main
+
+headers = {
+    "Authorization": "Bearer " + "OZDcq7sVKwr3F6YNLtBF3LuIgpa4Ql9eAnBWeD7sHTJ",
+    "Content-Type": "application/x-www-form-urlencoded"
+}
+
+name = {'beastparadise.net':'毛怪','taroboba-yuan.com':'清原','match-planet.com':'火柴星人','hhh.com.tw':['幸福空間','幸福空間設計師'],'sctt.com.tw':'仁本','gs-rack.com':'神助物流','bennis.com.tw':'班尼斯'}
+
+def send_msg(kw):
+    params = {"message": kw}
+    print('通知結果', params)
+    r = requests.post("https://notify-api.line.me/api/notify",headers=headers, params=params)
+
+
+db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/seo?charset=utf8mb4')
+cursor = db.query(
+    'SELECT * FROM seo.general_log where domain != "innews.com.tw" and datediff(now(),dt)=0 order by dt desc')
+cursor_rank = db.query(
+    'SELECT * FROM seo.google_rank where datediff(now(),dt)=0 order by dt desc')
+result = "\n"
+idx = 0
+d = {'beastparadise.net':0,'match-planet.com':0,'taroboba-yuan.com':0,'hhh.com.tw':0,'sctt.com.tw':0,'hhh.com.tw/designer':0,'gs-rack.com':0,'bennis.com.tw':0}
+for c in cursor:
+    custom_name = c['domain']
+    if custom_name in d:
+        if custom_name == 'hhh.com.tw' and c['num']==1:
+            d['hhh.com.tw/designer']+=1
+        d[custom_name]+=1
+    idx += 1
+    if idx <= 3:
+        elmt = c['kw']
+        domain = c['domain']
+        custom_name = name[domain]
+        result += "[" + str(c['ranking']) + "]:" + elmt + " "+ f"({custom_name})\n"
+
+per_total_click = f"毛怪:{d['beastparadise.net']}\n清原:{d['taroboba-yuan.com']}\n火柴星人:{d['match-planet.com']}\n幸福空間:{d['hhh.com.tw']}\n幸福空間設計師:{d['hhh.com.tw/designer']}\n仁本:{d['sctt.com.tw']}\n神助物流:{d['gs-rack.com']}\n班尼斯:{d['bennis.com.tw']}\n"
+print(per_total_click)
+msg_per_total_click = '\n點擊次數總計:\n' + per_total_click
+msg = "\n機器人執行次數:" + str(idx)
+ga_sessions = '\n幸福空間的GA Sessions'+main()['ga:sessions']
+send_msg(msg_per_total_click + result + ga_sessions)
+
+
+
+# schtasks /create /sc minute /mo 30 /sd 2022/05/050 /st 9:00 /et 23:00 /tn "linebat" /tr "C:\tmp\inn_line.bat"
+
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
+sys.path.append(os.path.dirname(SCRIPT_DIR))

+ 10 - 6
choozmo/click_commerce.py

@@ -10,6 +10,7 @@ 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 time
 import traceback
@@ -22,6 +23,12 @@ headers = {
 }
 
 
+
+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)
@@ -61,15 +68,12 @@ def process_query(qs):
 
 def run_once(q):
     global driver
-    print('run_once()')
     result=[]
     options = webdriver.ChromeOptions()
     options.add_argument('--headless')
 #    options.add_argument("--user-agent=" +user_agent)
-#    options.add_argument("--incognito")
-    options.add_argument('--no-sandbox')
-    options.add_argument("--disable-gpu")
-    options.add_argument('--disable-dev-shm-usage')
+    options.add_argument("--incognito")
+
     driver = webdriver.Chrome(
     options=options)
 
@@ -99,6 +103,6 @@ while True:
         run_once( (c['term'],c['domain'])   )
     except:
         traceback.print_exc()
-    sleepint=random.randint(290,420)
+    sleepint=random.randint(380,520)
     time.sleep(sleepint)
 

+ 0 - 108
choozmo/list_clickjob.py

@@ -1,108 +0,0 @@
-import time
-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 time
-import traceback
-import sys
-
-driver=None
-headers = {
-        "Authorization": "Bearer " + "t35vhZtWNgvDNWHc3DJh0OKll3mcB9GvC8K2EAkBug2",
-        "Content-Type": "application/x-www-form-urlencoded"
-}
-
-
-
-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(qs):
-    q=qs[0]
-    domain=qs[1]
-    global driver
-    googleurl = 'https://www.google.com/search?q={}&num={}&hl={}'.format(urllib.parse.quote(q), 100,'zh-TW')
-    print(googleurl)
-    driver.get(googleurl)
-    time.sleep(6)
-
-    elmts=driver.find_elements_by_xpath("//div[@class='yuRUbf']/a")
-
-    idx=1
-    ranking=-1
-    print(len(elmts))
-#    driver.save_screenshot('c:/tmp/test.png')
-
-    for elmt in elmts:
-
-        href=elmt.get_attribute('href')
-        txt=elmt.text
-        if len(txt)>10:
-            if domain in href:
-                print('clicked....')
-                print(href)
-                print(txt)
-                webdriver.ActionChains(driver).move_to_element(elmt).perform()
-                webdriver.ActionChains(driver).move_to_element(elmt).click().perform()
-                break
-
-
-def run_once(q):
-    global driver
-    result=[]
-    options = webdriver.ChromeOptions()
-    options.add_argument('--headless')
-#    options.add_argument("--user-agent=" +user_agent)
-    options.add_argument("--incognito")
-
-    driver = webdriver.Chrome(
-    options=options)
-
-    driver.delete_all_cookies()
-    driver.set_window_size(1400,1000)
-
-    print(q)
-    process_query(q)
-    time.sleep(3)
-    driver.quit()
-
-
-#lst=[{'kw':'幸福空間','domain':'hhh.com.tw','page':0}]
-lst=[]
-db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/seo?charset=utf8mb4')
-
-cursor=db.query('select term,domain from selected_kw  order by rand()')
-
-for c in cursor:
-    lst.append(c)
-
-
-#for c in lst:
-while True:
-    try:
-        c=random.choice(lst)
-        run_once( (c['term'],c['domain'])   )
-    except:
-        traceback.print_exc()
-    sleepint=random.randint(320,520)
-    time.sleep(sleepint)
-

+ 8 - 5
choozmo/meta_1777.py

@@ -47,7 +47,7 @@ def re_get_webdriver():
 
         options.add_argument("--no-sandbox")
         options.add_argument("--disable-dev-shm-usage")
-#        options.add_argument("--headless")
+        options.add_argument("--headless")
 
 #        print(user_agent)
 #        options.add_argument("--user-agent=" +user_agent)
@@ -91,8 +91,9 @@ def run_once(url):
 #        driver.execute_script("window.scrollTo(0, window.scrollY + 400)")
 #        time.sleep(0.5)
     except:
+        traceback.print_exc()
         print('exception')
-        time.sleep(9999)
+#        time.sleep(9999)
 
 
 lst=[]
@@ -104,6 +105,8 @@ lst=[]
 while True:
     l='https://cmm.ai/meta'
     print(l)
-    run_once(l)
-    time.sleep(2)
-
+    try:
+        run_once(l)
+        time.sleep(2)
+    except:
+        traceback.print_exc()

+ 12 - 0
choozmo/term_get_email.py

@@ -16,7 +16,11 @@ import time
 # import rpyc
 import sys
 import docker
+<<<<<<< HEAD
+# import  googlesearch
+=======
 # import googlesearch
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
 import codecs
 import sys
 import time
@@ -77,11 +81,19 @@ def restart_browser():
     options = webdriver.ChromeOptions()
     options.add_argument("--headless")
     options.add_argument("start-maximized")
+<<<<<<< HEAD
+    options.add_argument('user-data-dir=C:\\Users\\jared\\AppData\\Local\\Google\\Chrome\\User Data')
+    # options.add_argument('--profile-directory=Profile 77')
+    # options.add_argument('--profile-directory=Default')
+
+    driver=webdriver.Chrome(options=options,executable_path='C:\\Users\\user\\Downloads\\chromedriver_99\\chromedriver')
+=======
     options.add_argument('user-data-dir=/Users/zooeytsai/Library/Application Support/Google/Chrome/Default')
 #    options.add_argument('--profile-directory=Profile 77')
     options.add_argument('--profile-directory=Default')
 
     driver=webdriver.Chrome(options=options,executable_path=path)
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
     #driver = webdriver.Remote(
     #    command_executor='http://127.0.0.1:4444/wd/hub',
     #desired_capabilities=options.to_capabilities())

+ 12 - 6
choozmo/term_gsearch.py

@@ -1,13 +1,12 @@
-from choozmo import gsearch_general
+import gsearch_general
 import sys
 import dataset
 import datetime
-import pymysql
-pymysql.install_as_MySQLdb()
+
 
 db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/seo?charset=utf8mb4')
-db_local = dataset.connect('mysql://root:jondae350@localhost:3306/db')
-table=db['term_gsearch']
+db_local = dataset.connect('mysql://root:jondae350@localhost:3306/db?charset=utf8mb4')
+table=db_local['test']
 
 
 driver=gsearch_general.restart_browser()
@@ -125,18 +124,25 @@ driver=gsearch_general.restart_browser()
 #idx=gsearch_general.process_query(driver,'聯絡我們 mail 命理',number_results=100,language_code='zh-TW')
 #idx=gsearch_general.process_query(driver,'聯絡我們 mail 改運',number_results=100,language_code='zh-TW')
 # idx=gsearch_general.process_query(driver,'聯絡我們 mail 風水',number_results=100,language_code='zh-TW')
+<<<<<<< HEAD
+idx=gsearch_general.process_query(driver,'聯絡我們 mail 公益',number_results=100,language_code='zh-TW')
+=======
 # idx=gsearch_general.process_query(driver,'聯絡我們 mail 公益',number_results=100,language_code='zh-TW')
 idx=gsearch_general.process_query(driver,'聯絡我們 區塊鏈',number_results=100,language_code='zh-TW')
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
 
 
 
 
 
-# print(idx)
+print(idx)
 for x in idx:
     x['dt']=datetime.datetime.now()
+<<<<<<< HEAD
+=======
     x['tag']='區塊鏈2'
     print(x)
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
     table.insert(x)
 
 if idx==None:

+ 3 - 5
hhh/SEO/fast_1999.py

@@ -89,12 +89,12 @@ def re_get_webdriver():
 #        if 'p17777' in l.name:
 #            ls[0].restart()
 
-    time.sleep(4)
+#    time.sleep(4)
     if driver is not None:
         print('closing....')
         driver.quit()
         os.system('docker container restart p'+portnum)
-        time.sleep(10)
+        time.sleep(11)
         
 #    options = webdriver.EdgeOptions()
     try:
@@ -106,14 +106,12 @@ def re_get_webdriver():
         # options.add_argument("--headless") # 視窗背後執行
         print(user_agent)
         options.add_argument("--user-agent=" +user_agent)
-        options.add_argument("--incognito")
 
         driver = webdriver.Remote(
             command_executor='http://127.0.0.1:'+str(portnum)+'/wd/hub',
             options=options
 #                        desired_capabilities=options.to_capabilities(),
             )
-        driver.delete_all_cookies()
         driver.set_window_size(1400,1000)
         return
     except:
@@ -125,7 +123,7 @@ def re_get_webdriver():
 
 def run_once(url):
     global driver
-    i=random.randint(0,5)
+    i=random.randint(0,9)
     if i==0 or driver is None:
 #    if True:
         time.sleep(15)

+ 5 - 0
hhh/yt/looping.bat

@@ -0,0 +1,5 @@
+:loop
+
+python yt_looping.py
+
+goto loop

+ 56 - 0
hhh/yt/scan2.py

@@ -0,0 +1,56 @@
+import os
+import sys
+import dataset
+import codecs
+
+fname_dict={}
+#fulllst=['#31','#32','#33','#34','#35','#36','#37','#38','#39','#40','#41','#42']
+fulllst=['#49','#50','#51','#52','#53','#54','#55']
+
+
+fr=codecs.open('c:/tmp/ytfiles.csv','r','utf-8')
+lines=fr.readlines()
+fr.close()
+## .mp4 -> yid
+fname_yiddict={}
+for l in lines:
+    elmts=l.split(',')
+    if len(elmts[2])>10:
+        fname_yiddict[elmts[0].lower().replace('\r','').replace('\n','')]=elmts[2].replace('\r','').replace('\n','').replace("http://youtu.be/",'').replace("https://youtu.be/",'')
+
+
+for lst_elmt in fulllst:
+    lst=os.listdir('O:\\【完整版】幸福空間節目\\'+lst_elmt)
+    for l in lst:
+        fname_dict[l]='O:\\【完整版】幸福空間節目\\'+lst_elmt+"\\"+l
+        print(l)
+        print('O:\\【完整版】幸福空間節目\\'+lst_elmt+"\\"+l)
+
+
+db2 = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/hhh?charset=utf8mb4')
+table=db2['yt_tasks2']
+db = dataset.connect('mysql://hhh7796hhh:lYmWsu^ujcA1@127.0.0.1:13317/xoops?charset=utf8mb4')
+
+# yid -> detail
+yiddict={}
+cursor=db.query('select youtube_video_id,title,description from youtube_list')
+title=None
+desc=None
+for c in cursor:
+#    print(c['youtube_video_id'])
+    yiddict[c['youtube_video_id']]=c
+#    title=c['title']
+#    desc=c['description']
+
+for k,v in fname_yiddict.items():
+#    print(k)
+#    print(v)
+    if yiddict.get(v):
+        if fname_dict.get(k):
+            table.insert({'fname':k,'path':fname_dict[k],'yid':yiddict[v]['youtube_video_id'],'title':yiddict[v]['title'],'desc':yiddict[v]['description']})
+            print(k)
+            print(fname_dict[k])
+            print(yiddict[v]['youtube_video_id'])
+            print(yiddict[v]['title'])
+
+#print(lst)

+ 55 - 0
hhh/yt/scandisk.py

@@ -0,0 +1,55 @@
+import os
+import sys
+import dataset
+import codecs
+
+fname_dict={}
+fulllst=['#31','#32','#33','#34','#35','#36','#37','#38','#39','#40','#41','#42']
+
+
+fr=codecs.open('c:/tmp/ytfiles.csv','r','utf-8')
+lines=fr.readlines()
+fr.close()
+## .mp4 -> yid
+fname_yiddict={}
+for l in lines:
+    elmts=l.split(',')
+    if len(elmts[2])>10:
+        fname_yiddict[elmts[0].lower().replace('\r','').replace('\n','')]=elmts[2].replace('\r','').replace('\n','').replace("http://youtu.be/",'').replace("https://youtu.be/",'')
+
+
+for lst_elmt in fulllst:
+    lst=os.listdir('P:\\【完整版】幸福空間節目\\'+lst_elmt)
+    for l in lst:
+        fname_dict[l]='P:\\【完整版】幸福空間節目\\'+lst_elmt+"\\"+l
+        print(l)
+        print('P:\\【完整版】幸福空間節目\\'+lst_elmt+"\\"+l)
+
+
+db2 = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/hhh?charset=utf8mb4')
+table=db2['yt_tasks']
+db = dataset.connect('mysql://hhh7796hhh:lYmWsu^ujcA1@127.0.0.1:13317/xoops?charset=utf8mb4')
+
+# yid -> detail
+yiddict={}
+cursor=db.query('select youtube_video_id,title,description from youtube_list')
+title=None
+desc=None
+for c in cursor:
+#    print(c['youtube_video_id'])
+    yiddict[c['youtube_video_id']]=c
+#    title=c['title']
+#    desc=c['description']
+
+for k,v in fname_yiddict.items():
+#    print(k)
+#    print(v)
+    if yiddict.get(v):
+        if fname_dict.get(k):
+            table.insert({'fname':k,'path':fname_dict[k],'yid':yiddict[v]['youtube_video_id'],'title':yiddict[v]['title'],'desc':yiddict[v]['description']})
+            print(k)
+            print(fname_dict[k])
+            print(yiddict[v]['youtube_video_id'])
+            print(yiddict[v]['title'])
+
+#print(lst)

+ 130 - 0
hhh/yt/sel_yt.py

@@ -0,0 +1,130 @@
+import traceback
+from selenium import webdriver
+from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
+import time
+import os
+import datetime
+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
+from selenium.webdriver.common.keys import Keys
+import codecs
+import random
+import requests
+import time
+import rpyc
+import sys
+import codecs
+import sys
+import time
+import dataset
+import os
+
+
+fr=codecs.open('c:/tmp/ytfiles.csv','r','utf-8')
+lines=fr.readlines()
+fr.close()
+fnamedict={}
+for l in lines:
+    elmts=l.split(',')
+    if len(elmts[2])>10:
+        fnamedict[elmts[0].lower().replace('\r','').replace('\n','')]=elmts[2].replace('\r','').replace('\n','').replace("http://youtu.be/",'').replace("https://youtu.be/",'')
+
+prefix='P:\\【完整版】幸福空間節目\\#31'
+fname='31video_1101.mp4'
+yt=fnamedict[fname.lower()]
+print(yt)
+
+#db = dataset.connect('mysql://hhh7796hhh:lYmWsu^ujcA1@hhh-v57.cmab1ctkglka.ap-northeast-2.rds.amazonaws.com:3306/xoops?charset=utf8mb4')
+db = dataset.connect('mysql://hhh7796hhh:lYmWsu^ujcA1@127.0.0.1:13317/xoops?charset=utf8mb4')
+
+cursor=db.query('select * from youtube_list where youtube_video_id="'+yt+'"')
+title=None
+desc=None
+for c in cursor:
+    print(c)
+    title=c['title']
+    desc=c['description']
+    break
+
+
+
+
+
+def scrolling(driver,pgnum):
+    ub = driver.find_element_by_css_selector('body')
+    for i in range(pgnum):
+        ub.send_keys(Keys.PAGE_DOWN)
+        if pgnum>1:
+            time.sleep(0.3)
+
+
+def restart_browser():
+#    os.system('docker container restart p4444')
+#    time.sleep(10)
+
+    options = webdriver.ChromeOptions()
+#    options.add_argument("--proxy-server=socks5://130.61.93.198:1080")
+    options.add_argument("start-maximized")
+    options.add_argument('user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data')
+    options.add_argument('--profile-directory=Profile 7')
+
+    driver=webdriver.Chrome(desired_capabilities=options.to_capabilities())
+    driver.set_window_size(1400,1000)
+    return driver
+
+
+driver=restart_browser()
+url='https://www.youtube.com/upload'
+
+driver.get(url)
+time.sleep(5)
+elmt=driver.find_element_by_xpath("//input[@type='file']")
+elmt.send_keys(prefix+"\\"+fname)
+time.sleep(6)
+
+elmts=driver.find_elements_by_xpath("//div[@id='textbox']")
+elmt=elmts[0]
+elmt.click()
+for i in range(20):
+    elmt.send_keys(Keys.BACKSPACE)
+    time.sleep(0.1)
+elmt.send_keys(title)
+time.sleep(1)
+
+elmt=elmts[1]
+elmt.click()
+for i in range(15):
+    elmt.send_keys(Keys.ARROW_UP)
+    time.sleep(0.1)
+elmt.send_keys(Keys.RETURN)
+
+elmt.send_keys(desc)
+time.sleep(1)
+
+elmt=driver.find_element_by_xpath("//*[@id='next-button']")
+elmt.click()
+time.sleep(3)
+
+elmt=driver.find_element_by_xpath("//*[@id='next-button']")
+elmt.click()
+time.sleep(3)
+elmt=driver.find_element_by_xpath("//*[@id='next-button']")
+elmt.click()
+time.sleep(3)
+elmt=driver.find_element_by_xpath("//*[@id='done-button']")
+elmt.click()
+time.sleep(3)
+
+while True:
+    try:
+        elmt=driver.find_element_by_xpath("//span[contains(text(),'檢查完畢,未發現任何問題)]")
+        break
+    except:
+        print('not yet')
+        time.sleep(5)
+#檢查完畢,未發現任何問題。
+
+time.sleep(9999)
+

BIN=BIN
ig_tags/__pycache__/ig_tags.cpython-39.pyc


BIN=BIN
ig_tags/__pycache__/pd.cpython-39.pyc


BIN=BIN
ig_tags/__pycache__/setting.cpython-39.pyc


+ 88 - 6
ig_tags/ig_selenium.py

@@ -1,4 +1,3 @@
-# coding:utf-8
 from selenium import webdriver
 from random import randint
 import time
@@ -16,6 +15,17 @@ import pandas
 import os
 import ast
 import pymysql
+<<<<<<< HEAD
+
+pymysql.install_as_MySQLdb()
+import setting
+
+
+account = ['chenlinrain','enjoylisteningswift','novak_goodenough']
+
+account = 'chenlinrain'
+password = 'weareyoung12'
+=======
 
 pymysql.install_as_MySQLdb()
 import pd
@@ -23,25 +33,41 @@ from setting import rua
 
 account = ['chenlinrain', 'aruikuwasaki', 'enjoylisteningswift', 'novak_goodenough']
 password = ['weareyoung12']
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
 
 path = 'C:\\Users\\user\\Downloads\\chromedriver_99\\chromedriver'
 
 options = webdriver.ChromeOptions()
+<<<<<<< HEAD
+options.add_argument("--headless") # 視窗背後執行
+options.add_argument("user-agent=%s" % setting.rua())
+print(setting.rua())
+=======
 options.add_argument("--headless")  # 視窗背後執行
 options.add_argument("user-agent=%s" % rua())
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
 
 hashtag = '上課平台'
 
 
 def download_post():
+<<<<<<< HEAD
+    sbaccount = 'chenlinrain'
+    sbpd = password
+    hashtag = '實體課'
+=======
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
     url = f"https://www.instagram.com/explore/tags/{hashtag}/"
     s = Service(path)
-    driver = webdriver.Chrome(service=s, options=options)
+    driver = webdriver.Chrome(executable_path=path, options=options)
     driver.implicitly_wait(3)
     driver.get('https://www.instagram.com/')
     time.sleep(5)
+<<<<<<< HEAD
+=======
     sbaccount = account[4]
     sbpd = password[0]
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
     driver.find_element(By.NAME, 'username').send_keys(sbaccount)
     driver.find_element(By.NAME, 'password').send_keys(sbpd)
     time.sleep(3)
@@ -52,11 +78,11 @@ def download_post():
     driver.get(url)
     time.sleep(3)
     limit_of_posts = 10
-    limit_of_scroll = 100
+    limit_of_scroll = 40
     c = 0
     c_sroll = 0
     link = []
-    last_height = driver.execute_script("return document.body.scrollHeight")
+    
     while True:
         print(c, c_sroll)
         driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
@@ -69,6 +95,17 @@ def download_post():
                 link.append(elem['href'])
         c += 1
         c_sroll += 1
+<<<<<<< HEAD
+        if c > limit_of_posts:
+            print('中場休息')
+            time.sleep(randint(15, 30))
+            c = 0
+        if c_sroll > limit_of_scroll:
+            break
+        print(len(link))
+    driver.close()
+    print(len(link))
+=======
         new_height = driver.execute_script("return document.body.scrollHeight")
         if new_height == last_height:
             print('沒有更多文章了')
@@ -82,6 +119,7 @@ def download_post():
     
     driver.close()
     print('post總數', len(link))
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
     with open('link.txt', 'w') as f:
         f.write(str(link))
     return link, hashtag
@@ -96,6 +134,12 @@ input_hashtag = ''
 
 
 def hashtag():
+<<<<<<< HEAD
+    sbaccount = 'novak_goodenough'
+    sbpd = password
+    input_hashtag = 'face_to_face'
+=======
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
     collect_hashtag = []
     c = 0
     rest = 0
@@ -103,12 +147,19 @@ def hashtag():
     result = f.read()
     link = ast.literal_eval(result)
     s = Service(path)
+<<<<<<< HEAD
+    driver = webdriver.Chrome(executable_path=path, options=options)
+    driver.implicitly_wait(3)
+    driver.get('https://www.instagram.com/')
+    time.sleep(5)
+=======
     driver = webdriver.Chrome(service=s, options=options)
     driver.implicitly_wait(3)
     driver.get('https://www.instagram.com/')
     time.sleep(5)
     sbaccount = account[1]
     sbpd = password[0]
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
     driver.find_element(By.NAME, 'username').send_keys(sbaccount)
     driver.find_element(By.NAME, 'password').send_keys(sbpd)
     time.sleep(3)
@@ -119,14 +170,36 @@ def hashtag():
     driver.find_element(By.XPATH, '//*[@id="react-root"]/section/main/div/div/div/section/div/button').click()
     time.sleep(3)
     
+<<<<<<< HEAD
+    for i,url in enumerate(link):
+=======
     for i, url in enumerate(link):
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
         print(i)
         driver.get(f"https://www.instagram.com/{url}")
         soup = BeautifulSoup(driver.page_source, 'html.parser')
         hashtags = soup.find_all('a', class_='xil3i')
         for tag in hashtags:
-            collect_hashtag.append(tag.text)
             print(tag.text)
+<<<<<<< HEAD
+            collect_hashtag.append(tag.text)
+        c += 1
+        rest+=1
+        if c > 10:
+            time.sleep(randint(5, 10))
+            c = 0
+        if rest>100:
+            time.sleep(randint(60,90))
+            rest=0
+    driver.close()
+    print(collect_hashtag)
+    
+    db_company = pymysql.connect(host='db.ptt.cx',
+                                 user='choozmo',
+                                 password='pAssw0rd',
+                                 database='seo')
+    print('開始開始寫進db')
+=======
         c += 1
         rest += 1
         if c > 10:
@@ -139,6 +212,7 @@ def hashtag():
     print(collect_hashtag)
     print('開始寫入db')
     
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
     cur = db_company.cursor()
     query_new_col = f"ALTER TABLE seo.ig_pet_2 ADD COLUMN {input_hashtag} VARCHAR(45) NULL"
     cur.execute(query_new_col)
@@ -153,13 +227,21 @@ def hashtag():
         print(i)
     for i in collect_hashtag:
         i = i.replace('#', '')
+<<<<<<< HEAD
+=======
         print(i, id_number)
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
         query_update = f"UPDATE seo.ig_pet_2 SET {input_hashtag}='{i}' where `id`='{id_number}'"
         cur.execute(query_update)
-        db_company.commit()
         id_number += 1
+<<<<<<< HEAD
+        db_company.commit()
+        print(i,id_number)
+=======
     print('post總數', len(link))
+>>>>>>> 604b4f0737fe7f055de28e84a0a4697a346701cf
     db_company.close()
+    print(len(link))
     return hashtag
 
 

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
ig_tags/link.txt


+ 180 - 0
meta/meta_move.py

@@ -0,0 +1,180 @@
+#import redis
+import time
+import traceback
+#import json
+from selenium import webdriver
+from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
+import time
+import os
+from selenium.webdriver.common.keys import Keys
+from selenium.webdriver.support.ui import WebDriverWait
+from selenium.webdriver.common.by import By
+from selenium.webdriver.support import expected_conditions as EC
+import random
+import time
+import sys
+import codecs
+import random
+import os
+import time
+#import pyautogui
+
+driver=None
+
+def re_get_webdriver():
+    global driver
+    result=[]
+    if driver is not None:
+        print('closing....')
+        driver.quit()
+        os.system('killall chrome')
+        print('quit....')
+        driver=None
+    try:
+#        ua = userAgents()
+
+#        user_agent = ua.random()        
+
+        options = webdriver.ChromeOptions()
+
+
+        mobile_emulation = {
+            "deviceMetrics": { "width": 360, "height": 640, "pixelRatio": 3.0 },
+            "userAgent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19" }
+#        options.add_experimental_option("mobileEmulation", mobile_emulation)
+
+        options.add_argument("--no-sandbox")
+        options.add_argument("--disable-dev-shm-usage")
+        options.add_argument("--headless")
+#        print(user_agent)
+#        options.add_argument("--user-agent=" +user_agent)
+        options.add_argument("--incognito")
+        driver=None
+        try:
+            driver = webdriver.Chrome(options=options)
+        except:
+#            driver.quit()
+#            os.system('pkill -f ')
+            os.system('kill %d' % os.getpid())
+            sys.exit()
+            return
+        driver.set_window_size(1400,1000)
+        return
+    except:
+        import traceback
+        traceback.print_exc()
+        driver=None
+        return None
+
+def run_once(url):
+    global driver
+    i=random.randint(0,7)
+    if i==0 or driver is None:
+        time.sleep(8)
+        re_get_webdriver()
+    if driver is None:
+        return
+    try:
+        driver.get('https://meta.chuzmo.com/HxXfN9r/keelung-cityexpo')
+        time.sleep(12)
+        elmt=driver.find_element_by_xpath("//span[contains(text(),'Join Room')]/..")
+        webdriver.ActionChains(driver).move_to_element(elmt).perform()
+        webdriver.ActionChains(driver).move_to_element(elmt).click().perform()
+        time.sleep(5)
+        elmt=driver.find_element_by_xpath("//Button[contains(text(),'Accept')]")
+        webdriver.ActionChains(driver).move_to_element(elmt).perform()
+        webdriver.ActionChains(driver).move_to_element(elmt).click().perform()
+        time.sleep(5)
+        elmt=driver.find_element_by_xpath("//Button[contains(text(),'Enter Room')]")
+        webdriver.ActionChains(driver).move_to_element(elmt).perform()
+        webdriver.ActionChains(driver).move_to_element(elmt).click().perform()
+        time.sleep(5)
+
+        elmt=driver.find_element_by_xpath("//body")
+        print(elmt)
+        webdriver.ActionChains(driver).move_to_element(elmt).perform()
+        webdriver.ActionChains(driver).move_to_element(elmt).click().perform()
+
+        print('elmt found')
+#        pyautogui.press('tab')
+#        pyautogui.press('tab')
+#        pyautogui.press('enter')
+#        pyautogui.press('enter')
+
+
+
+        i=0
+        elmt=driver.find_element_by_xpath("//body")
+        elmt.send_keys(Keys.ENTER)
+        elmt.send_keys(Keys.ENTER)
+        elmt.send_keys(Keys.ENTER)
+
+        while True:
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+            webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+
+            i=random.randint(0,2)
+            if i==0:
+                webdriver.ActionChains(driver).key_down('q').key_up('q').perform()
+                webdriver.ActionChains(driver).key_down('q').key_up('q').perform()
+            if i==1:
+                webdriver.ActionChains(driver).key_down('e').key_up('e').perform()
+                webdriver.ActionChains(driver).key_down('e').key_up('e').perform()
+            if i==2:
+                webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+                webdriver.ActionChains(driver).key_down('w').key_up('w').perform()
+
+
+
+#            pyautogui.keyDown('w')
+#            time.sleep(0.1)
+#            pyautogui.keyUp('w')
+#            pyautogui.keyDown('a')
+#            time.sleep(0.1)
+#            pyautogui.keyUp('a')
+#            i+=1
+#           i%=10
+#           if i==0:
+#               pyautogui.keyDown('q')
+#                time.sleep(0.1)
+#                pyautogui.keyUp('q')
+#                pyautogui.keyDown('q')
+#                time.sleep(0.1)
+#                pyautogui.keyUp('q')
+
+#        driver.quit()
+        print("DONE!!!!")
+#        driver.execute_script('window.open("'+url+'","_blank");')
+#        driver.execute_script("window.scrollTo(0, window.scrollY + 400)")
+#        time.sleep(0.5)
+    except:
+        traceback.print_exc()
+        print('exception')
+#        time.sleep(9999)
+
+
+lst=[]
+
+
+
+#lst=['https://www.hhh.com.tw/columns/detail/3427/index.php']
+    #for i in range(20):
+while True:
+    l='https://cmm.ai/meta'
+    print(l)
+    try:
+        run_once(l)
+        time.sleep(2)
+        break
+    except:
+        traceback.print_exc()

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio