Ilanda i-torrent engu-16GB ngethebhulethi ene-4GB yesikhala samahhala

Ilanda i-torrent engu-16GB ngethebhulethi ene-4GB yesikhala samahhala

Umsebenzi:

Kukhona i-PC ngaphandle kwe-inthanethi, kodwa kungenzeka ukudlulisa ifayela nge-USB. Kukhona ithebhulethi ene-inthanethi lapho leli fayela lingadluliswa khona. Ungalanda i-torrent edingekayo kuthebhulethi yakho, kodwa asikho isikhala esanele samahhala. Ifayela elisesifuleni lilodwa futhi likhulu.

Indlela eya kwisixazululo:

Ngiqale isifufula ukulanda. Lapho isikhala esikhululekile sesicishe saphela, ngamisa ukulanda. Ngixhume ithebhulethi ku-PC futhi ngahambisa ifayela kusuka kuthebhulethi kuya ku-PC. Ngike ngime kancane ngimangale ukuthi ifayela liphinde ladaleka futhi isifufula saqhubeka nokulanda sengathi akwenzekanga lutho.

Ngenxa yokuthi iklayenti lesifufula lisetha ifulegi elincane efayeleni lapho libhala khona idatha etholiwe, isistimu ayizami ukugodla u-16GB ngesikhathi esisodwa futhi ngeke kwenzeke iphutha lapho izama ukubhalela ifayela elingaphezu kuka-4GB.

Ngemva kokuphinda inqubo izikhathi ezine, ngathola amafayela amane ku-PC yami aqukethe izingxenye ezihlukene zesifufula esifanayo. Manje osekusele wukubahlanganisa. Inqubo empeleni ilula. Udinga ukufaka esikhundleni samabhayithi aziro ngelinye inani uma likhona endaweni ethile kwelinye lamafayela amane.

Kwakubonakala kimi ukuthi uhlelo olulula kangaka kufanele lube ku-inthanethi. Akekho owake wabhekana nenkinga enjalo? Kodwa ngabona ukuthi angazi nokuthi yimaphi amagama angukhiye wokuyicinga. Ngakho-ke, ngakha ngokushesha umbhalo we-Lua walo msebenzi futhi manje sengiwulungiselele. Yilokhu engifuna ukwabelana ngakho.

Ilanda isifufula ngezingxenye

  1. qala ukulanda isifufula kudivayisi yokuqala
  2. linda kuze kugcwaliswe i-ROM
  3. misa kancane ukulanda
  4. dlulisela ifayela kudivayisi yesibili bese wengeza inombolo egameni lefayela
  5. sibuyela ephuzwini lokuqala kuze kube yilapho ifayela selilandiwe ngokuphelele

Ukuhlanganisa izingxenye zibe ifayela elilodwa

Ngemuva kokuthi ingxenye yokugcina yamukelwe, kuyadingeka ukuyiqoqa efayeleni elilodwa eliphelele.

Umsebenzi ulula:

  1. Ukufunda zonke izingxenye ngesikhathi esisodwa
  2. Uma engxenyeni ethile isikhundla singeyona i-byte engu-zero, khona-ke siyibhala ekuphumeni, ngaphandle kwalokho sibhala zero

Umsebenzi merge_part yamukela uchungechunge lwemicu streams_in ofunda ingxenye yosayizi buffer_length futhi ibuyisela umphumela wokuhlanganisa izingxenye ezivela emicu ehlukahlukene.

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

Umsebenzi string.gsub iwufanele umsebenzi ngoba izothola izingcezu ezigcwaliswe ngoziro futhi ilethe lokho okunikezwe yona.

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

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

string.gsub ayivezi indawo lapho okufanayo kutholwe khona. Ngakho-ke, senza ukusesha okuhambisanayo kwesimo zero_string usebenzisa umsebenzi string.find. Kwanele ukuthola i-byte yokuqala enguziro.

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

--[[

Manje uma ku in_part kukhona idatha ye out_part zikopishe.

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

Sika kusukela in_part ingxenye ehambisana nokulandelana koziro.

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

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

В part kukhona idatha.

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

part kuvele kwaba ngaphansi kokulandelana kukaziro. Ake sengezelele kanye nabo.

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

isiphetho

Ngakho, sikwazile ukulanda futhi sihlanganise leli fayela ku-PC. Ngemva kokuhlanganiswa, ngakhipha ifayela lesifufula kuthebhulethi. Ngifake iklayenti lesifufula ku-PC yami futhi ngabheka ifayela ngayo.

Ingxenye yokugcina elandiwe kuthebhulethi ingashiywa isatshalaliswa, kodwa udinga ukunika amandla ukuhlola kabusha izingxenye ngaphambi kwalokhu futhi ususe ukumaka ifayela ukuze lingaphinde lilandiwe.

Okusetshenzisiwe:

  1. Iklayenti le-Flud torrent kuthebhulethi.
  2. Iklayenti le-Torrent qBittorent ku-PC.
  3. Lua iskripthi

Source: www.habr.com

Engeza amazwana