92 lines
2.2 KiB
Python
92 lines
2.2 KiB
Python
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()
|