问题描述
我一直在使用fbchat编写程序,发现了一个吸引我的有趣函数
class listen(fbchat.Client):
def onMessageUnsent(
self,mid=None,author_id=None,thread_id=None,thread_type=None,ts=None,msg=None,):
print(msg)
client = listen('','',session_cookies=cookies)
client.listen()
,它给出以下输出,但是如何将其转换为人类可重编的形式...?
{'payload': [123,34,100,101,108,116,97,115,58,91,123,82,99,77,103,68,104,114,75,121,111,85,70,98,73,49,48,52,53,55,50,57,54,125,44,109,105,46,36,65,66,95,88,69,118,56,112,120,76,86,87,110,84,51,93,125],'class': 'ClientPayload'}
这甚至意味着什么?
这不是base64或十六进制...
解决方法
这是ASCII码的列表。试试这个:
"".join(map(chr,msg["payload"]))
结果是:
'{"deltas":[{"deltaRecallMessageData":{"threadKey":{"otherUserFbId":100044572192906},"messageID":"mid.$cAABa_XEv8Ip7yMxLrV1mdWU1p0Fl","deletionTimestamp":1604637096568,"senderID":100044572192906,"messageTimestamp":0}}]}'
看起来像一个JSON字符串,您可以使用json.loads(...)
进行解析,例如:
import json
import pprint
# Fetch msg here using the code in the question body
json_string = "".join(map(chr,msg["payload"]))
d = json.loads(json_string)
pprint.pprint(d)