16ጂቢ ነፃ ቦታ ባለው ታብሌት 4GB torrent በማውረድ ላይ

16ጂቢ ነፃ ቦታ ባለው ታብሌት 4GB torrent በማውረድ ላይ

ተግባር

ያለ በይነመረብ ፒሲ አለ, ነገር ግን ፋይሉን በዩኤስቢ በኩል ማስተላለፍ ይቻላል. ይህ ፋይል የሚተላለፍበት ከበይነመረቡ ጋር አንድ ጡባዊ አለ። በጡባዊዎ ላይ አስፈላጊውን ጅረት ማውረድ ይችላሉ ፣ ግን በቂ ነፃ ቦታ የለም። በወንዙ ውስጥ ያለው ፋይል አንድ እና ትልቅ ነው።

የመፍትሄ መንገድ፡-

ወንዙን ለማውረድ ጀመርኩ. ነፃው ቦታ ሊጠፋ ሲቃረብ፣ ማውረዱን ባለበት አቆምኩት። ታብሌቱን ከፒሲ ጋር አገናኘሁት እና ፋይሉን ከጡባዊው ወደ ፒሲ አንቀሳቅሼዋለሁ። ቆም አልኩ እና የሚገርመኝ ፋይሉ እንደገና ተፈጠረ እና ምንም እንዳልተፈጠረ ጅረት መውረድ ቀጠለ።

የቶረንት ደንበኛው የተቀበለውን መረጃ በሚጽፍበት ፋይል ላይ ትንሽ ባንዲራ ስለሚያስቀምጥ ስርዓቱ 16 ጂቢ በአንድ ጊዜ ለማስያዝ አይሞክርም እና ከ 4 ጂቢ በላይ የሆነ ፋይል ለመፃፍ ሲሞክር ስህተት አይከሰትም.

አሰራሩን አራት ጊዜ ከደጋገምኩ በኋላ፣ በፒሲዬ ላይ የተለያዩ የአንድ ጅረት ክፍሎችን የያዙ አራት ፋይሎችን ደረሰኝ። አሁን የቀረው እነሱን አንድ ላይ ማሰባሰብ ብቻ ነው. አሰራሩ በመሠረቱ ቀላል ነው። ዜሮ ባይት ከአራቱ ፋይሎች በአንዱ በተሰጠው ቦታ ላይ ካለ በሌላ እሴት መተካት ያስፈልግዎታል።

እንደዚህ ያለ ቀላል ፕሮግራም በይነመረብ ላይ መሆን እንዳለበት መሰለኝ። ማንም ሰው እንደዚህ አይነት ችግር አጋጥሞ አያውቅም? ግን ምን ዓይነት ቁልፍ ቃላት መፈለግ እንዳለብኝ እንኳን እንደማላውቅ ተገነዘብኩ። ስለዚህ ለዚህ ተግባር የሉአ ስክሪፕት በፍጥነት ፈጠርኩ እና አሁን አመቻችቻለው። ላካፍለው የምፈልገው ይህንን ነው።

ወንዙን በከፊል በማውረድ ላይ

  1. በመጀመሪያው መሳሪያ ላይ ዥረቱን ማውረድ ይጀምሩ
  2. ROM እስኪሞላ ድረስ ይጠብቁ
  3. ማውረዱን ለአፍታ አቁም
  4. ፋይሉን ወደ ሁለተኛው መሣሪያ ያስተላልፉ እና ቁጥር ወደ የፋይል ስም ያክሉ
  5. ፋይሉ ሙሉ በሙሉ እስኪወርድ ድረስ ወደ መጀመሪያው ነጥብ እንመለሳለን

ክፍሎችን ወደ አንድ ፋይል በማዋሃድ

የመጨረሻውን ክፍል ከተቀበለ በኋላ ወደ አንድ ሙሉ ፋይል መሰብሰብ አስፈላጊ ነው.

ተግባሩ ቀላል ነው፡-

  1. ሁሉንም ክፍሎች በአንድ ጊዜ ማንበብ
  2. በአንዳንድ ክፍል ቦታው ዜሮ ባይት ካልሆነ, ወደ ውጤቱ እንጽፋለን, አለበለዚያ ዜሮ እንጽፋለን

ሥራ 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

መደምደሚያ

ስለዚህ, ይህንን ፋይል በፒሲ ላይ ማውረድ እና መሰብሰብ ችለናል. ከውህደቱ በኋላ የቶርን ፋይል ከጡባዊው ላይ አወጣሁ። በፒሲዬ ላይ የቶረንት ደንበኛን ጫንኩ እና ፋይሉን በእሱ ላይ አረጋገጥኩት።

በጡባዊው ላይ የመጨረሻው የወረደው ክፍል በስርጭቱ ላይ ሊቀር ይችላል ፣ ግን ከዚህ በፊት ክፍሎቹን እንደገና መፈተሽ ማንቃት እና ፋይሉ እንደገና እንዳይወርድ ምልክት ያንሱ።

ጥቅም ላይ የዋለ፡

  1. በጡባዊ ተኮ ላይ የፈሳሽ ጎርፍ ደንበኛ።
  2. Torrent ደንበኛ qBittorent በፒሲ ላይ።
  3. የሉአ ስክሪፕት

ምንጭ: hab.com

አስተያየት ያክሉ