Interroger le contrat MEME avec l’API Covalent et Python.
Pour le deuxième volet de ma série sur l’utilisation de l’API Covalent, je vais vous expliquer comment interroger le contrat intelligent MEME pour obtenir des métadonnées NFT.
Nous commençons par importer les bibliothèques nécessaires dans notre session Jupyter Notebook :
import requests
import json
import urllib.request
from PIL import Image
Ensuite, nous envoyons une requête “get ”au point de d’accès (enpoint) de l’API Covalent dans le format suivant :
/v1/{chainId}/tokens/{address}/nft_metadata/{tokenId}/
- chainId: 1 (Id number for Ethereum)
- address: 0xe4605d46fd0b3f8329d936a8b258d69276cba264 (MEME contract)
- tokenId: 123 (for the purpose of this example)
Avec toutes les entrées correctes, notre requête “get ”ressemblera à ceci :
result = requests.get("https://api.covalenthq.com/v1/1/tokens/0xe4605d46fd0b3f8329d936a8b258d69276cba264/nft_metadata/123/?&key=YOUR_KEY_HERE")
Ensuite, nous formatons le résultat dans un JSON :
result = result.json()
result
Avec comme résultat:
{'data': {'updated_at': '2021-03-16T19:36:24.285356547Z',
'items': [{'contract_decimals': 0,
'contract_name': 'Meme Ltd.',
'contract_ticker_symbol': 'MEMES',
'contract_address': '0xe4605d46fd0b3f8329d936a8b258d69276cba264',
'supports_erc': ['erc20'],
'logo_url': 'https://logos.covalenthq.com/tokens/0xe4605d46fd0b3f8329d936a8b258d69276cba264.png',
'type': 'nft',
'balance': None,
'quote_rate': None,
'quote': None,
'nft_data': [{'token_id': '123',
'token_balance': '1',
'token_url': 'https://api.dontbuymeme.com/memes/123',
'supports_erc': ['erc20', 'erc1155'],
'token_price_wei': '6450000000000000000',
'token_quote_rate_eth': '6.45',
'external_data': {'name': 'I wish I was understood',
'description': None,
'image': 'https://images.dontbuymeme.com/artist-series/fewocious/static/i-wish-i-was-understood.jpg',
'external_url': 'https://dontbuymeme.com/artist-series/fewocious',
'attributes': [{'trait_type': 'Set',
'value': 'Artist Drop 8 - Fewocious'},
{'trait_type': 'Artist', 'value': 'Fewocious'},
{'trait_type': 'Type', 'value': 'Pop Surreal'},
{'display_type': 'date',
'trait_type': 'birthday',
'value': 1609267020},
{'trait_type': 'Max Supply', 'value': '100'}],
'owner': None},
'owner': None}]}],
'pagination': None},
'error': False,
'error_message': None,
'error_code': None}
A partir de ce résultat, nous voyons que l’API Covalent nous donne une quantité ENORME d’informations. Incroyable.
Puisque l’information que nous voulons est imbriquée, nous pouvons filtrer le JSON:
result['data']['items']
Qui produit l’information que nous recherchons:
[{'contract_decimals': 0,
'contract_name': 'Meme Ltd.',
'contract_ticker_symbol': 'MEMES',
'contract_address': '0xe4605d46fd0b3f8329d936a8b258d69276cba264',
'supports_erc': ['erc20'],
'logo_url': 'https://logos.covalenthq.com/tokens/0xe4605d46fd0b3f8329d936a8b258d69276cba264.png',
'type': 'nft',
'balance': None,
'quote_rate': None,
'quote': None,
'nft_data': [{'token_id': '123',
'token_balance': '1',
'token_url': 'https://api.dontbuymeme.com/memes/123',
'supports_erc': ['erc20', 'erc1155'],
'token_price_wei': '6450000000000000000',
'token_quote_rate_eth': '6.45',
'external_data': {'name': 'I wish I was understood',
'description': None,
'image': 'https://images.dontbuymeme.com/artist-series/fewocious/static/i-wish-i-was-understood.jpg',
'external_url': 'https://dontbuymeme.com/artist-series/fewocious',
'attributes': [{'trait_type': 'Set',
'value': 'Artist Drop 8 - Fewocious'},
{'trait_type': 'Artist', 'value': 'Fewocious'},
{'trait_type': 'Type', 'value': 'Pop Surreal'},
{'display_type': 'date', 'trait_type': 'birthday', 'value': 1609267020},
{'trait_type': 'Max Supply', 'value': '100'}],
'owner': None},
'owner': None}]}]
À partir de là, il existe un éventail infini de possibilités. Si vous voulez accéder à l’URL de l’image depuis le carnet Jupyter et voir à quoi ressemble le NFT, copiez l’URL sous ‘image’, et définissez-la comme URL:
URL = 'https://images.dontbuymeme.com/artist-series/fewocious/static/i-wish-i-was-understood.jpg'
Ensuite:
with urllib.request.urlopen(URL) as url:
with open('nft.jpg', 'wb') as f:
f.write(url.read())img = Image.open('nft.jpg')img.show()
Qui affichera:
À propos de Covalent
Covalent fournit une API unifiée pour apporter une transparence et une visibilité complètes aux actifs sur tous les réseaux blockchain. La technologie exclusive de Covalent permet une solution «sans code» qui résout un vaste éventail de cas d’utilisation pour les portefeuilles, les échanges, les dépositaires et la fiscalité, entre autres. L’API permet un accès facile aux données normalisées, unifiées et granulaires.
Twitter: @Covalent_HQ
Telegram: https://www.covalenthq.com/telegram/
Discord: https://www.covalenthq.com/discord