16GB خالی جگہ کے ساتھ ٹیبلیٹ کے ذریعے 4GB ٹورینٹ ڈاؤن لوڈ کرنا

16GB خالی جگہ کے ساتھ ٹیبلیٹ کے ذریعے 4GB ٹورینٹ ڈاؤن لوڈ کرنا

ٹاسک:

انٹرنیٹ کے بغیر پی سی ہے، لیکن USB کے ذریعے فائل کو منتقل کرنا ممکن ہے۔ انٹرنیٹ کے ساتھ ایک ٹیبلیٹ ہے جہاں سے اس فائل کو منتقل کیا جا سکتا ہے۔ آپ اپنے ٹیبلیٹ پر مطلوبہ ٹورینٹ ڈاؤن لوڈ کر سکتے ہیں، لیکن کافی خالی جگہ نہیں ہے۔ ٹورینٹ میں فائل ایک اور بڑی ہے۔

حل کا راستہ:

میں نے ڈاؤن لوڈ کرنے کے لیے ٹورینٹ شروع کیا۔ جب خالی جگہ تقریباً ختم ہو گئی تو میں نے ڈاؤن لوڈ کو روک دیا۔ میں نے ٹیبلیٹ کو پی سی سے جوڑ دیا اور فائل کو ٹیبلیٹ سے پی سی میں منتقل کیا۔ میں نے توقف کیا اور حیرت سے فائل دوبارہ بن گئی اور ٹورینٹ یوں ڈاؤن لوڈ ہوتا رہا جیسے کچھ ہوا ہی نہ ہو۔

اس حقیقت کی وجہ سے کہ ٹورینٹ کلائنٹ اس فائل پر اسپارس فلیگ سیٹ کرتا ہے جس میں وہ موصولہ ڈیٹا لکھتا ہے، سسٹم ایک بار میں 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. PC پر ٹورینٹ کلائنٹ qBittorent۔
  3. لوا اسکرپٹ

ماخذ: www.habr.com

نیا تبصرہ شامل کریں