ProHoster > Blog > Bestjoer > In 16GB torrent downloade fia in tablet mei 4GB frije romte
In 16GB torrent downloade fia in tablet mei 4GB frije romte
In taak:
D'r is in PC sûnder ynternet, mar it is mooglik om it bestân fia USB oer te setten. D'r is in tablet mei it ynternet wêrfan dit bestân oerdroegen wurde kin. Jo kinne de fereaske torrent downloade op jo tablet, mar d'r is net genôch frije romte. De triem yn 'e torrent is ien en grut.
Paad nei oplossing:
Ik begon de torrent om te downloaden. Doe't de frije romte hast fuort wie, haw ik de download ûnderbrutsen. Ik ferbûn de tablet oan 'e PC en ferpleatst de triem fan' e tablet nei de PC. Ik pauze en ta myn ferrassing waard it bestân wer oanmakke en de torrent gie troch mei it downloaden as wie neat bard.
Fanwegen it feit dat de torrent-kliïnt de sparse flagge ynstelt yn it bestân wêryn it de ûntfongen gegevens skriuwt, besiket it systeem net tagelyk 16GB te reservearjen en sil gjin flater foarkomme as jo besykje te skriuwen nei in bestân boppe 4GB.
Nei it werheljen fan de proseduere fjouwer kear, krige ik fjouwer bestannen op myn PC mei ferskate dielen fan deselde torrent. No bliuwt it allinich om se byinoar te setten. De proseduere is yn wêzen ienfâldich. Jo moatte ferfange de nul bytes mei in oare wearde as it bestiet op in opjûne posysje yn ien fan de fjouwer triemmen.
It like my ta dat sa'n ienfâldich programma op it ynternet moat. Hat nimmen ea sa'n probleem tsjinkommen? Mar ik realisearre dat ik net iens wit hokker kaaiwurden ik nei sykje. Dêrom haw ik fluch in Lua-skript makke foar dizze taak en no haw ik it optimalisearre. Dit is wat ik diele wol.
Download de torrent yn dielen
begjinne mei it downloaden fan de torrent op it earste apparaat
wachtsje oant de ROM is fol
pauze de ynlaad
oerdrage de triem nei it twadde apparaat en foegje in nûmer ta oan de triemnamme
wy geane werom nei it earste punt oant it bestân folslein ynladen is
It gearfoegjen fan dielen yn ien bestân
Nei't it lêste diel is ûntfongen, is it nedich om se yn ien hiele bestân te sammeljen.
De taak is ienfâldich:
Alle dielen tagelyk lêze
As yn in part de posysje gjin nul byte is, dan skriuwe wy it nei de útfier, oars skriuwe wy nul
function merge_part akseptearret in array fan triedden streams_in wêrfan lêst in diel fan grutte buffer_length en jout it resultaat fan it gearfoegjen fan dielen út ferskate triedden.
function merge_part(streams_in, buffer_length)
local out_part
for _, stream in ipairs(streams_in) do
local in_part = stream:read(buffer_length)
if not out_part then
out_part = in_part -- просто копируем часть из первого файла
elseif in_part and #in_part > 0 then
if #out_part < #in_part then
out_part, in_part = in_part, out_part
end
if out_part ~= in_part -- данные различаются
and in_part:find("[^ ]") -- есть данные в in_part
and out_part:find(" ", 1, true) -- есть пустые места в out_part
then
local find_index = 1
--[[
function string.gsub is geskikt foar de taak omdat it sil fine stikken fol mei nullen en leverje wat wurdt jûn oan it.
--]]
out_part = out_part:gsub(" +", function(zero_string)
if #in_part < find_index then
return -- не на что менять
end
--[[
string.gsub net oerbringe de posysje dêr't de wedstriid waard fûn. Dêrom sykje wy parallel nei de posysje zero_string mei help fan de funksje string.find. It is genôch om de earste nul byte te finen.
No as yn in_part der is gegevens foar out_part kopiearje harren.
--]]
if #in_part >= start_index then
local end_index = start_index + #zero_string - 1
--[[
Snije út in_part diel oerienkomt mei de folchoarder fan nullen.
--]]
local part = in_part:sub(start_index, end_index)
if (part:byte(1) ~= 0) or part:find("[^ ]") then
--[[
В part der is gegevens.
--]]
if #part == #zero_string then
return part
else
--[[
part die bliken minder te wêzen as in sekwinsje fan nullen. Litte wy it mei har oanfolje.
--]]
return part..zero_string:sub(1, end_index - #in_part)
end
end
end
end)
end
end
end
return out_part
end
konklúzje
Sa koene wy dit bestân downloade en gearstalle op in PC. Nei de fúzje helle ik it torrentbestân út 'e tablet. Ik ynstallearre in torrent client op myn PC en kontrolearre it bestân mei it.
It lêste ynladen diel op 'e tablet kin oerlitten wurde op' e distribúsje, mar jo moatte it opnij kontrolearjen fan 'e dielen foardat dit ynskeakelje en it bestân wiskje, sadat it net opnij downloade.