diff --git a/pytchat/tool/download/asyncdl.py b/pytchat/tool/download/asyncdl.py index 57ea8c3..9d17692 100644 --- a/pytchat/tool/download/asyncdl.py +++ b/pytchat/tool/download/asyncdl.py @@ -1,4 +1,3 @@ - import aiohttp import asyncio import json @@ -105,7 +104,7 @@ def download_patch(callback, blocks, video_id): if callback: callback(actions, last - first) return Patch(actions, continuation, first, last) - return Patch() + return Patch(continuation = continuation) """ allocate workers and assign blocks. """ diff --git a/pytchat/tool/download/patch.py b/pytchat/tool/download/patch.py index 211ff37..2305118 100644 --- a/pytchat/tool/download/patch.py +++ b/pytchat/tool/download/patch.py @@ -22,7 +22,6 @@ def fill(block:Block, patch:Patch): if line_offset < block_end: break patch.chats.pop() - set_patch(block, patch._replace( continuation = None, last = line_offset @@ -34,15 +33,16 @@ def fill(block:Block, patch:Patch): def split(parent_block:Block, child_block:Block, patch:Patch): parent_block.during_split = False - """patch overlaps with parent_block""" if patch.first <= parent_block.last: + ''' When patch overlaps with parent_block, + discard this block. ''' child_block.continuation = None ''' Leave child_block.during_split == True - to exclude from during_split sequence.''' + to exclude from during_split sequence. ''' return child_block.during_split = False - child_block.first=patch.first - parent_block.end =patch.first + child_block.first = patch.first + parent_block.end = patch.first fill(child_block, patch) diff --git a/tests/test_dl_duplcheck.py b/tests/test_dl_duplcheck.py index 82d6e91..67fc00c 100644 --- a/tests/test_dl_duplcheck.py +++ b/tests/test_dl_duplcheck.py @@ -66,7 +66,7 @@ def test_duplicate_head(): [4] , [5] -> append [4] append [5] - result : [0] , [3] , [5] + result : [2] , [4] , [5] """ #chat data offsets are ignored. diff --git a/tests/test_patch.py b/tests/test_patch.py index 79f1353..4f5c208 100644 --- a/tests/test_patch.py +++ b/tests/test_patch.py @@ -23,6 +23,8 @@ def test_split_0(): """ Normal case + ~~~~~~ before ~~~~~~ + @parent_block (# = already downloaded) first last end @@ -31,18 +33,21 @@ def test_split_0(): @child_block - first = last = 0 end=parent_end - ---------------------------------------------------| + first = last = 0 end (=parent_end) + | | @fetched patch |-- patch --| - | - | - V + | + | + V + + ~~~~~~ after ~~~~~~ + @parent_block first last end (after split) @@ -83,20 +88,20 @@ def test_split_1(): ~~~~~~ before ~~~~~~ patch.first - first | last end + first | last end |####################|#####|---------------------| ^ @child_block - first = last = 0 end=parent_end - ---------------------------------------------------| + first = last = 0 end (=parent_end) + | | @fetched patch |-- patch --| - | - | - V + | + | + V ~~~~~~ after ~~~~~~ @@ -135,8 +140,8 @@ def test_split_2(): |########------------------------------| @child_block - first = last = 0 end=parent_end - -----------------------------------------| + first = last = 0 end (=parent_end) + | | continuation:succeed from patch @@ -144,9 +149,9 @@ def test_split_2(): |-------- patch --------| - | - | - V + | + | + V ~~~~~~ after ~~~~~~ @@ -196,23 +201,23 @@ def test_split_none(): |####################|###################|-------| ^ @child_block - first = last = 0 end=parent_end - ---------------------------------------------------| + first = last = 0 end (=parent_end) + | | @fetched patch |-- patch --| patch.last < parent_block.last . - | - | - V + | + | + V ~~~~~~ after ~~~~~~ @parent_block first last end (before split) |########################################|-------| - . + @child_block ............ -> discard all data.