Pag-download sa usa ka 16GB nga sapa pinaagi sa usa ka tablet nga adunay 4GB nga libre nga wanang

Pag-download sa usa ka 16GB nga sapa pinaagi sa usa ka tablet nga adunay 4GB nga libre nga wanang

Usa ka buluhaton:

Adunay usa ka PC nga wala ang Internet, apan posible nga ibalhin ang file pinaagi sa USB. Adunay usa ka tablet nga adunay Internet diin kini nga file mahimong mabalhin. Mahimo nimong i-download ang gikinahanglan nga sapa sa imong tablet, apan wala’y igo nga libre nga wanang. Ang file sa torrent usa ug dako.

Paagi sa solusyon:

Gisugdan nako ang torrent sa pag-download. Sa dihang hapit na mawala ang libre nga luna, gihunong nako ang pag-download. Gikonektar nako ang tablet sa PC ug gibalhin ang file gikan sa tablet ngadto sa PC. Mihunong ko ug sa akong katingala ang file nahimo na usab ug ang torrent nagpadayon sa pag-download nga ingon og walay nahitabo.

Tungod sa kamatuoran nga ang kliyente sa torrent nagtakda sa sparse nga bandila sa file diin gisulat niini ang nadawat nga datos, ang sistema dili mosulay sa pagreserba sa 16GB sa usa ka higayon ug ang usa ka sayup dili mahitabo sa pagsulay sa pagsulat sa usa ka file nga labaw sa 4GB.

Human gisubli ang pamaagi sa upat ka beses, nakadawat ako og upat ka mga file sa akong PC nga adunay lain-laing mga bahin sa samang sapa. Karon ang nahabilin mao ang paghiusa kanila. Ang pamaagi mao ang esensya yano. Kinahanglan nimo nga ilisan ang zero bytes sa lain nga kantidad kung kini anaa sa usa ka posisyon sa usa sa upat ka mga file.

Para nako ang ingon ka yano nga programa kinahanglan nga naa sa Internet. Wala pa bay nakasugat sa ingon nga problema? Apan nakaamgo ko nga wala ko kabalo unsa nga mga keyword ang pangitaon niini. Busa, dali kong naghimo ug Lua script para niini nga buluhaton ug karon na-optimize na nako kini. Kini ang gusto nakong ipaambit.

Pag-download sa sapa sa mga bahin

  1. magsugod sa pag-download sa torrent sa unang device
  2. paghulat hangtod mapuno ang ROM
  3. ihunong ang pag-download
  4. ibalhin ang file ngadto sa ikaduhang device ug idugang ang numero sa ngalan sa file
  5. mibalik kami sa unang punto hangtud nga ang file hingpit nga ma-download

Paghiusa sa mga bahin sa usa ka file

Human madawat ang katapusang bahin, gikinahanglan nga kolektahon kini sa usa ka tibuok nga file.

Simple ra ang buluhaton:

  1. Pagbasa sa tanan nga mga bahin sa usa ka higayon
  2. Kung sa usa ka bahin ang posisyon dili usa ka zero byte, nan isulat namon kini sa output, kung dili, isulat namon ang zero

function merge_part modawat ug han-ay sa mga hilo streams_in nga mabasa ang usa ka bahin sa gidak-on buffer_length ug gibalik ang resulta sa paghiusa sa mga bahin gikan sa lainlaing mga hilo.

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 angay alang sa buluhaton tungod kay makit-an ang mga piraso nga puno sa mga sero ug ihatud kung unsa ang gihatag niini.

--]]
                out_part = out_part:gsub(" +", function(zero_string)

                    if #in_part < find_index then
                        return -- не на что менять
                    end
--[[

string.gsub wala magpasabot sa posisyon diin ang duwa nakit-an. Busa, naghimo kami usa ka parallel nga pagpangita alang sa posisyon zero_string gamit ang function string.find. Igo na ang pagpangita sa unang zero byte.

--]]
                    local start_index = out_part:find(" ", find_index, true)
                    find_index = start_index + #zero_string

--[[

Karon kon sa in_part naay data para out_part kopyaha sila.

--]]
                    if #in_part >= start_index then
                        local end_index = start_index + #zero_string - 1
--[[

Giputol gikan sa in_part bahin nga katumbas sa pagkasunod-sunod sa mga sero.

--]]
                        local part = in_part:sub(start_index, end_index)

                        if (part:byte(1) ~= 0) or part:find("[^ ]") then
--[[

В part adunay data.

--]]
                            if #part == #zero_string then
                                return part
                            else
--[[

part nahimo nga ubos pa sa usa ka han-ay sa mga sero. Atong dugangan kini uban kanila.

--]]
                                return part..zero_string:sub(1, end_index - #in_part)
                            end
                        end
                    end
                end)
            end
        end
    end
    return out_part
end

konklusyon

Sa ingon, nakahimo kami sa pag-download ug pag-assemble niini nga file sa usa ka PC. Pagkahuman sa paghiusa, gikuha nako ang torrent file gikan sa tablet. Nag-install ko og torrent client sa akong PC ug gisusi ang file niini.

Ang katapusan nga na-download nga bahin sa tablet mahimong ibilin sa pag-apod-apod, apan kinahanglan nimo nga hatagan pag-usab ang pagsusi sa mga bahin sa wala pa kini ug i-uncheck ang file aron dili kini ma-download pag-usab.

Gigamit:

  1. Flud torrent nga kliyente sa usa ka tablet.
  2. Torrent nga kliyente qBittorent sa PC.
  3. Lua script

Source: www.habr.com

Idugang sa usa ka comment