16 GB-ko torrent bat deskargatzea 4 GB-ko espazio librea duen tablet baten bidez

16 GB-ko torrent bat deskargatzea 4 GB-ko espazio librea duen tablet baten bidez

Helburua:

Internet gabe ordenagailu bat dago, baina fitxategia USB bidez transferitzeko aukera dago. Internet duen tablet bat dago eta bertatik fitxategi hau transferi daiteke. Beharrezko torrent-a deskarga dezakezu zure tabletan, baina ez dago leku libre nahikorik. Torrenteko fitxategia bat eta handia da.

Konponbiderako bidea:

Deskargatzeko torrent-a hasi nuen. Espazio librea ia desagertu zenean, deskarga eten nuen. Tableta ordenagailura konektatu eta fitxategia tabletetik ordenagailura eraman nuen. Pausa egin nuen eta nire harridurarako fitxategia berriro sortu zen eta torrenteak deskargatzen jarraitu zuen ezer gertatu ez balitz bezala.

Izan ere, torrent bezeroak jasotako datuak idazten dituen fitxategian bandera hutsa ezartzen duelako, sistema ez da 16GB aldi berean erreserbatzen saiatzen eta ez da errorerik gertatuko 4GB baino gehiagoko fitxategi batean idazten saiatzean.

Prozedura lau aldiz errepikatu ondoren, torrent bereko zati desberdinak dituzten lau fitxategi jaso ditut nire ordenagailuan. Orain, horiek bateratzea besterik ez da geratzen. Prozedura funtsean erraza da. Zero byteak beste balio batekin ordezkatu behar dituzu lau fitxategietako batean posizio jakin batean badago.

Halako programa sinple batek Interneten egon beharko lukeela iruditu zitzaidan. Inork ez al du inoiz horrelako arazorik topatu? Baina konturatu nintzen ez dakidala zein gako-hitz bilatu ere. Horregatik, azkar sortu nuen Lua script bat zeregin honetarako eta orain optimizatu dut. Hau da partekatu nahi dudana.

Torrent-a zatika deskargatzen

  1. hasi torrent-a deskargatzen lehen gailuan
  2. itxaron ROMa bete arte
  3. pausatu deskarga
  4. transferitu fitxategia bigarren gailura eta gehitu zenbaki bat fitxategiaren izenari
  5. lehen puntura itzuliko gara fitxategia guztiz deskargatu arte

Atalak fitxategi batean bateratzea

Azken zatia jaso ondoren, fitxategi oso batean biltzea beharrezkoa da.

Zeregin erraza da:

  1. Zati guztiak batera irakurtzea
  2. Zati batean posizioa zero byte bat ez bada, irteeran idazten dugu, bestela zero idazten dugu

Funtzioa merge_part hari sorta bat onartzen du streams_in horietatik tamainaren zati bat irakurtzen du buffer_length eta hainbat haritako piezak batzearen emaitza itzultzen du.

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
--[[

Funtzioa string.gsub zereginerako egokia da, zeroz betetako piezak aurkituko dituelako eta ematen zaiona entregatuko duelako.

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

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

string.gsub ez du adierazten partida zein posiziotan aurkitu den. Horregatik, posizioaren bilaketa paraleloa egiten dugu zero_string funtzioa erabiliz string.find. Nahikoa da lehen zero byte aurkitzea.

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

--[[

Orain sartzen bada in_part horretarako datuak daude out_part kopiatu.

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

Moztu in_part zeroen segidari dagokion zatia.

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

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

В part datuak daude.

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

part zero-segida bat baino txikiagoa izan da. Osa dezagun haiekin.

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

Ondorioa

Horrela, fitxategi hau PC batean deskargatu eta muntatu ahal izan dugu. Fusioaren ostean, tabletetik torrent fitxategia atera nuen. Nire ordenagailuan torrent bezero bat instalatu nuen eta fitxategia egiaztatu nuen.

Tabletan deskargatutako azken zatia banaketan utz daiteke, baina hau baino lehen zatiak berriro egiaztatzea gaitu eta fitxategia desmarkatu behar duzu berriro deskargatu ez dadin.

Erabilia:

  1. Flud torrent bezeroa tablet batean.
  2. Torrent bezeroa qBittorent ordenagailuan.
  3. Lua gidoia

Iturria: www.habr.com

Gehitu iruzkin berria