From d38ce0b86c7b9262391f48108d808ddb62854760 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 22 Mar 2023 13:04:30 +0800 Subject: [PATCH] 1 --- scripts/export_market/export.py | 84 ++++++++++++++++++++++++++++++--- 1 file changed, 77 insertions(+), 7 deletions(-) diff --git a/scripts/export_market/export.py b/scripts/export_market/export.py index 00cf37e..0224f97 100644 --- a/scripts/export_market/export.py +++ b/scripts/export_market/export.py @@ -24,6 +24,8 @@ stat = { 'merchant_hold': 0 }, 'nft_rank': [ + ], + 'nft_hero_box_rank': [ ] } @@ -100,17 +102,39 @@ def statData(): del boxUser[key] assert(len(boxUser) == stat['blindBox']['user_hold']) userHoldNums = {} + userHoldHeroBoxNums = {} for key, value in boxUser.items(): userHoldNums[value] = 1 for row in nftTable: 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 + if ownerAddress != EMPTY_ADDRESS and ownerAddress != '': + if row['token_type'] != '4': + stat['nft_total'] += 1 + stat['nft_mint'] += 1 + if ownerAddress not in userHoldNums: + userHoldNums[ownerAddress] = 1 + else: + userHoldNums[ownerAddress] += 1 + if row['token_type'] == '1': + if ownerAddress not in userHoldHeroBoxNums: + userHoldHeroBoxNums[ownerAddress] = { + 'hero': 1, + 'box': 0, + 'nftNum': 1 + } + else: + userHoldHeroBoxNums[ownerAddress]['hero'] += 1 + userHoldHeroBoxNums[ownerAddress]['nftNum'] += 1 + if row['token_type'] == '4': + if ownerAddress not in userHoldHeroBoxNums: + userHoldHeroBoxNums[ownerAddress] = { + 'hero': 0, + 'box': 1, + 'nftNum': 1 + } + else: + userHoldHeroBoxNums[ownerAddress]['box'] += 1 + userHoldHeroBoxNums[ownerAddress]['nftNum'] += 1 #end for userHoldList = [] for key, value in userHoldNums.items(): @@ -151,6 +175,52 @@ def statData(): with open('nft_rank.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerows(rankList) + + # + userHoldHeroBoxList = [] + for key, value in userHoldHeroBoxNums.items(): + if value['nftNum'] > 1: + userHoldHeroBoxList.append( + { + 'address': key, + 'hero': value['hero'], + 'box': value['box'], + 'nftNum': value['nftNum'] + } + ) + #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_hero_box_rank'] = sorted(userHoldHeroBoxList, key=functools.cmp_to_key(cmpFunc)) + for i in range(len(stat['nft_hero_box_rank'])): + stat['nft_hero_box_rank'][i]['rank'] = i + 1 + rankList = [ + ( + 'address', + 'hero', + 'box', + 'nftNum', + 'rank' + ) + ] + for item in stat['nft_hero_box_rank']: + rankList.append( + ( + item['address'], + item['hero'], + item['box'], + item['nftNum'], + item['rank'] + ) + ) + with open('nft_hero_box_rank.csv', 'w', newline='') as f: + writer = csv.writer(f) + writer.writerows(rankList) print(json.dumps(stat, indent=4)) def loadData():