繁体   English   中英

如何从ens头像文本记录中提取图片URL

[英]How to extract image URL from ens avatar text record

当使用 ethers JavaScript 库从 Ethereum 名称服务中检索 ENS 文本记录时。 我从文本记录中获得了 NFT URI,但没有从图像 URL 中获得。 请问有什么方法/服务可以将此元数据 URI 转换为 HTTPS 图像 URL。

重建:

TERMINAL : npm install --save ethers

代码:

var ethers = require('ethers');
var url = 'https://mainnet.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161';
var provider = new ethers.providers.JsonRpcProvider(url);


async function main() {
    const resolver = await provider.getResolver("brantly.eth");
    const avatar = await resolver.getAvatar();
    const avatarMetaData = await resolver.getText("avatar");
    console.log(`Avatar Metadata: ${avatarMetaData}`);
}

main();

.

Output: Avatar Metadata: eip155:1/erc721:0xb7F7F6C52F2e2fdb1963Eab30438024864c313F6/2430

EIP155... 不是 imageURL。 我希望它以 {https://...} 的形式出现。 有没有办法实现这一点或将 NFT URI EIP155... 转换为图像或图像 URL。

据我所知,您必须完成整个过程才能获得该 IPFS URI。

您将需要从返回的头像字符串(最后 2 部分)中获取合约地址和令牌 ID,并调用 tokenURI ABI 方法,解析 JSON 并在那里读取图像:

const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const contract = new ethers.Contract(address, abi, signer);

const uri = await contract.tokenURI(tokenId)
const data = (await axios.get(uri)).data;
const image = data.image;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM