Mac下批量下载迅雷离线文件-AppleScript

[Update]

2011年6月3日:

添加了反序功能(默认开启),对非BT类批量下载链接进行倒序,功能开关请直接改代码。

代码整理,并增加了一些注释。

下载:ThunderLixian-110603

2011年4月28日:

给AppleScript方法添加了BT类任务支持

新代码请自行打开Service查看,懒得贴上来了..

新Service下载:ThunderLixian-BTSupport

用法:对BT任务点击 “显示BT列表”,之后勾选要下载的文件,然后运行Service。

[NEW]Bookmarklet:

研究了下JavaScript,现学现卖,于是有了个更通用的解决方案

添加书签:

迅雷批量

将上方按钮拖到书签栏

用法:

如图:

已知限制:

  1. Safari和Chrome测试可用,但是Firefox3.6无效,原因不知。
  2. 依然不支持BT类任务,哪天我有下到BT资源可能会解决。

[Old]AppleScript:

创建:

打开Automator,创建一个Service 拖放一个Action “Run AppleScript” 复制下方代码进去,保存。 如图:

或者直接下载文件:ThunderLixian.workflow 解压放到 ~/Library/Services/

使用:

用Safari打开迅雷离线网页,勾选你要下载的文件,然后运行Service

如此,便会自动调用iGetter批量下载了。

局限:

这个Service是随便写来自用的,只达到刚好够用的标准,所以很有局限性:

  1. 所勾选的文件请必须是已下载完成的,而且不支持BT类文件
  2. 调用iGetter下载,要用其它下载工具得自己改代码哦~
  3. 只支持Safari

初版代码:

tell application "Safari"
	if (exists document "迅雷会员-离线下载") then
		set doc to document "迅雷会员-离线下载"
		set src to "var syO = document.getElementsByName('ck');
var syVal = syO.length;
var syList=[];
for(var i=0; i< syVal;i++){
    if(syO[i].checked == true){
    var taskid = syO[i].value;
    var linkId = 'dl_url'+taskid.toString();
    var oneLink = document.getElementById(linkId).value;
    syList.push(oneLink);
    }}
syList;"
		set downList to do JavaScript src in doc

		tell application "iGetter"
			set newDownList to {}
			repeat with i from 1 to number of items in downList
				set this_item to item i of downList
				-- insert actions here
				set newItem to {url:this_item}
				copy newItem to the end of newDownList
			end repeat
			DownloadURL newDownList
		end tell
	end if
end tell

Comments