55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
from . import parser
|
|
from . block import Block
|
|
from . patch import Patch, fill
|
|
from ... paramgen import arcparam
|
|
INTERVAL = 1
|
|
class DownloadWorker:
|
|
"""
|
|
DownloadWorker associates a download session with a block.
|
|
|
|
When the dlworker finishes downloading, the block
|
|
being downloaded is splitted and assigned the free dlworker.
|
|
|
|
Parameter
|
|
----------
|
|
fetch : func :
|
|
download function of asyncdl
|
|
|
|
block : Block :
|
|
Block object that includes chat_data
|
|
|
|
blocks : list :
|
|
List of Block(s)
|
|
|
|
video_id : str :
|
|
|
|
parent_block : Block :
|
|
the block from which current block is splitted
|
|
"""
|
|
__slots__ = ['block', 'fetch', 'blocks', 'video_id', 'parent_block']
|
|
def __init__(self, fetch, block, blocks, video_id ):
|
|
self.block:Block = block
|
|
self.fetch = fetch
|
|
self.blocks:list = blocks
|
|
self.video_id:str = video_id
|
|
self.parent_block:Block = None
|
|
|
|
|
|
async def run(self, session):
|
|
while self.block.continuation:
|
|
patch = await self.fetch(
|
|
self.block.seektime, session)
|
|
fill(self.block, patch)
|
|
self.block.seektime += INTERVAL
|
|
self.block.done = True
|
|
|
|
|
|
def fd(name,mes,src,patch,end):
|
|
def offset(chats):
|
|
if len(chats)==0:
|
|
return None,None
|
|
return parser.get_offset(chats[0]),parser.get_offset(chats[-1])
|
|
|
|
with open("v://tlog.csv",encoding="utf-8",mode="a") as f:
|
|
f.write(f"WORKER,{name},mes,{mes},edge,{offset(src)[1]},first,{offset(patch)[0]},last,{offset(patch)[1]},end,{end}\n")
|