前言
- 最近想測試 BAT 刷新的機制,特別來用 Applescript 讓 Brave 瀏覽器在晚上睡覺的時候連結網頁、並重新整理,看看 BAT 在什麼條件下會增加得比較快
- 這樣邏輯上應該也算是挖礦 😂 ,順便放在 Web3 | Blockchain 分類下。
- 另外,以前這類型的自動化都用 Sikuli (官網、介紹) 做,但是圖形基礎的程式風險太大,還是純指令比較確實。
步驟
開啟「工序指令編寫程式」
- 可以用 ⌘ + <
space
> 搜尋「工序指令編寫程式」
- 然後貼上以下程式碼並點擊執行按鈕
|
|
以上內容主要的流程是:
- 打開瀏覽器 (我用
Brave Browser
;以「應用程式」(Application) 裡面列的名字為主。) - 打開新分頁:用快捷鍵 ⌘ + T
- 重新整理
5
次,看有沒有機會刷到一次廣告:用快捷鍵 ⌘ + R - 然後在網址列準備輸入:用快捷鍵 ⌘ + L
- 輸入 “
google.com
” - 然後按下 Enter:
key code 36
;關於 key code 清單參考這篇 - 等待
1.5
秒後關閉分頁:用快捷鍵 ⌘ + W
關鍵指令說明
delay
:在執行下一步之前停止的秒數,跟 Python 或 Bash 的sleep
概念相同keystroke
:鍵入按鍵、command down
則是要連同 ⌘ 一起按;也就是按下快捷鍵的意思repeat
:重複執行 n 次,重複的範圍是在看到end repeat
之前key code 36
:按下代碼36
的按鈕,36
代表的是 <Enter
>tell application "Brave Browser" to activate
:打開 Brave Browsertell application "System Events" to tell process "Brave Browser"
:在鍵入快捷鍵時,其實要用到的是system Events
,可以參考這篇。
包成函數、設定 delay 隨機秒數
要測試總不能只開一個網站,等待時間固定也不是好辦法,所以改成:
- 參數化各個
delay
的秒數 - 而且各
delay
秒數會在給定的範圍內隨機取 - 整個流程包成函數,如果要做多個網站就很方便
最後長得像這樣:
|
|
補充說明:
set
…to
…:指派變數,例如set count to 99
,就類似 python 中的count = 99
- 函數:applescript 裡面是用
on
或是to
來宣告函數。上面宣告了openUrl
這個函數來重複前面提到的流程。 (random number from 0.4 to 0.8)
:依據指定的from
到to
之間取隨機值;也就是隨機等待0.4 ~ 0.8
之間某一秒數。
如果之後要新增網站就很簡單啦,只要在最下方新增一行即可:
|
|
Note
- 之後如果有更新版本,就一併推在 Github:https://github.com/ktlast/daily-applescript,底下的
refresh_brave
(之後資料夾結構可能會改來改去,所以先貼 repo link 就好) - 不要用來連本 blog,就算要連也幫我點個廣告 😂
後記
- 目前這樣安排,一輪大約會在
3
分鐘左右,而full_repeat
給定100
,所以初估執行完會需要 5 小時,差不多就晚上睡前執行一下。 - 目前這樣一個晚上連兩個網站,大概會拿到
0.02
BAT,實在不是很划算;不過還不確定到底演算法是不是跟連結過的網站數量有關,所以之後會一直調整策略。
REF
- https://apple.stackexchange.com/questions/36943/how-do-i-automate-a-key-press-in-applescript
- https://stackoverflow.com/questions/60268384/macos-send-keystroke-to-the-active-app-periodically
- https://alvinalexander.com/blog/post/mac-os-x/applescript-simulating-enter-key/
- https://stackoverflow.com/questions/25319491/random-number-from-1-to-variable-in-applescript
- https://eastmanreference.com/complete-list-of-applescript-key-codes
- https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/UseHandlersFunctions.html