Implement base downloader
This commit is contained in:
43
pytchat/downloader/dictquery.py
Normal file
43
pytchat/downloader/dictquery.py
Normal file
@@ -0,0 +1,43 @@
|
||||
class DictQuery(dict):
|
||||
def get(self, path, default = None):
|
||||
keys = path.split("/")
|
||||
val = None
|
||||
for key in keys:
|
||||
if val:
|
||||
if key.isdecimal():
|
||||
if isinstance(val,list) and len(val) > int(key):
|
||||
#val=val[int(key)]
|
||||
val=list(val)[int(key)]
|
||||
else:return default
|
||||
elif isinstance(val, dict):
|
||||
val = val.get(key, default)
|
||||
else:
|
||||
return default
|
||||
else:
|
||||
val = dict.get(self, key, default)
|
||||
|
||||
return val
|
||||
|
||||
def find(target,**kwargs):
|
||||
for key in kwargs.keys():
|
||||
if key == target:
|
||||
return kwargs[key]
|
||||
if isinstance(kwargs[key], dict):
|
||||
res = find(target,**kwargs[key])
|
||||
elif isinstance(kwargs[key], list):
|
||||
for item in kwargs[key]:
|
||||
res = find(target,**item)
|
||||
try:
|
||||
return res
|
||||
except UnboundLocalError:
|
||||
return None
|
||||
|
||||
def getid_replay(item):
|
||||
return list((list(item['replayChatItemAction']["actions"][0].values())[0])['item'].values())[0]['id']
|
||||
|
||||
def getid_realtime(item):
|
||||
return list((list(item.values())[0])['item'].values())[0]['id']
|
||||
|
||||
|
||||
def get_timestamp_realtime(item):
|
||||
return list((list(item.values())[0])['item'].values())[0]['timestampUsec']
|
||||
Reference in New Issue
Block a user