JPiolho

[Minecraft][CC] Download File

Mar 1st, 2012
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.69 KB | None | 0 0
  1. -- DownloadFile
  2. -- Version 1.0
  3. -- By JPiolho
  4. -- Feel free to copy and edit as long you credit the original author
  5. -- More Info @ http://bit.ly/zoxn6V
  6.  
  7. local function AdviseUsage()
  8.  print("Usage: downloadfile <provider> [code] <target>")
  9. end
  10.  
  11. local function ErrorDownloading()
  12.  print("There was an error while downloading! Aborting")
  13. end
  14.  
  15. local tArgs = {...}
  16. if #tArgs == 0 then
  17.  AdviseUsage()
  18.  return
  19. end
  20.  
  21. local provider = tArgs[1]
  22. local code, target
  23.  
  24. if provider == "ideone" or provider == "pastebin" or provider == "tinypaste" or provider == "codepad" or provider == "pastebay" then
  25.  if #tArgs ~= 3 then
  26.   AdviseUsage()
  27.   return
  28.  end
  29.  
  30.  code = tArgs[2]
  31.  target = tArgs[3]
  32. else
  33.  target = tArgs[2]
  34. end
  35.  
  36.  
  37. if fs.exists(target) then
  38.  -- Dont allow folders
  39.  if fs.isDir(target) then
  40.   print("A folder with that name already exists")
  41.   return
  42.  end
  43.  
  44.  -- Dont allow readonlys
  45.  if fs.isReadOnly(target) then
  46.   print("You cannot write to the target file")
  47.   return
  48.  end
  49.  
  50.  print("That file already exists. Overwrite? (y/n)")
  51.  local answer = read()
  52.  
  53.  if answer ~= "y" then
  54.   return
  55.  end
  56. end
  57.  
  58.  
  59.  
  60. local finalData = ""
  61.  
  62. if provider == "ideone" then
  63.  local r = http.get("http://ideone.com/plain/" .. code)
  64.  if r == nil then ErrorDownloading() return end
  65.  
  66.  finalData = r:readAll()
  67.  
  68. elseif provider == "pastebin" then
  69.  local r = http.get("http://pastebin.com/raw.php?i=" .. code)
  70.  if r == nil then ErrorDownloading() return end
  71.  
  72.  finalData = r:readAll()
  73. elseif provider == "pastebay" then
  74.  local r = http.get("http://www.pastebay.net/pastebay.php?dl=" .. code)
  75.  if r == nil then ErrorDownloading() return end
  76.  
  77.  finalData = r:readAll()
  78. elseif provider == "codepad" then
  79.  local r = http.get("http://codepad.org/" .. code .. "/raw.")
  80.  if r == nil then ErrorDownloading() return end
  81.  
  82.  finalData = r:readAll()
  83.  
  84. elseif provider == "tinypaste" then
  85.  local r = http.get("http://tinypaste.com/api/get.xml?id=" .. code)
  86.  if r == nil then ErrorDownloading() return end
  87.  
  88.  local xml = r:readAll()
  89.  local m = string.gmatch(xml,"<result>.*<paste>(.*)</paste>.*</result>")
  90.  
  91.  for result in m do
  92.     finalData = finalData .. result
  93.  end
  94.  
  95.  finalData = string.gsub(finalData,"&#13;","")
  96.  
  97.  finalData = string.gsub(finalData,"&amp;","&")
  98.  finalData = string.gsub(finalData,"&lt;","<")
  99.  finalData = string.gsub(finalData,"&gt;",">")
  100.  finalData = string.gsub(finalData,"&quot;","\"")
  101.  finalData = string.gsub(finalData,"&apos;","'")
  102.  
  103. else
  104.  local r = http.get(provider)
  105.  if r == nil then ErrorDownloading() return end
  106.  
  107.  finalData = r:readAll()
  108. end
  109.  
  110.  
  111. if fs.exists(target) then
  112.  fs.delete(target)
  113. end
  114.  
  115. local f = io.open(target,"w")
  116. f:write(finalData)
  117. f:close()
  118.  
  119. print("File downloaded")
Add Comment
Please, Sign In to add comment