' Firefox Download Challenge (Script BASIC Version) by JRS.
INCLUDE curl.bas
FUNCTION EXTRACT(base, mask)
UNDEF MATCH
start = 1
match_idx = 2
SPLITA mask BY "*" TO patterns
FOR idx = 0 TO UBOUND(patterns) STEP 2
MATCH[match_idx, 1] = INSTR(base, patterns[idx], start)
start = MATCH[match_idx, 1]
MATCH[match_idx, 2] = INSTR(base, patterns[idx + 1], start)
start = MATCH[match_idx, 2]
MATCH[match_idx, 1] = MATCH[match_idx, 1] + LEN(patterns[idx])
MATCH[match_idx, 2] = MATCH[match_idx, 2] - MATCH[match_idx, 1]
MATCH[match_idx, 0] = MID(base, MATCH[match_idx, 1], MATCH[match_idx, 2])
match_idx += 2
NEXT
EXTRACT = UBOUND(patterns) + 1 / 2
END FUNCTION
ch = curl::curl_init()
curl::curl_option(ch,"URL","https://www.mozilla.org/en-US/firefox/new/")
wp = curl::curl_perform(ch)
IF EXTRACT(wp, """*data-latest-firefox="*" data-esr-versions*<div id="other-platforms">*<li class="os_win64">*<a href="*"
class*""") THEN
PRINT "Downloading Latest 64Bit Firefox (",MATCH[2, 0],") for Windows.\n"
curl::curl_option(ch,"FOLLOWLOCATION", 1)
curl::curl_option(ch,"NOPROGRESS",0)
curl::curl_option(ch,"FILE","Firefox_Setup-" & MATCH[2, 0] & ".exe")
curl::curl_option(ch,"URL", MATCH[6, 0])
curl::curl_perform(ch)
PRINTNL
PRINT "Firefox_Setup-" & MATCH[2, 0] & ".exe Downloaded ",FORMAT("%~##,###,###~ Bytes",curl::curl_info(ch,"SIZE_DOWNLOAD")), _
" at ",FORMAT("%~##,###,###~ Bytes/Second",curl::curl_info(ch,"SPEED_DOWNLOAD")),".\n"
ELSE
PRINT "<< ERROR >>\n"
END IF
curl::curl_finish(ch)