import copy import datetime import os import schedule from utils import create_consumer, PostData,get_data_id from core import settings consumer, client = create_consumer() def handler_os(properties): os_: str = properties.get('#os', 'Android') if os_.lower() == 'ios': properties['#os'] = 102 else: properties['#os'] = 101 def handler_money(properties): properties['unitPrice'] = int(properties.get('unitPrice', 0) / 100) def handler_userid(properties): properties['user_id'] = properties['binduid'] def after_handler_pay(event_name: str, send_data: dict): is_role_pay = event_name == 'pay' if is_role_pay: send_data['data']['pay_result'] = 1 def run(): post_data = PostData(client) schedule.every(60).seconds.do(post_data.post) idx = get_data_id() for msg in consumer(): data: dict = msg.value if data.get('#type') != 'track': continue data.update(data.get('properties', {})) data.pop('properties') if data.get('game') != 'xiangsu': continue event_name = data.get('#event_name') # if event_name == 'ping': # continue if event_name not in settings.legu_to_sm_event: continue if 'shoumeng' not in (data.get('owner_name') or ''): continue idx += 1 data['data_id'] = idx send_data = copy.deepcopy(settings.template_data) handler_os(data) handler_money(data) handler_userid(data) send_data['event']['event_name'] = settings.legu_to_sm_event[event_name] send_data['event']['event_time'] = str(int( datetime.datetime.strptime(data['#event_time'], '%Y-%m-%d %H:%M:%S').timestamp() * 1000)) for k, v in settings.legu_to_sm_attr_base.items(): send_data['data'][v] = data.get(k) for k, v in settings.legu_to_sm_attr.get(event_name, dict()).items(): send_data['data'][v] = data.get(k) after_handler_pay(event_name, send_data) # print(send_data) if post_data.is_upload(): post_data.post() post_data.add(send_data) schedule.run_pending() if __name__ == '__main__': run()