· 4 years ago · May 15, 2021, 08:22 PM
1# ======================
2# Fetch NFT from Opensea
3# ======================
4def get_nft(request):
5
6 if not request.args or 'api_key' not in request.args or 'wallet_address' not in request.args:
7 return f'"api_key" and "wallet_address" is required to access Frame API end-point.'
8
9 if request.args['api_key'] != API_KEY:
10 return f'Invalid API key'
11
12 limit = request.args['limit'] if 'limit' in request.args else 20
13 wallet_address = request.args['wallet_address']
14
15 url = f'https://api.opensea.io/api/v1/assets?order_direction=desc&offset=0&limit={limit}&owner={wallet_address}'
16
17 response = requests.get(url)
18
19 data = json.loads(response.text)
20
21 if 'assets' not in data:
22 return data
23
24 #print(f'get_nft data: {json.dumps(data, indent=4)}')
25
26 asset_list = []
27
28 for o in data['assets']:
29 asset_list.append({
30 'token_id': o['token_id'],
31 'image': o['image_url'],
32 'image_thumb': o['image_thumbnail_url'],
33 'token_name': o['name'],
34 'url': o['permalink'],
35 'contract_name': o['asset_contract']['name'],
36 'contract_address': o['asset_contract']['address'],
37 'description': o['asset_contract']['description'],
38 'project_url': o['asset_contract']['external_link'],
39 'project_image': o['asset_contract']['image_url'],
40 'collection_name': o['collection']['name'],
41 'collection_description': o['collection']['description'],
42 'collection_image': o['collection']['image_url'],
43 'tcreate': o['asset_contract']['created_date'],
44 'symbol': o['asset_contract']['symbol'],
45 'etherscan_url': f'https://www.etherscan.io/address/{o["asset_contract"]["address"]}'
46 })
47
48 return asset_list