Advertisement
Guest User

Untitled

a guest
Jul 14th, 2012
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. --[[ Setup Vars ]]--
  3.  
  4. timeUrl = "http://www.8bittrip.comli.com/time.php"
  5. splitOn = ":"
  6.  
  7. --[[ Sides for hour/minute connected to terminal ]]--
  8. hourSide = "left"
  9. minSide = "back"
  10.  
  11. --[[ Set your colours here ]]--
  12. tl = colors.lime
  13. t = colors.lightBlue
  14. tr = colors.black
  15. m = colors.orange
  16. bl = colors.red
  17. b = colors.white
  18. br = colors.pink
  19.  
  20. tl2 = colors.lightGray
  21. t2 = colors.gray
  22. tr2 = colors.green
  23. m2 = colors.blue
  24. bl2 = colors.brown
  25. b2 = colors.cyan
  26. br2 = colors.yellow
  27.  
  28. --[[ End Vars Setup ]]--
  29.  
  30. --[[ Code below here should not be altered ]]--
  31. wordHE = tl + tr + m + bl + br + tl2 + t2 + m2 + bl2 + b2
  32. wordLO = tl + bl + b + tl2 + t2 + tr2 + bl2 + b2 + br2
  33. wordSY = tl + t + m + br + b + tl2 + m2 + tr2 + br2 + b2
  34. wordNC = tl + bl + t + tr + br + bl2 + t2 + tl2 + b2
  35.  
  36.  
  37. --[[ Standard function to split strings ]]--
  38.  
  39. function split(str, pat)
  40. local t = {} -- NOTE: use {n = 0} in Lua-5.0
  41. local fpat = "(.-)" .. pat
  42. local last_end = 1
  43. local s, e, cap = str:find(fpat, 1)
  44. while s do
  45. if s ~= 1 or cap ~= "" then
  46. table.insert(t,cap)
  47. end
  48. last_end = e+1
  49. s, e, cap = str:find(fpat, last_end)
  50. end
  51. if last_end <= #str then
  52. cap = str:sub(last_end)
  53. table.insert(t, cap)
  54. end
  55. return t
  56. end
  57.  
  58. --[[ Standard function (slightly modified) to get URL by Espen ]]--
  59.  
  60. function httpPullCheck(urlArg, fileArg)
  61.  
  62.  
  63. --[[
  64. HttpTest by Espen v1.3
  65. An example code to show how to use the ComputerCraft HTTP functions.
  66.  
  67. Thanks to Advert for making me aware of the redundant call to http.get after http.request!
  68. --]]
  69.  
  70. --[[ Setting up variables ]]
  71. local fileWriteOK
  72. local url = false
  73. local filename = false
  74.  
  75. local function getHttpBody( url )
  76. http.request( url )
  77.  
  78. while true do
  79. local event, urle, hBody = os.pullEvent()
  80. if event == "http_success" then
  81. print( "HTTP SUCCESS\nURL " )
  82. return hBody
  83. else
  84.  
  85. print( "HTTP FAILURE\nURL , retry in 1min" ) -- If the error is not catched, this will exit the program.
  86. return nil -- In case this function is called via pcall.
  87. end
  88. end
  89. end
  90.  
  91. local function processHttpBody( hBody, filename )
  92. local hFile
  93.  
  94. if hBody then
  95. local body = hBody.readAll() -- Read the whole body.
  96. hFile = io.open( filename, "w" ) -- Open the provided filename for writing.
  97. hFile:write( body ) -- Write the body to the file.
  98. hFile:close() -- Save the changes and close the file.
  99. hBody.close() -- Do not know for sure if this is really necessary, but just in case.
  100. else
  101. print( "Sorry, no body to process." )
  102. end
  103.  
  104.  
  105. end
  106.  
  107. local function checkOverwrite( filename )
  108. term.setCursorBlink( false )
  109. print("\nWarning: File already exists. Overwrite? (Y/N)")
  110.  
  111. while true do
  112. event, choice = os.pullEvent( "char" ) -- Only listen for "char" events.
  113. if string.lower( choice ) == "y" then return true end
  114. if string.lower( choice ) == "n" then return false end
  115. end
  116. end
  117.  
  118. local function printUsage()
  119. print("Usage:")
  120. print("httptest <URL> <OUTPUT-FILENAME>")
  121. print("Example:")
  122. print("httptest http://www.google.com/ webout")
  123. print("\nThe response body will then be output into the file 'webout', line for line.")
  124. end
  125.  
  126.  
  127. --[[ ===== Execution Entry ===== ]]
  128.  
  129.  
  130. --[[ Processing arguments ]]
  131. if urlArg then url = urlArg end
  132. if fileArg then filename = fileArg end
  133.  
  134. --[[ Making sure all necessary arguments were provided by the user ]]
  135. if not url or not filename then
  136. printUsage()
  137. --elseif not fs.exists( filename ) or checkOverwrite( filename ) then
  138. else
  139. processHttpBody( getHttpBody( url ), filename ) --If getHttpBody successfully returns a body, we continue with processing the body and saving it to a file.
  140.  
  141. end
  142.  
  143. end
  144.  
  145. function setDoubleDigits(outputSide, digitsTotal)
  146.  
  147.  
  148. if digitsTotal < 10 then
  149. leftDigit = 0
  150. else
  151. leftDigit = math.floor(digitsTotal/10)
  152. end
  153.  
  154.  
  155. if digitsTotal == 0 then
  156. rightDigit = 0
  157. else
  158. rightDigit = digitsTotal%10
  159. end
  160.  
  161.  
  162. --setDigits
  163. rs.setBundledOutput(outputSide, leftMixes[leftDigit] + rightMixes[rightDigit])
  164. end
  165.  
  166. --[[ Mixes of colours to get digits ]]--
  167.  
  168. rightMixes = { }
  169. rightMixes[0] = tl2 + t2 + tr2 + bl2 + b2 + br2
  170. rightMixes[1] = tr2 + br2
  171. rightMixes[2] = t2 + tr2 + m2 + bl2 + b2
  172. rightMixes[3] = t2 + tr2 + m2 + br2 + b2
  173. rightMixes[4] = tl2 + tr2 + m2 + br2
  174. rightMixes[5] = t2 + tl2 + m2 + br2 + b2
  175. rightMixes[6] = t2 + tl2 + m2 + br2 + bl2 + b2
  176. rightMixes[7] = t2 + tr2 + br2
  177. rightMixes[8] = t2 + tl2 + tr2 + m2 + br2 + bl2 + b2
  178. rightMixes[9] = t2 + tl2 + tr2 + m2 + br2 + b2
  179.  
  180. leftMixes = { }
  181. leftMixes[0] = tl + t + tr + bl + b + br
  182. leftMixes[1] = tr + br
  183. leftMixes[2] = t + tr + m + bl + b
  184. leftMixes[3] = t + tr + m + br + b
  185. leftMixes[4] = tl + tr + m + br
  186. leftMixes[5] = t + tl + m + br + b
  187. leftMixes[6] = t + tl + m + br + bl + b
  188. leftMixes[7] = t + tr + br
  189. leftMixes[8] = t + tl + tr + m + br + bl + b
  190. leftMixes[9] = t + tl + tr + m + br + b
  191.  
  192. --[[ Program starts here ]]--
  193.  
  194. firstRun = true
  195. lastSync = 0
  196. splitTime = { }
  197.  
  198. --[[ Display "HELO" and delay to ready HTTP API ]]--
  199.  
  200. print("System sync prep...")
  201. rs.setBundledOutput(hourSide, wordHE)
  202. rs.setBundledOutput(minSide, wordLO)
  203. sleep(10.0)
  204.  
  205. --[[ Loop runs once every 60 secs, time updates once every hour ]]--
  206.  
  207. while true do
  208.  
  209. --[[ Sync time every 60min/first run ]]--
  210.  
  211. if firstRun or lastSync >= 60 then
  212.  
  213. rs.setBundledOutput(hourSide, wordSY)
  214. rs.setBundledOutput(minSide, wordNC)
  215.  
  216. sleep(10.0)
  217. httpPullCheck(timeUrl,"time")
  218.  
  219. if fs.exists( "time" ) then
  220.  
  221. h = fs.open("time","r")
  222.  
  223. newTime = h.readLine()
  224.  
  225. h:close()
  226.  
  227. lastSync = 0
  228. firstRun = false
  229.  
  230. end
  231.  
  232. end
  233.  
  234. --[[ Check that newTime exists, else print 00:00 ]]--
  235.  
  236. print(newTime)
  237. if lastSync == 0 and newTime then
  238. splitTime = split(newTime, splitOn)
  239. splitTime[1] = tonumber(splitTime[1])
  240. splitTime[2] = tonumber(splitTime[2]) -1
  241. elseif not newTime then
  242. splitTime[1] = 0
  243. splitTime[2] = -1
  244. end
  245.  
  246. --[[ Increase minute by 1 ]]--
  247.  
  248. splitTime[2] = splitTime[2] + 1
  249.  
  250. --[ Increase hour if needed ]--
  251.  
  252. if splitTime[2] >= 60 then
  253. splitTime[2] = 0
  254. if splitTime[1] == 23 then
  255. splitTime[1] = 0
  256. else
  257. splitTime[1] = splitTime[1] + 1
  258. end
  259. end
  260.  
  261.  
  262. --[[ Print time check and run digit set functions ]]--
  263.  
  264. print("Updating time to: "..splitTime[1]..":"..splitTime[2])
  265.  
  266. --Begin set hour
  267. setDoubleDigits(hourSide, splitTime[1])
  268.  
  269. --Begin set minute
  270. setDoubleDigits(minSide, splitTime[2])
  271.  
  272. print("Time set, last sync "..lastSync.."min ago.")
  273.  
  274. --[[ Sleep for 1min before running again ]]--
  275. os.sleep(60.0)
  276. lastSync = lastSync + 1
  277.  
  278. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement