diff --git a/config/settings.yml b/config/settings.yml index fe8e75a..abc9090 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -9,3 +9,6 @@ mongo: uri : 'mongodb://localhost:27017/' dbname: 'tiktok' enabled: 'on' + +api: + userinfo: 'https://live.douyin.com/webcast/user/?aid=6383&target_uid=' \ No newline at end of file diff --git a/messages/__pycache__/base.cpython-39.pyc b/messages/__pycache__/base.cpython-39.pyc index cdbf6f6..18da088 100644 Binary files a/messages/__pycache__/base.cpython-39.pyc and b/messages/__pycache__/base.cpython-39.pyc differ diff --git a/messages/__pycache__/roomuserseq.cpython-39.pyc b/messages/__pycache__/roomuserseq.cpython-39.pyc index 83704f1..b665d8c 100644 Binary files a/messages/__pycache__/roomuserseq.cpython-39.pyc and b/messages/__pycache__/roomuserseq.cpython-39.pyc differ diff --git a/messages/__pycache__/utils.cpython-39.pyc b/messages/__pycache__/utils.cpython-39.pyc index f5451f7..821dbb3 100644 Binary files a/messages/__pycache__/utils.cpython-39.pyc and b/messages/__pycache__/utils.cpython-39.pyc differ diff --git a/messages/base.py b/messages/base.py index 0fee36f..4942dc2 100644 --- a/messages/base.py +++ b/messages/base.py @@ -1,3 +1,4 @@ +import traceback from datetime import datetime from store.mongo import MongoStore @@ -14,7 +15,10 @@ class Base: return dict() def user(self): - return self.instance.user + if(hasattr(self.instance, 'user')): + return self.instance.user + + return None def persists(self): if config()['mongo']['enabled'] != 'on': @@ -22,41 +26,39 @@ class Base: try: store = MongoStore() - store.set_collection('user') user = self.user() + if user is not None: + store.set_collection('user') - store.replace_one({ - "id": user.id - }, { - "id": user.id, - "shortId": user.shortId, - "nickname": user.nickname, - "gender": user.gender, - "avatar_thumb": user.avatarThumb.urlList[0], - "followInfo": { - "followingCount": user.followInfo.followingCount, - "followerCount": user.followInfo.followerCount - } - }, upsert=True) + if not store.exists({'id': user.id}): + store.insert_one({ + 'id': user.id, + 'shortId': user.shortId, + 'nickname': user.nickname, + 'gender': user.gender + }) store.set_collection(self.instance.common.method) - msg = { "msgId": self.instance.common.msgId, "roomId": self.instance.common.roomId, - "userId": user.id, 'content': self.format_content(), 'created_at': datetime.today().replace(microsecond=0) } + if user is not None: + msg.update({ + 'userId': user.id + }) + if len(self.extra_info()): msg.update(self.extra_info()) store.insert_one(msg) except Exception as e: print(self.instance.common.method + ' persists error') - + print(traceback.format_exc()) def __str__(self): pass diff --git a/messages/roomuserseq.py b/messages/roomuserseq.py index 2dc5c41..25115c9 100644 --- a/messages/roomuserseq.py +++ b/messages/roomuserseq.py @@ -7,6 +7,11 @@ class RoomUserSeqMessage(Base): def __init__(self): self.instance = message_pb2.RoomUserSeqMessage() + def extra_info(self): + return { + 'total': self.instance.total, + } + def format_content(self): return self.instance.totalUserStr diff --git a/messages/utils.py b/messages/utils.py index 7eed281..8a2a888 100644 --- a/messages/utils.py +++ b/messages/utils.py @@ -74,9 +74,9 @@ def decodeMsg(messages): elif message.method == 'WebcastRoomUserSeqMessage': room_user_seq_message = RoomUserSeqMessage() room_user_seq_message.set_payload(message.payload) - # room_user_seq_message.persists() + room_user_seq_message.persists() print(f"\n{YELLOW}[+] {room_user_seq_message} {RESET}") except Exception as e: - print(e) \ No newline at end of file + print(e) diff --git a/scripts/__pycache__/utils.cpython-39.pyc b/scripts/__pycache__/utils.cpython-39.pyc new file mode 100644 index 0000000..32fb11f Binary files /dev/null and b/scripts/__pycache__/utils.cpython-39.pyc differ diff --git a/scripts/__pycache__/watcher.cpython-39.pyc b/scripts/__pycache__/watcher.cpython-39.pyc index 7b44dd7..2e029f8 100644 Binary files a/scripts/__pycache__/watcher.cpython-39.pyc and b/scripts/__pycache__/watcher.cpython-39.pyc differ diff --git a/scripts/utils.py b/scripts/utils.py new file mode 100644 index 0000000..5b99707 --- /dev/null +++ b/scripts/utils.py @@ -0,0 +1,10 @@ +import requests + +from config.helper import config + +def getUserinfo(uid): + try: + r = requests.get(config()['api']['userinfo'] + str(uid)) + return r.json() + except: + pass \ No newline at end of file diff --git a/scripts/watcher.py b/scripts/watcher.py index 10b3f8b..5623741 100644 --- a/scripts/watcher.py +++ b/scripts/watcher.py @@ -39,6 +39,5 @@ class Handler(FileSystemEventHandler): return None elif event.event_type == 'created': - print('here') q.put(event.src_path) diff --git a/store/__pycache__/mongo.cpython-39.pyc b/store/__pycache__/mongo.cpython-39.pyc index ba81d92..84ea613 100644 Binary files a/store/__pycache__/mongo.cpython-39.pyc and b/store/__pycache__/mongo.cpython-39.pyc differ diff --git a/store/mongo.py b/store/mongo.py index 097f153..df85009 100644 --- a/store/mongo.py +++ b/store/mongo.py @@ -18,3 +18,6 @@ class MongoStore: def insert_many(self, data): return self.collection.insert_many(data) + + def exists(self, condition): + return self.collection.count_documents(condition, limit = 1) != 0