diff --git a/scripts/export_market/export.py b/scripts/export_market/export.py index 307e410..7572ae1 100644 --- a/scripts/export_market/export.py +++ b/scripts/export_market/export.py @@ -1,6 +1,7 @@ import csv import json import datetime +import functools # 1.NFT总量 (宝箱+赠送) # 2.NFT mint数量 (卖出的宝箱+赠送) @@ -94,13 +95,45 @@ def statData(): assert(len(boxUser) == stat['bindBox']['total'] - stat['bindBox']['open']) stat['bindBox']['merchant_hold'] = len(merchant_box) stat['bindBox']['user_hold'] = stat['bindBox']['total'] - stat['bindBox']['open'] - stat['bindBox']['merchant_hold'] + for key, value in boxUser.copy().items(): + if value == MERCHANT_ADDRESS: + del boxUser[key] + assert(len(boxUser) == stat['bindBox']['user_hold']) + userHoldNums = {} + for key, value in boxUser.items(): + userHoldNums[value] = 1 for row in nftTable: - if row['owner_address'] != EMPTY_ADDRESS: + ownerAddress = row['owner_address'].lower() + if ownerAddress != EMPTY_ADDRESS and ownerAddress != '' and row['token_type'] != 4: stat['nft_total'] += 1 stat['nft_mint'] += 1 + if ownerAddress not in userHoldNums: + userHoldNums[ownerAddress] = 1 + else: + userHoldNums[ownerAddress] += 1 #end for + userHoldList = [] + for key, value in userHoldNums.items(): + if value > 1: + userHoldList.append( + { + 'address': key, + 'nftNum': value + } + ) + #end for + def cmpFunc(a, b): + if a['nftNum'] > b['nftNum']: + return -1 + elif a['nftNum'] < b['nftNum']: + return 1 + else: + return 0 + stat['nft_rank'] = sorted(userHoldList, key=functools.cmp_to_key(cmpFunc)) + for i in range(len(stat['nft_rank'])): + stat['nft_rank'][i]['rank'] = i + 1 stat['nft_mint'] += stat['bindBox']['merchant_hold'] - print(json.dumps(stat)) + print(json.dumps(stat, indent=4)) def loadData(): def rowToObj(row, fields):