Python脚本,用于从MagicEden和HowRare API获取指定集合的拍卖列表和稀有度信息,并计算每个NFT的稀有度价格

52 篇文章 15 订阅 ¥179.90 ¥299.90

一个Python脚本,用于从MagicEden和HowRare API获取给定集合的拍卖列表和稀有度信息,并计算每个NFT的稀有度价格。

代码的主要功能如下:

1. 导入所需的模块:`sys`,`time`,`requests`。

2. 定义了一个延迟时间`delay`,用于在每个API请求之间添加一定的延迟。

3. 定义了一个`get_attr_floor`函数,用于获取给定集合的拍卖列表和相关信息,并返回一个价格映射(`price_map`)。

4. 在`get_attr_floor`函数中,通过循环不断向MagicEden的API发送请求,每次请求获取20个拍卖列表。循环结束的条件是API返回一个空列表。

5. 在每个API响应中,将每个NFT的标识(tokenMint)和对应的价格添加到`price_map`字典中。

6. 定义了一个`get_rarity`函数,用于获取给定集合的稀有度信息,并返回一个稀有度映射(`rarity_map`)。

7. 在`get_rarity`函数中,向HowRare的API发送请求,获取给定集合的稀有度数据。

8. 将API响应转换为JSON格式,并从中提取稀有度数据。

9. 将每个NFT的标识(mint)和对应的稀有度(rank)添加到&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用 PHP 监听以太坊区块并获取每个区块中所有的 NFT 数据,可以使用 Ethereum-PHP 库。该库提供了一些方便的方法来连接以太坊节点、执行智能合约方法和监听区块等操作。 以下是一个示例代码,可以连接到以太坊节点并监听每个区块中的 NFT 转移事件: ```php <?php require_once 'vendor/autoload.php'; use Ethereum\Ethereum; $nftAbi = '[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"}]'; $nftAddress = '0x1234567890123456789012345678901234567890'; // 这里需要替换为 NFT 合约的地址 $web3 = new Ethereum('http://localhost:8545'); // 这里需要替换为你的节点地址 $fromBlock = 0; // 从第 0 个区块开始监听 $web3->eth_subscribe('logs', [ 'address' => $nftAddress, 'topics' => ['0x' . hash('sha3', 'Transfer(address,address,uint256)')], 'fromBlock' => '0x' . dechex($fromBlock) ], function ($error, $result) use ($web3, $nftAddress) { if ($error) { echo 'Error: ' . $error . "\n"; return; } $log = $result['data']; $from = $web3->eth_hexToAddress($log['topics'][1]); $to = $web3->eth_hexToAddress($log['topics'][2]); $tokenId = $web3->eth_hexToNumber($log['topics'][3]); echo 'NFT ' . $tokenId . ' transferred from ' . $from . ' to ' . $to . "\n"; $owner = $web3->eth_call([ 'to' => $nftAddress, 'data' => '0x6352211e' . str_pad($web3->eth_numberToHex($tokenId), 64, '0', STR_PAD_LEFT) // 这里调用 ownerOf 方法,需要根据 ABI 获取方法 ID ]); echo 'Owner of NFT ' . $tokenId . ': ' . $owner . "\n"; $metadata = $web3->eth_call([ 'to' => $nftAddress, 'data' => '0x6352211e' . str_pad($web3->eth_numberToHex($tokenId), 64, '0', STR_PAD_LEFT) // 这里调用 tokenURI 方法,需要根据 ABI 获取方法 ID ]); echo 'Metadata of NFT ' . $tokenId . ': ' . $metadata . "\n"; }); ``` 在这个示例代码中,首先定义了 NFT 合约的 ABI 和地址。然后创建了一个 Ethereum 对象,并连接到以太坊节点。接着使用 `eth_subscribe` 方法订阅 `logs` 事件,过滤出 NFT 合约中的 `Transfer` 事件,并指定从第 0 个区块开始监听。 在事件处理函数中,首先从事件日志中解析出转移前后的账户地址和 NFT ID。然后使用 `eth_call` 方法查询 NFT 的拥有者和元数据链接。每当有一次 NFT 转移时,都会在控制台输出 NFT 的详细信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云-激光雷达-Slam-三维牙齿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值