1
0
mirror of https://github.com/LDDestroier/CC/ synced 2024-06-16 10:19:57 +00:00

Update tapewrite.lua

This commit is contained in:
LDDestroier 2023-09-30 01:28:10 -04:00 committed by GitHub
parent 87a617669e
commit 91289aa72e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,8 +1,5 @@
local tArg = {...} local tArg = {...}
-- this doesn't work very well, keep it false
local doByteByByte = false
local fileName = tArg[1] local fileName = tArg[1]
local tapeName = tArg[2] local tapeName = tArg[2]
@ -10,57 +7,45 @@ local function getHelp()
print("tapewrite [file / url] [name]") print("tapewrite [file / url] [name]")
end end
assert(fileName, getHelp()) if not fileName then
getHelp()
return
end
local tape = peripheral.find("tape_drive") local tape = peripheral.find("tape_drive")
local file if not tape then
print("Tape drive not connected.")
return
end
local totalSize = tape.getSize()
-- Make file, and detect URL
local file, contents
if fileName:sub(1,8) == "https://" then if fileName:sub(1,8) == "https://" then
print("Downloading...") write("Downloading...")
file = http.get(fileName) file = http.get(fileName, nil, true)
print("Done.")
else else
file = fs.open(fs.combine(shell.dir(), fileName), "r") file = fs.open(fs.combine(shell.dir(), fileName), "r")
end end
contents = file.readAll()
local byte = 0 file.close()
tape.seek(-tape.getPosition())
if tapeName then if tapeName then
tape.setLabel(tapeName) tape.setLabel(tapeName)
end end
local counter = 0
local totalSize = tape.getSize() tape.seek(-tape.getPosition())
if doByteByByte then
while true do
byte = file.read()
if not byte then
break
end
counter = counter + 1
tape.write(byte:byte())
if counter == 4096 then
counter = 0
os.queueEvent("yield")
os.pullEvent("yield")
write(".")
end
end
else
print("Writing...") print("Writing...")
local contents = file.readAll()
if #contents > totalSize then if #contents > totalSize then
contents = contents:sub(1, totalSize) contents = contents:sub(1, totalSize)
print("Tape too small. Audio was written incompletely.") print("Tape too small. Audio was written incompletely.")
end end
tape.write(contents) tape.write(contents)
end
tape.seek(-tape.getPosition()) tape.seek(-tape.getPosition())
file.close()
print("\nIt is written.") print("\nIt is written. (" .. tostring(#contents) .. " bytes)")