百度雲的離線下載功能比較常用,比如用雲盤在平板上看電視劇,通過雲盤在電腦和平板端中轉漫畫、pdf等
但是百度雲離線下載一直不支持批量操作,在需要離線下載漫畫、連續劇、pdf期刊等資源時,相當費勁,因此自己開發了一個批量離線下載工具
工具使用AutoHotKey實現,原理是模擬用戶的鼠標鍵盤操作自動操作百度雲管家客戶端進行處理
界面如下,先打開百度雲管家並進入文件保存目錄,輸入鏈接並確定即可
工具(包括源碼)下載地址
源碼
; 創建工具窗口
Gui, Font, s12 q5
Gui, Add, Edit, r9 w600 vlinks
Gui, Add, Button,, 確定
Gui, Show, , 百度雲批量離線下載工具v1.0
return
GuiClose:
ExitApp
return
; 用戶點擊確定按鈕後觸發
Button確定:
; 窗口提交,使links變量得到用戶輸入賦值
Gui, Submit, NoHide
; 如果用戶輸入結尾有回車,則刪除(verycd的批量賦值連接末尾帶回車)
if (SubStr(links, 0) = "`n")
links := SubStr(links, 1, StrLen(links)-1)
; 使用回車符分割用戶輸入
linkArr := StrSplit(links, "`n")
; 循環處理下載鏈接
For index, link in linkArr
{
; 判斷百度雲管家窗口是否打開
IfWinExist, 歡迎使用百度雲管家
{
; 激活窗口
WinActivate, 歡迎使用百度雲管家
; 將鼠標移動到離線下載按鈕(如果版本升級後按鈕位置改變,可以自行調整這行代碼座標
Click 530, 117, 0
;獲取鼠標位置的顏色,以判斷離線下載按鈕並沒有被其它子窗口遮擋(被遮擋則按鈕無法點擊,功能無法繼續)
PixelGetColor, currentColor, 530, 117, RGB
if (currentColor = 0xE6F3FC)
{
; 點擊離線下載按鈕
Click 530, 117
; 判斷離線下載任務創建窗口是否出現
WinWait, 新建離線下載任務窗口, , 5
if ErrorLevel
{
MsgBox, ,錯誤, WinWait timed out.
break
}
else
{
WinActivate, 新建離線下載任務窗口
; 單機連接輸入框(版本升級後位置改變可以自行修改鼠標座標)
Click 66, 101
; 將鏈接放到剪貼板
clipboard = %link%
; 模擬鍵盤ctrl+v輸入鏈接,使用剪貼板要比模擬鍵盤輸入鏈接速度快很多
SendInput ^v
; 點擊確定按鈕
Click 479, 254
; 等待雲管家的離線下載列表窗口出現,20意思是等待20秒,如果網速特別慢處理要超過20秒可以自行修改
WinWait, 離線下載任務列表, , 20
if ErrorLevel
{
MsgBox, ,錯誤, WinWait timed out.
break
} else
{
; 關閉離線下載任務列表,繼續處理下一個鏈接
WinActivate, 離線下載任務列表
WinClose, 離線下載任務列表
}
}
}
else
{
MsgBox, , 錯誤, 請打開我的網盤頁面並不要打開子窗口
break
}
} else {
MsgBox, , 錯誤, 請先打開百度雲管家
break
}
}
return
遺留問題
verycd複製到的ed2k連接,中文都是url編碼過的%xx%xx形式,但是百度雲不支持,需要自己手動url解碼,ahk並沒有轉碼功能,dll和com調用等我都不太會,有高手的話可以試着將urlDecode功能用dll或者com實現然後集成進來,如果實現請務必聯繫我,學習一下