mirror of
				https://github.com/LDDestroier/CC/
				synced 2025-11-04 09:23:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			626 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			626 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
--[[
 | 
						|
Super Text Downloader by EldidiStroyrr/LDDestroier
 | 
						|
 | 
						|
The purpose of this program is to have a single
 | 
						|
unified download script for ComputerCraft, as opposed
 | 
						|
to making multiple programs, each able to download from one site.
 | 
						|
 | 
						|
The main aspect to make this script more modular is having
 | 
						|
a table (websiteSyntaxes) to store the website that it downloads
 | 
						|
from, as well as what abbreviation it's called with and the
 | 
						|
syntax of the raw download URL.
 | 
						|
Later updates added special prefixes that act in different ways
 | 
						|
that could not work with the standard syntax.
 | 
						|
 | 
						|
 pastebin get 3PBKGR4k std 
 | 
						|
 std ld std std 
 | 
						|
--]]
 | 
						|
 | 
						|
if type(std) ~= "table" then std = {} end
 | 
						|
 | 
						|
std.channelURLs = { --special URLs for getting a list of files.
 | 
						|
	["STD"] = "https://raw.githubusercontent.com/LDDestroier/STD-GUI/master/list.lua", --stock from github
 | 
						|
	["Discover"] = "https://pastebin.com/raw/9bXfCz6M", --owned by dannysmc95
 | 
						|
	--["OnlineAPPS"] = "https://pastebin.com/raw/g2EnDYLp", --owned by Twijn, but discontinued
 | 
						|
	["STD-Media"] = "https://pastebin.com/raw/3JZHXTGL" --non-program media files
 | 
						|
}
 | 
						|
local goodchan = false
 | 
						|
for k,v in pairs(std.channelURLs) do
 | 
						|
	if std.channel == k then
 | 
						|
		goodchan = true
 | 
						|
		break
 | 
						|
	end
 | 
						|
end
 | 
						|
if not goodchan then
 | 
						|
	std.channel = "STD"
 | 
						|
end
 | 
						|
std.prevChannel = std.channel
 | 
						|
std.std_version = 1.452 -- Number, not string!
 | 
						|
std.stdList = "/."..std.channel:lower().."_list" -- String, path of store listings
 | 
						|
std.websiteList = "/.std_websites" -- String, path of website listings
 | 
						|
local doStore = true -- Boolean, opens up the STD-GUI
 | 
						|
std.serious = true -- why do I do this to myself
 | 
						|
 | 
						|
local logo = {[[
 | 
						|
  __________________________
 | 
						|
 /  ___________ ______ ____ \
 | 
						|
/ /           | |    | |   \ \
 | 
						|
\ \______     | |    | |    | |
 | 
						|
 \______ \    | |    | |    | |
 | 
						|
        \ \   | |    | |    | |
 | 
						|
  ______/ /   | |    | |___/ /
 | 
						|
 /_______/    |_|    |______/
 | 
						|
    Super    Text    Downloader
 | 
						|
 | 
						|
]],[[
 | 
						|
  LLL  LLLLL LLL
 | 
						|
 L   L   L   L  L
 | 
						|
 L       L   L   L
 | 
						|
  LLL    L   L   L
 | 
						|
     L   L   L   L
 | 
						|
 L   L   L   L  L
 | 
						|
  LLL    L   LLL
 | 
						|
 Super Text Downloader]]
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
-- start Base64
 | 
						|
local b = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
 | 
						|
local encode = function(data)
 | 
						|
    return ((data:gsub('.', function(x) 
 | 
						|
        local r,b='',x:byte()
 | 
						|
        for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
 | 
						|
        return r;
 | 
						|
    end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
 | 
						|
        if (#x < 6) then return '' end
 | 
						|
        local c=0
 | 
						|
        for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
 | 
						|
        return b:sub(c+1,c+1)
 | 
						|
    end)..({ '', '==', '=' })[#data%3+1])
 | 
						|
end
 | 
						|
local decode = function(data)
 | 
						|
    data = string.gsub(data, '[^'..b..'=]', '')
 | 
						|
    return (data:gsub('.', function(x)
 | 
						|
        if (x == '=') then return '' end
 | 
						|
        local r,f='',(b:find(x)-1)
 | 
						|
        for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
 | 
						|
        return r;
 | 
						|
    end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
 | 
						|
        if (#x ~= 8) then return '' end
 | 
						|
        local c=0
 | 
						|
        for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
 | 
						|
        return string.char(c)
 | 
						|
    end))
 | 
						|
end
 | 
						|
-- finished Base64
 | 
						|
 | 
						|
local runFile = function(path)
 | 
						|
	if not fs.exists(path) then
 | 
						|
		return false, "No such file!"
 | 
						|
	end
 | 
						|
	local file = fs.open(path,"r")
 | 
						|
	local contents = file.readAll()
 | 
						|
	file.close()
 | 
						|
	local func = loadstring(contents)
 | 
						|
	setfenv(func, getfenv())
 | 
						|
	return func()
 | 
						|
end
 | 
						|
 | 
						|
local function runURL(url, ...)
 | 
						|
	local program = http.get(url)
 | 
						|
	if not program then return false end
 | 
						|
	program = program.readAll()
 | 
						|
	local func = loadstring(program)
 | 
						|
	setfenv(func, getfenv())
 | 
						|
	return func(...)
 | 
						|
end
 | 
						|
 | 
						|
local function seperateMethods(input)
 | 
						|
	local output={}
 | 
						|
	for key,value in pairs(input) do
 | 
						|
		table.insert(output, {key,value})
 | 
						|
	end
 | 
						|
	return output
 | 
						|
end
 | 
						|
 | 
						|
local function displayHelp(mode)
 | 
						|
	if mode == 1 then
 | 
						|
		print("std <abbr> <fileid> [output]")
 | 
						|
		print("Do 'std list' to see all codes")
 | 
						|
		print("Do 'std ld' for a GUI")
 | 
						|
		write("Channel '")
 | 
						|
		if term.isColor() then term.setTextColor(colors.yellow) end
 | 
						|
		write(std.channel)
 | 
						|
		term.setTextColor(colors.white)
 | 
						|
		print("' is selected.")
 | 
						|
	elseif mode == 2 then
 | 
						|
		print("List of website codes:")
 | 
						|
		std.websiteSyntaxes["dd"] = {} --Filler
 | 
						|
		std.websiteSyntaxes["dd64"] = {}
 | 
						|
		std.websiteSyntaxes["PB"] = {}
 | 
						|
		for k,v in pairs(std.websiteSyntaxes) do
 | 
						|
			if term.getTextColor then prevColor = term.getTextColor() else prevColor = colors.white end
 | 
						|
			write(" '")
 | 
						|
			if term.isColor() then term.setTextColor(colors.orange) end
 | 
						|
			write(k)
 | 
						|
			term.setTextColor(prevColor)
 | 
						|
			write("' ")
 | 
						|
			if k == "dd" then
 | 
						|
				print("direct download")
 | 
						|
			elseif k == "dd64" then
 | 
						|
				print("direct download + Base64")
 | 
						|
			elseif k == "PB" then
 | 
						|
				print("pastebin.com (safe)")
 | 
						|
			elseif string.find(v.url,"/") then
 | 
						|
				start = string.find(v.url,"://")+3
 | 
						|
				finish = string.find(v.url,"/",9)-1
 | 
						|
				print(string.sub(v.url,start,finish))
 | 
						|
			end
 | 
						|
		end
 | 
						|
	elseif mode == 3 then
 | 
						|
		print(logo[pocket and 2 or 1])
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
local function choice(input) --A useful function for input. Similar to the MS-DOS 6.0 command.
 | 
						|
	local event, key
 | 
						|
	repeat
 | 
						|
		event, key = os.pullEvent("key")
 | 
						|
		if type(key) == "number" then key = keys.getName(key) end
 | 
						|
		if key == nil then key = " " end
 | 
						|
	until string.find(string.lower(input), string.lower(key))
 | 
						|
	return string.lower(key)
 | 
						|
end
 | 
						|
 | 
						|
--This list of websites is used as a backup, should you not be able to connect to pastebin.
 | 
						|
std.websiteSyntaxes = {
 | 
						|
	pb = {
 | 
						|
		url = "https://pastebin.com/raw.php?i=FILECODE",
 | 
						|
		fullName = "Pastebin",
 | 
						|
		codeLength = 6,
 | 
						|
	},
 | 
						|
	hb = {
 | 
						|
		url = "https://hastebin.com/raw/FILECODE",
 | 
						|
		fullName = "Hastebin",
 | 
						|
		codeLength = 10,
 | 
						|
	},
 | 
						|
	pe = {
 | 
						|
		url = "http://pastie.org/pastes/FILECODE/download",
 | 
						|
		fullName = "Pastie",
 | 
						|
		codeLength = 0,
 | 
						|
	},
 | 
						|
	fn = {
 | 
						|
		url = "https://fnpaste.com/FILECODE/raw",
 | 
						|
		fullName = "fnPaste",
 | 
						|
		codeLength = 4,
 | 
						|
	},
 | 
						|
	gh = {
 | 
						|
		url = "https://raw.githubusercontent.com/FILECODE",
 | 
						|
		fullName = "Github",
 | 
						|
		codeLength = 0,
 | 
						|
	},
 | 
						|
	gg = {
 | 
						|
		url = "https://gist.githubusercontent.com/FILECODE/raw/",
 | 
						|
		fullName = "Github Gist",
 | 
						|
		codeLength = 0,
 | 
						|
	},
 | 
						|
	sn = {
 | 
						|
		url = "http://s.drk.sc/FILECODE",
 | 
						|
		fullName = "Snippt",
 | 
						|
		codeLength = 6,
 | 
						|
	},
 | 
						|
	cp = {
 | 
						|
		url = "http://codepad.org/FILECODE/raw.txt",
 | 
						|
		fullName = "Codepad",
 | 
						|
		codeLength = 8,
 | 
						|
	},
 | 
						|
	id = {
 | 
						|
		url = "https://ideone.com/plain/FILECODE",
 | 
						|
		fullName = "Ideone",
 | 
						|
		codeLength = 6,
 | 
						|
	},
 | 
						|
	db = {
 | 
						|
		url = "https://www.dropbox.com/s/FILECODE?raw=true",
 | 
						|
		fullName = "Dropbox",
 | 
						|
		codeLength = 0,
 | 
						|
	},
 | 
						|
	dd = {
 | 
						|
		url = "FILECODE",
 | 
						|
		fullName = "Direct Download",
 | 
						|
		codeLength = 0,
 | 
						|
	},
 | 
						|
}
 | 
						|
 | 
						|
local tArg = {...}
 | 
						|
if shell then
 | 
						|
	std_file = shell.getRunningProgram()
 | 
						|
else
 | 
						|
	std_file = ""
 | 
						|
end
 | 
						|
 | 
						|
local getTableSize = function(tbl)
 | 
						|
	local amnt = 0
 | 
						|
	for k,v in pairs(tbl) do
 | 
						|
		amnt = amnt + 1
 | 
						|
	end
 | 
						|
	return amnt
 | 
						|
end
 | 
						|
 | 
						|
std.getSTDList = function(prevChannel)
 | 
						|
	local weburl = "http://pastebin.com/raw/FSCzZRUk" --URL of URL list.
 | 
						|
	local storeurl = std.channelURLs[std.channel] --URL of store list.
 | 
						|
	local webcontents = http.get(weburl)
 | 
						|
	local storecontents = http.get(storeurl)
 | 
						|
	if not (webcontents and storecontents) then
 | 
						|
		if shell then
 | 
						|
			print("Couldn't update list!")
 | 
						|
		end
 | 
						|
		return false, "Couldn't update list!"
 | 
						|
	else
 | 
						|
		local uut = runFile(std.stdList)
 | 
						|
		if not uut then std.storeURLs = nil end
 | 
						|
		local beforeSize = getTableSize(std.storeURLs or {})
 | 
						|
		local webprog = webcontents.readAll()
 | 
						|
		local storeprog = storecontents.readAll()
 | 
						|
		local webfile = fs.open(std.websiteList,"w")
 | 
						|
		local storefile = fs.open(std.stdList,"w")
 | 
						|
		webfile.writeLine(webprog)
 | 
						|
		webfile.close()
 | 
						|
		storefile.writeLine(storeprog)
 | 
						|
		storefile.close()
 | 
						|
		runFile(std.websiteList)
 | 
						|
		local outcome = runFile(std.stdList)
 | 
						|
		if outcome == false then
 | 
						|
			std.channel = prevChannel
 | 
						|
			return std.getSTDList("STD")
 | 
						|
		end
 | 
						|
		local afterSize = getTableSize(std.storeURLs or {})
 | 
						|
		return true, "Downloaded to "..std.stdList, afterSize-beforeSize
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
if tArg[1] == "update" or not fs.exists(std.stdList) then
 | 
						|
	local updateChan = tArg[2]
 | 
						|
	if (updateChan) and (not std.channelURLs[updateChan]) and tArg[1] == "update" then
 | 
						|
		printError("No such channel.")
 | 
						|
		for k,v in pairs(std.channelURLs) do
 | 
						|
			term.setTextColor(colors.white)
 | 
						|
			write(" ")
 | 
						|
			if k == std.channel then
 | 
						|
				write("@")
 | 
						|
				if term.isColor() then term.setTextColor(colors.yellow) end
 | 
						|
			else
 | 
						|
				write("O")
 | 
						|
			end
 | 
						|
			print(" "..k)
 | 
						|
		end
 | 
						|
		term.setTextColor(colors.white)
 | 
						|
		return
 | 
						|
	end
 | 
						|
	write("Updating list...")
 | 
						|
	if updateChan and std.channelURLs[updateChan] then
 | 
						|
		std.prevChannel = std.channel
 | 
						|
		std.channel = updateChan
 | 
						|
	end
 | 
						|
	local success,_,diff = std.getSTDList(std.prevChannel)
 | 
						|
	if not success then
 | 
						|
		if std.serious then
 | 
						|
			return printError("FAIL!")
 | 
						|
		else
 | 
						|
			return printError("IT'S NO USE!")
 | 
						|
		end
 | 
						|
	else
 | 
						|
		if std.serious then
 | 
						|
			write("good!")
 | 
						|
			if diff > 0 then
 | 
						|
				print(" (got "..diff.." new store entries)")
 | 
						|
			else
 | 
						|
				write("\n")
 | 
						|
			end
 | 
						|
		else
 | 
						|
			write("excellent!")
 | 
						|
			if diff > 0 then
 | 
						|
				print(" (now you've got "..diff.." more things!)")
 | 
						|
			else
 | 
						|
				write("\n")
 | 
						|
			end
 | 
						|
		end
 | 
						|
		if tArg[1] == "update" then return true end
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
if not shell then return end
 | 
						|
 | 
						|
local websiteCode = tArg[1]
 | 
						|
local fileCode = tArg[2]
 | 
						|
local retrieveName = tArg[3]
 | 
						|
 | 
						|
if (websiteCode == "list") and (not fileCode) then
 | 
						|
	displayHelp(2)
 | 
						|
	return false
 | 
						|
elseif (websiteCode == "you foolish fool") and (not fileCode) then
 | 
						|
	displayHelp(3)
 | 
						|
	return false
 | 
						|
elseif (websiteCode ~= "ld") and (not fileCode) then
 | 
						|
	displayHelp(1)
 | 
						|
	return false
 | 
						|
end
 | 
						|
 | 
						|
local getFile = function(filename,url)
 | 
						|
	if fs.isReadOnly(filename) then
 | 
						|
		return false, "access denied"
 | 
						|
	end
 | 
						|
	local prog
 | 
						|
	if type(url) == "table" then
 | 
						|
		prog = contextualGet(url[1])
 | 
						|
	else
 | 
						|
		prog = http.get(url)
 | 
						|
	end
 | 
						|
	if not prog then
 | 
						|
		return false, "could not connect"
 | 
						|
	end
 | 
						|
	prog = prog.readAll()
 | 
						|
	local fyle = fs.open(filename,"w")
 | 
						|
	fyle.write(prog)
 | 
						|
	fyle.close()
 | 
						|
	return true, fs.getSize(filename)
 | 
						|
end
 | 
						|
 | 
						|
runFile(std.stdList)
 | 
						|
runFile(std.websiteList)
 | 
						|
local pastebinUpload = function(sName,sText)
 | 
						|
    write( "Connecting to pastebin.com... " )
 | 
						|
    local key = "0ec2eb25b6166c0c27a394ae118ad829"
 | 
						|
    local response = http.post(
 | 
						|
        "http://pastebin.com/api/api_post.php", 
 | 
						|
        "api_option=paste&"..
 | 
						|
        "api_dev_key="..key.."&"..
 | 
						|
        "api_paste_format=lua&"..
 | 
						|
        "api_paste_name="..textutils.urlEncode(sName).."&"..
 | 
						|
        "api_paste_code="..textutils.urlEncode(sText)
 | 
						|
    )
 | 
						|
    if response then
 | 
						|
        print( "Success." )
 | 
						|
        local sResponse = response.readAll()
 | 
						|
        response.close()
 | 
						|
        return string.match( sResponse, "[^/]+$" )
 | 
						|
    end
 | 
						|
	return false
 | 
						|
end
 | 
						|
 | 
						|
local fileURL
 | 
						|
if websiteCode == "ld" then
 | 
						|
	if not fileCode then
 | 
						|
		if doStore then
 | 
						|
			runURL("http://pastebin.com/raw/P9dDhQ2m")
 | 
						|
			return
 | 
						|
		else
 | 
						|
			return print("GUI Store has been disabled.")
 | 
						|
		end
 | 
						|
	else
 | 
						|
		if not std.storeURLs then
 | 
						|
			if std.serious then
 | 
						|
				write("Updating list...")
 | 
						|
			else
 | 
						|
				write("just a sec, looking around...")
 | 
						|
			end
 | 
						|
			std.getSTDList()
 | 
						|
		end
 | 
						|
		if not std.storeURLs[fileCode] then
 | 
						|
			if std.serious then
 | 
						|
				return printError("Invalid store code '" .. fileCode .. "'")
 | 
						|
			else
 | 
						|
				return printError("ld code "..fileCode.." is no good!")
 | 
						|
			end
 | 
						|
		else
 | 
						|
			fileURL = tostring(std.storeURLs[fileCode].url)
 | 
						|
		end
 | 
						|
	end
 | 
						|
elseif websiteCode == "PB" then --Hope it's not confusing.
 | 
						|
	fileURL = "https://pastebin.com/"..fileCode:sub(1,8)
 | 
						|
	write("Conntecting to '"..fileURL.."' safely...")
 | 
						|
	local prog = http.get(fileURL)
 | 
						|
	if not prog then
 | 
						|
		return printError("FAIL!")
 | 
						|
	else
 | 
						|
		if term.isColor() then term.setTextColor(colors.green) end
 | 
						|
		print("GOOD!")
 | 
						|
		term.setTextColor(colors.white)
 | 
						|
		local rawget = prog.readAll()
 | 
						|
		local s = string.find(rawget,"<textarea id=\"paste_code\"")+103
 | 
						|
		local e = string.find(rawget,"</textarea>")-1
 | 
						|
		local contents = string.gsub(string.sub(rawget,s,e),""","\"")
 | 
						|
		contents = contents:gsub("<","<")
 | 
						|
		contents = contents:gsub(">",">")
 | 
						|
		if retrieveName and shell then
 | 
						|
			local dlname = fs.combine(shell.dir(),retrieveName)
 | 
						|
			if fs.exists(dlname) then
 | 
						|
				if std.serious then
 | 
						|
					print("'" .. dlname .. "' exists! Overwrite?")
 | 
						|
					write("[Y,N]?")
 | 
						|
				else
 | 
						|
					print("you already got a '"..dlname.."'! sacrifice it?")
 | 
						|
					write("[why,enn]??")
 | 
						|
				end
 | 
						|
				local key = choice("yn")
 | 
						|
				print(string.upper(key))
 | 
						|
				if key == "n" then
 | 
						|
					if std.serious then
 | 
						|
						print("Cancelled.")
 | 
						|
					else
 | 
						|
						print("whatever")
 | 
						|
					end
 | 
						|
					sleep(0)
 | 
						|
					return false
 | 
						|
				end
 | 
						|
			end
 | 
						|
			local file = fs.open(dlname, "w")
 | 
						|
			file.writeLine(contents)
 | 
						|
			file.close()
 | 
						|
			if std.serious then
 | 
						|
				print("Done! DL'd " .. fs.getSize(dlname) .. " bytes.")
 | 
						|
			else
 | 
						|
				print("You've done it! File name is " .. fs.getSize(dlname)*2 .. " nibbles")
 | 
						|
			end
 | 
						|
		else
 | 
						|
			local func = loadstring(contents)
 | 
						|
			setfenv(func, getfenv())
 | 
						|
			func()
 | 
						|
		end
 | 
						|
		sleep(0)
 | 
						|
		return
 | 
						|
	end
 | 
						|
elseif websiteCode == "dd64" then
 | 
						|
	write("Conntecting to '"..fileCode.."'...")
 | 
						|
	local cont = http.get(fileCode)
 | 
						|
	local dlname = fs.combine(shell.dir(),retrieveName)
 | 
						|
	if cont then
 | 
						|
		if term.isColor() then term.setTextColor(colors.green) end
 | 
						|
		print("GOOD!")
 | 
						|
		term.setTextColor(colors.white)
 | 
						|
		cont = decode(cont.readAll())
 | 
						|
		local file = fs.open(dlname,"w")
 | 
						|
		file.write(cont)
 | 
						|
		file.close()
 | 
						|
		if std.serious then
 | 
						|
			print("Done! DL'd " .. fs.getSize(dlname) .. " bytes.")
 | 
						|
		else
 | 
						|
			print("You've done it! File name is " .. fs.getSize(dlname)*2 .. " nibbles")
 | 
						|
		end
 | 
						|
		return true
 | 
						|
	else
 | 
						|
		return printError("FAIL!")
 | 
						|
	end
 | 
						|
elseif websiteCode == "pbupload" then
 | 
						|
	fileCode = fs.combine("",fileCode)
 | 
						|
	if not fs.exists(fileCode) then
 | 
						|
		return printError("NO SUCH FILE!")
 | 
						|
	else
 | 
						|
		local file = fs.open(fileCode,"r")
 | 
						|
		local cont = file.readAll()
 | 
						|
		file.close()
 | 
						|
		local sCode = pastebinUpload(fileCode,cont)
 | 
						|
		if sCode then
 | 
						|
			write("Uploaded with code:")
 | 
						|
			if term.isColor() then term.setTextColor(colors.yellow) end
 | 
						|
			print(sCode)
 | 
						|
			term.setTextColor(colors.white)
 | 
						|
			print("Don't forget it!")
 | 
						|
		else
 | 
						|
			return printError("FAIL!")
 | 
						|
		end
 | 
						|
		return true
 | 
						|
	end
 | 
						|
elseif websiteCode == "pbupload64" then
 | 
						|
	fileCode = fs.combine("",fileCode)
 | 
						|
	if not fs.exists(fileCode) then
 | 
						|
		return printError("NO SUCH FILE!")
 | 
						|
	else
 | 
						|
		local file = fs.open(fileCode,"r")
 | 
						|
		local cont = encode(file.readAll())
 | 
						|
		file.close()
 | 
						|
		local sCode = pastebinUpload(fileCode,cont)
 | 
						|
		if sCode then
 | 
						|
			write("Uploaded with Base64 with code:")
 | 
						|
			if term.isColor() then term.setTextColor(colors.yellow) end
 | 
						|
			print(sCode)
 | 
						|
			term.setTextColor(colors.white)
 | 
						|
			print("Don't forget it!")
 | 
						|
		else
 | 
						|
			return printError("FAIL!")
 | 
						|
		end
 | 
						|
		return true
 | 
						|
	end
 | 
						|
else
 | 
						|
	if not std.websiteSyntaxes[websiteCode] then
 | 
						|
		if std.serious then
 | 
						|
			return printError("Invalid website code '" .. websiteCode .. "'")
 | 
						|
		else
 | 
						|
			return printError("this '"..websiteCode.."' is no good!")
 | 
						|
		end
 | 
						|
	else
 | 
						|
		if (std.websiteSyntaxes[websiteCode].codeLength == 0) or (not std.websiteSyntaxes[websiteCode].codeLength) then
 | 
						|
			fileURL = string.gsub(std.websiteSyntaxes[websiteCode].url, "FILECODE", fileCode)
 | 
						|
		else
 | 
						|
			fileURL = string.gsub(std.websiteSyntaxes[websiteCode].url, "FILECODE", string.sub(fileCode,1,std.websiteSyntaxes[websiteCode].codeLength))
 | 
						|
		end
 | 
						|
	end
 | 
						|
	sleep(0)
 | 
						|
end
 | 
						|
 | 
						|
if std.serious then
 | 
						|
	write("Connecting to '" .. fileURL .. "'...")
 | 
						|
else
 | 
						|
	if math.random(1,2) == 1 then
 | 
						|
		write("getting around to '"..fileURL.."'...")
 | 
						|
	else
 | 
						|
		write("looking at '"..fileURL.."'...")
 | 
						|
	end
 | 
						|
end
 | 
						|
local contents = http.get(fileURL)
 | 
						|
if not contents then
 | 
						|
	if term.isColor() then
 | 
						|
		term.setTextColor(colors.red)
 | 
						|
	end
 | 
						|
	if std.serious then
 | 
						|
		print("NOPE!")
 | 
						|
	else
 | 
						|
		print("NEIN!")
 | 
						|
	end
 | 
						|
	sleep(0)
 | 
						|
	return false
 | 
						|
else
 | 
						|
	if term.getTextColor then
 | 
						|
		prevColor = term.getTextColor()
 | 
						|
	else
 | 
						|
		prevColor = colors.white
 | 
						|
	end
 | 
						|
	if term.isColor() then
 | 
						|
		term.setTextColor(colors.green)
 | 
						|
	end
 | 
						|
	if std.serious then
 | 
						|
		print("good!")
 | 
						|
	else
 | 
						|
		print("tubular!")
 | 
						|
	end
 | 
						|
	term.setTextColor(prevColor)
 | 
						|
	if retrieveName and shell then
 | 
						|
		local dlname = fs.combine(shell.dir(),retrieveName)
 | 
						|
		if fs.exists(dlname) then
 | 
						|
			if std.serious then
 | 
						|
				print("'" .. dlname .. "' exists! Overwrite?")
 | 
						|
				write("[Y,N]?")
 | 
						|
			else
 | 
						|
				print("yoo alreddy got a '"..dlname.."'!! redu eet?")
 | 
						|
				write("[why,enn]??")
 | 
						|
			end
 | 
						|
			local key = choice("yn")
 | 
						|
			print(string.upper(key))
 | 
						|
			if key == "n" then
 | 
						|
				if std.serious then
 | 
						|
					print("Cancelled.")
 | 
						|
				else
 | 
						|
					print("whatever")
 | 
						|
				end
 | 
						|
				sleep(0)
 | 
						|
				return false
 | 
						|
			end
 | 
						|
		end
 | 
						|
		local file = fs.open(dlname, "w")
 | 
						|
		file.writeLine(contents.readAll())
 | 
						|
		file.close()
 | 
						|
		if std.serious then
 | 
						|
			print("Done! DL'd " .. fs.getSize(dlname) .. " bytes.")
 | 
						|
		else
 | 
						|
			print("You've done it! File name is " .. fs.getSize(dlname)*2 .. " nibbles")
 | 
						|
		end
 | 
						|
	else
 | 
						|
		local contents = loadstring(contents.readAll())
 | 
						|
		setfenv(contents, getfenv())
 | 
						|
		contents()
 | 
						|
	end
 | 
						|
	sleep(0)
 | 
						|
	return true
 | 
						|
end
 |