Files
pytchat-fork/pytchat/tool/block.py
2020-02-03 22:01:54 +09:00

57 lines
1.7 KiB
Python

from . import parser
class Block:
"""Block object represents virtual chunk of chatdata.
Parameter:
---------
pos : int :
index of this block on block list.
first : int :
videoOffsetTimeMs of the first chat_data
(chat_data[0])
last : int :
videoOffsetTimeMs of the last chat_data.
(chat_data[-1])
this value increases as fetching chatdata progresses.
temp_last : int :
target videoOffsetTimeMs of last chat data for download,
equals to first videoOffsetTimeMs of next block.
when download worker reaches this offset, stop downloading.
continuation : str :
continuation param of last chat data.
chat_data : List
"""
def __init__(self, pos=0, first=0, last=0,
continuation='', chat_data=[]):
self.pos = pos
self.first = first
self.last = last
self.temp_last = 0
self.continuation = continuation
self.chat_data = chat_data
def start(self):
chats, cont = self._cut(self.chat_data, self.continuation, self.last)
self.chat_data = chats
return cont
def fill(self, chats, cont, fetched_last):
chats, cont = self._cut(chats, cont, fetched_last)
self.chat_data.extend(chats)
return cont
def _cut(self, chats, cont, fetched_last):
if fetched_last < self.temp_last or self.temp_last == -1:
return chats, cont
for i, line in enumerate(chats):
line_offset = parser.get_offset(line)
if line_offset >= self.temp_last:
self.last = line_offset
return chats[:i], None