16 ГБ сул зайтай таблетаар 4 ГБ торрент татаж байна

16 ГБ сул зайтай таблетаар 4 ГБ торрент татаж байна

Даалгавар:

Интернетгүй компьютер байгаа ч USB-ээр файл дамжуулах боломжтой. Энэ файлыг шилжүүлэх боломжтой интернеттэй таблет байдаг. Та таблет дээрээ шаардлагатай torrent-ийг татаж авах боломжтой боловч хангалттай зай байхгүй байна. Торрент дахь файл нь нэг бөгөөд том хэмжээтэй.

Шийдвэрлэх зам:

Би татаж авахын тулд torrent-ийг эхлүүлсэн. Сул зай бараг дуусч байхад би татаж авахаа түр зогсоов. Би таблетаа компьютерт холбож файлыг таблетаас компьютер руу шилжүүлсэн. Би түр зогсоод, файл дахин үүсэж, торрент юу ч болоогүй юм шиг татсаар байгаад гайхсан.

Торрент клиент нь хүлээн авсан өгөгдлөө бичиж буй файлдаа сийрэг тугийг тавьдаг тул систем нь нэг дор 16 ГБ нөөцлөхийг оролддоггүй бөгөөд 4 ГБ-аас дээш хэмжээтэй файл руу бичих гэж оролдоход алдаа гарахгүй.

Уг процедурыг дөрвөн удаа давтсаны дараа би нэг торрентын өөр өөр хэсгүүдийг агуулсан дөрвөн файлыг компьютер дээрээ хүлээн авлаа. Одоо тэднийг нэгтгэх л үлдлээ. Уг процедур нь үндсэндээ энгийн. Хэрэв дөрвөн файлын аль нэгэнд өгөгдсөн байрлалд байгаа бол тэг байтыг өөр утгаар солих шаардлагатай.

Ийм энгийн программ интернетэд байх ёстой юм шиг надад санагдсан. Ийм асуудалтай хэн ч тулгарч байгаагүй юу? Гэхдээ би ямар түлхүүр үг хайхаа мэдэхгүй байгаагаа ойлгосон. Тиймээс би энэ даалгаварт зориулж Луа скриптийг хурдан үүсгэсэн бөгөөд одоо үүнийг оновчтой болгосон. Энэ бол миний хуваалцах гэсэн зүйл юм.

Торрентыг хэсэгчлэн татаж авч байна

  1. Эхний төхөөрөмж дээр torrent татаж эхлэх
  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

дүгнэлт

Тиймээс бид энэ файлыг компьютер дээрээ татаж аваад угсарч чадсан. Нэгдсэний дараа би таблетаас torrent файлыг гаргаж авсан. Би компьютер дээрээ torrent клиент суулгаж, түүгээр файлаа шалгасан.

Таблет дээрх хамгийн сүүлд татаж авсан хэсгийг түгээлт дээр үлдээж болно, гэхдээ та үүнээс өмнө хэсгүүдийг дахин шалгахыг идэвхжүүлж, файлыг дахин татаж авахгүйн тулд тэмдэглэгээг арилгах хэрэгтэй.

Ашигласан:

  1. Таблет дээрх Flud torrent клиент.
  2. Компьютер дээрх Torrent клиент qBittorent.
  3. Луа скрипт

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх