------------------------------------------------------------------------------
--» HANDLERS
------------------------------------------------------------------------------
on FINDER_DATE() # Example: 2010.11.12_04.06.58
return do shell script "date \"+%Y.%m.%d_%H.%M.%S\""
end FINDER_DATE
------------------------------------------------------------------------------
on progressiveDownload(_referer, _linkList, _destination)
tell application "Progressive Downloader"
activate
repeat with i in _linkList
set _task to make new task
tell _task
set address to i
set referer to _referer
set destination to _destination
end tell
end repeat
if (count of tasks) > 0 then
# resume every task
else
error "No Tasks in Progressive Downloader!"
end if
end tell
end progressiveDownload
------------------------------------------------------------------------------
on safari_links(regexStr, tagName, tagType)
set js to "function in_array (array, item) {
for (var i=0; i < array.length; i++) {
if ( array[i] == item ) {
return true;}}
return false;}
var a_tags = document.getElementsByTagName('" & tagName & "');
var href_array = new Array();
var reg = new RegExp(/" & regexStr & "/i);
for (var i=0; i < a_tags.length; i++) {
var href = "" style="font: 14.0px Verdana; color: #000000"> & tagType & ";
if ( reg.test(href)) {
if ( !in_array(href_array, href)) {
href_array.push(href);}}}
href_array;"
try
tell application "Safari" to set linkList to do _javascript_ js in document 1
on error
set linkList to {}
end try
return linkList
end safari_links
------------------------------------------------------------------------------
--» MAIN
------------------------------------------------------------------------------
try
set destFldr to "" & (path to desktop) & "PD_Downloads_" & FINDER_DATE()
set destFldr to POSIX path of destFldr
set regexStr to "download"
tell application "Safari" to set pageURL to URL of front document
pageURL # Errors if url is missing value.
set linkList to safari_links(regexStr, "*", "href")
if linkList ≠ {} then
progressiveDownload(pageURL, linkList, destFldr)
end if
on error eMsg number eNum
set {c, s} to {return, "------------------------------------------"}
set e to s & c & "Error: " & eMsg & c & s & c & "Error Number: " & eNum & c & s
beep
display dialog e
end try
------------------------------------------------------------------------------