ดาวน์โหลดทอร์เรนต์ขนาด 16GB ผ่านแท็บเล็ตที่มีพื้นที่ว่าง 4GB

ดาวน์โหลดทอร์เรนต์ขนาด 16GB ผ่านแท็บเล็ตที่มีพื้นที่ว่าง 4GB

งาน:

มีพีซีที่ไม่มีอินเทอร์เน็ต แต่สามารถถ่ายโอนไฟล์ผ่าน USB ได้ มีแท็บเล็ตที่มีอินเทอร์เน็ตซึ่งสามารถถ่ายโอนไฟล์นี้ได้ คุณสามารถดาวน์โหลดทอร์เรนต์ที่ต้องการบนแท็บเล็ตของคุณได้ แต่มีพื้นที่ว่างไม่เพียงพอ ไฟล์ในทอร์เรนต์เป็นไฟล์เดียวและใหญ่

เส้นทางสู่การแก้ปัญหา:

ฉันเริ่มทอร์เรนต์เพื่อดาวน์โหลด เมื่อพื้นที่ว่างใกล้จะหมด ฉันจึงหยุดการดาวน์โหลดชั่วคราว ฉันเชื่อมต่อแท็บเล็ตเข้ากับพีซี และย้ายไฟล์จากแท็บเล็ตไปยังพีซี ฉันหยุดชั่วคราวและต้องประหลาดใจที่ไฟล์ถูกสร้างขึ้นอีกครั้ง และทอร์เรนต์ก็ดาวน์โหลดต่อไปราวกับว่าไม่มีอะไรเกิดขึ้น

เนื่องจากไคลเอนต์ torrent ตั้งค่าสถานะกระจัดกระจายให้กับไฟล์ที่เขียนข้อมูลที่ได้รับ ระบบจะไม่พยายามสำรอง 16GB ในคราวเดียว และจะไม่เกิดข้อผิดพลาดเมื่อพยายามเขียนไปยังไฟล์ที่มีขนาดเกิน 4GB

หลังจากทำซ้ำขั้นตอนนี้สี่ครั้ง ฉันได้รับไฟล์สี่ไฟล์บนพีซีของฉันที่มีส่วนต่าง ๆ ของทอร์เรนต์เดียวกัน ตอนนี้สิ่งที่เหลืออยู่ก็คือการรวบรวมพวกมันเข้าด้วยกัน ขั้นตอนนั้นง่ายมาก คุณต้องแทนที่ศูนย์ไบต์ด้วยค่าอื่น หากมีอยู่ในตำแหน่งที่กำหนดในไฟล์ใดไฟล์หนึ่งจากสี่ไฟล์

สำหรับฉันดูเหมือนว่าโปรแกรมง่ายๆเช่นนี้ควรอยู่บนอินเทอร์เน็ต ไม่มีใครเคยประสบปัญหาดังกล่าวหรือไม่? แต่ฉันรู้ว่าฉันไม่รู้ด้วยซ้ำว่าจะค้นหาคำหลักอะไร ดังนั้นฉันจึงสร้างสคริปต์ Lua สำหรับงานนี้อย่างรวดเร็ว และตอนนี้ฉันได้ปรับให้เหมาะสมแล้ว นี่คือสิ่งที่ฉันต้องการแบ่งปัน

ดาวน์โหลดทอร์เรนต์เป็นบางส่วน

  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. ไคลเอนต์ Flud torrent บนแท็บเล็ต
  2. ไคลเอนต์ฝนตกหนัก qBittorent บนพีซี
  3. สคริปต์ลัวะ

ที่มา: will.com

เพิ่มความคิดเห็น