دنده:
د انټرنیټ پرته کمپیوټر شتون لري، مګر دا ممکنه ده چې فایل د USB له لارې لیږدول شي. د انټرنیټ سره یو ټابلیټ شتون لري چې له هغې څخه دا فایل لیږدول کیدی شي. تاسو کولی شئ په خپل ټابلیټ کې اړین تورینټ ډاونلوډ کړئ ، مګر کافي وړیا ځای شتون نلري. په تورینټ کې فایل یو او لوی دی.
د حل لاره:
ما د ډاونلوډ کولو لپاره تورینټ پیل کړ. کله چې وړیا ځای تقریبا ورک شو، ما ډاونلوډ ودراوه. ما ټابلیټ له کمپیوټر سره وصل کړ او فایل مې له ټابلیټ څخه کمپیوټر ته واستاوه. ما ودراوه او زما د حیرانتیا لپاره فایل بیا رامینځته شو او تورینټ ډاونلوډ ته دوام ورکړ لکه څنګه چې هیڅ پیښ شوي ندي.
د دې حقیقت له امله چې د تورینټ پیرودونکي فایل ته سپارس بیرغ ټاکي په کوم کې چې دا ترلاسه شوي ډاټا لیکي ، سیسټم هڅه نه کوي په یوځل کې د 16GB ذخیره کړي او د 4GB څخه هاخوا فایل ته د لیکلو هڅه کولو پرمهال به کومه تېروتنه ونه شي.
د کړنلارې څلور ځله تکرارولو وروسته، ما په خپل کمپیوټر کې څلور فایلونه ترلاسه کړل چې د ورته مشعل مختلف برخې لري. اوس ټول هغه څه چې پاتې دي د دوی یوځای کول دي. کړنلاره په اصل کې ساده ده. تاسو اړتیا لرئ د صفر بایټس د بل ارزښت سره ځای په ځای کړئ که چیرې دا په څلورو فایلونو کې په یوه ورکړل شوي موقعیت کې شتون ولري.
داسې ښکاري چې داسې یو ساده پروګرام باید په انټرنیټ کې وي. ایا هیڅوک هیڅکله له داسې ستونزې سره مخ شوي ندي؟ مګر ما پوهیده چې زه حتی نه پوهیږم چې د دې لپاره کوم کلیدي کلمې وپلټئ. له همدې امله، ما په چټکۍ سره د دې کار لپاره لوا سکریپټ جوړ کړ او اوس ما دا غوره کړی دی. دا هغه څه دي چې زه یې شریکول غواړم.
په برخو کې د تورینټ ډاونلوډ کول
- په لومړي وسیله کې د تورینټ ډاونلوډ پیل کړئ
- انتظار وکړئ تر هغه چې ROM ډک شي
- کښته کول بند کړئ
- فایل دوهم وسیله ته انتقال کړئ او د فایل نوم ته شمیره اضافه کړئ
- موږ بیرته لومړي ټکي ته راځو تر هغه چې فایل په بشپړ ډول ډاونلوډ شوی نه وي
برخې په یوه فایل کې یوځای کول
وروسته له دې چې وروستۍ برخه ترلاسه شوه، دا اړینه ده چې دوی په یوه ټول فایل کې راټول کړئ.
دنده ساده ده:
- په یو وخت کې ټولې برخې لوستل
- که په کومه برخه کې موقعیت صفر بایټ نه وي، نو موږ دا په محصول کې لیکو، که نه نو موږ صفر لیکو.
دنده merge_part
د تارونو لړۍ مني streams_in
چې د اندازې یوه برخه لوستل کیږي buffer_length
او د مختلفو تارونو څخه د برخو یوځای کولو پایله بیرته راګرځوي.
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
--[[
دنده string.gsub
د کار لپاره مناسب دی ځکه چې دا به د صفر څخه ډکې ټوټې ومومي او هغه څه وړاندې کړي چې ورته ورکړل شوي.
--]]
out_part = out_part:gsub(" +", function(zero_string)
if #in_part < find_index then
return -- не на что менять
end
--[[
string.gsub
هغه موقعیت نه بیانوي چې په کوم ځای کې لوبه وموندل شوه. له همدې امله، موږ د موقف لپاره موازي لټون کوو zero_string
د فنکشن په کارولو سره string.find
. دا د لومړي صفر بایټ موندلو لپاره کافی دی.
--]]
local start_index = out_part:find(" ", find_index, true)
find_index = start_index + #zero_string
--[[
اوس که دننه in_part
لپاره معلومات شتون لري out_part
کاپي يې کړئ.
--]]
if #in_part >= start_index then
local end_index = start_index + #zero_string - 1
--[[
څخه پرې کول in_part
برخه د صفرونو د ترتیب سره مطابقت لري.
--]]
local part = in_part:sub(start_index, end_index)
if (part:byte(1) ~= 0) or part:find("[^ ]") then
--[[
В part
معلومات شتون لري.
--]]
if #part == #zero_string then
return part
else
--[[
part
د صفرونو له ترتیب څخه لږ و. راځئ چې دا د دوی سره ضمیمه کړو.
--]]
return part..zero_string:sub(1, end_index - #in_part)
end
end
end
end)
end
end
end
return out_part
end
پایلې
پدې توګه ، موږ وکولی شو دا فایل په کمپیوټر کې ډاونلوډ او راټول کړو. د ادغام وروسته ، ما د ټابلیټ څخه د تورینټ فایل را ایستل. ما په خپل کمپیوټر کې د مشعل پیرودونکی نصب کړ او فایل یې ورسره چیک کړ.
په ټابلیټ کې وروستی ډاونلوډ شوی برخه په توزیع کې پاتې کیدی شي ، مګر تاسو اړتیا لرئ مخکې له دې د برخو بیا چیک کول فعال کړئ او فایل غیر چیک کړئ ترڅو دا بیا ډاونلوډ نشي.
کارول شوي:
- په ټابلیټ کې د فلډ مشعل پیرودونکي.
- په کمپیوټر کې د تورینټ پیرودونکي qBittorent.
لوا سکریپټ
سرچینه: www.habr.com