def get_transaction_by_address(address, asset, page): address = address.lower() try: mongo_client.insert_address(address) except Exception as e: app_logger.error(e) txs = [ tx for tx in mongo_client.get_transfer_records(address, asset, page) ] new_txs = [] for tx in txs: if tx["txReceiptStatus"] == "0": tx["txReceiptStatus"] = "-1" tx["addressFrom"] = checksum_encode(tx["addressFrom"]) tx["addressTo"] = checksum_encode(tx["addressTo"]) new_txs.append(tx) if page != 1: return new_txs else: if new_txs: return new_txs my_account = Account(address=address, api_key=setting.API_KEY) my_account.PREFIX = setting.ETHSCAN_API_PREFIX try: res = my_account.get_transaction_page(sort="desc") except: res = None if res: tmp_list_0x = [] tmp_list_contract = [] for r in res: tmp_dict = {} input_data = r.get("input") if r.get("to") == asset and input_data[:10] == "0xa9059cbb": tmp_dict["addressFrom"] = checksum_encode(r.get("from")) tmp_dict["addressTo"] = checksum_encode(input_data[34:74]) tmp_dict["value"] = str(int(input_data[74:], 16)) tmp_dict["txId"] = r.get("hash") tmp_dict["gasUsed"] = r.get("gasUsed") tmp_dict["gasPrice"] = r.get("gasPrice") tmp_dict["gas"] = r.get("gas") tmp_dict["blockNumber"] = r.get("blockNumber") tmp_dict["blockTime"] = r.get("timeStamp") tmp_dict["asset"] = r.get("to") tmp_dict["txReceiptStatus"] = r.get( "txreceipt_status" ) if r.get("txreceipt_status") != "0" else "-1" tmp_list_contract.append(tmp_dict) if input_data == "0x" and asset == "0x00000000000000000000000000000000000000": tmp_dict["addressFrom"] = checksum_encode(r.get("from")) tmp_dict["addressTo"] = checksum_encode(r.get("to")) tmp_dict["value"] = r.get("value") tmp_dict["txId"] = r.get("hash") tmp_dict["gasUsed"] = r.get("gasUsed") tmp_dict["gasPrice"] = r.get("gasPrice") tmp_dict["gas"] = r.get("gas") tmp_dict["blockNumber"] = r.get("blockNumber") tmp_dict["blockTime"] = r.get("timeStamp") tmp_dict["asset"] = "0x00000000000000000000000000000000000000" tmp_dict["txReceiptStatus"] = r.get( "txreceipt_status" ) if r.get("txreceipt_status") != "0" else "-1" tmp_list_0x.append(tmp_dict) if asset == "0x00000000000000000000000000000000000000": tmp_list = tmp_list_0x else: tmp_list = tmp_list_contract if len(tmp_list) > 8: return tmp_list[:8] return tmp_list return []
self.db.TransferRecord.insert_one(record) except Exception as e: logger.info(e) mongo_client = MongodbEth() while True: address = mongo_client.get_address() if not address: time.sleep(15) continue my_account = Account(address=address.get("address"), api_key=setting.API_KEY) my_account.PREFIX = setting.ETHSCAN_API_PREFIX try: res = my_account.get_transaction_page(sort="desc") except Exception as e: res = None if res: for r in res: tmp_dict = {} tmp_dict["txId"] = r.get("hash") tmp_dict["addressFrom"] = r.get("from") tmp_dict["gasUsed"] = r.get("gasUsed") tmp_dict["gasPrice"] = r.get("gasPrice") tmp_dict["gas"] = r.get("gas") tmp_dict["blockNumber"] = r.get("blockNumber") tmp_dict["blockTime"] = r.get("timeStamp")