For the complete documentation index, see llms.txt. This page is also available as Markdown.

Python 示例

这个实践展示了如何编写一个简单程序,使用 快照 内容服务器提供的。

你可以在 完整脚本 的 GitHub 中找到,同时还有一个 更高级的示例.

我们将使用 Decentraland 基金会的服务器,地址是 peer.decentraland.org,并以 Python 3 作为我们选择的语言。

我们将这样做:

  1. 查询内容服务器的状态。

  2. 选择并下载一个 快照 ,其中包含实体列表。

  3. 打印所有引用实体的类型和 ID。

让我们先做一些准备来开始编写脚本。我们只会使用标准库模块,但在实际代码中,你可能会想用一个更方便的 HTTP 客户端(比如 requests 库)。

# 发起一个 HTTP GET 请求,返回一个类似文件的 HTTP 响应。
def fetch(path):
    url = f"https://peer.decentraland.org/{path}"
    headers = { "User-Agent": "urllib" } # 在某些服务器上很重要(如果为空,会返回 403 Forbidden)

    request = urllib.request.Request(url, headers=headers)
    response = urllib.request.urlopen(request)

    return response

我们这个简单的辅助函数会发起一个 HTTP GET 请求,并返回类似文件的响应对象。没什么花哨的。让我们用它来访问 /about 端点并检查服务器状态:

# 检查服务器状态:
about = json.load(fetch('about'))

if not about['healthy']:
    print("Server not healthy!")
    sys.exit(1)

如果我们能通过这一点,说明服务器正在运行(我们得到了一个 200 响应),并且报告自己处于正常工作状态。我们可以请求当前的快照集合(它以 JSON 数组格式返回):

快照文件(尤其是时间范围更长的那些)可能非常大。为了快速试验,我们先按 numberOfEntities:

要下载内容,我们需要 hash 字段,来自 快照。我们通过将它附加到内容根路径来获取文件 URL:

我们选中的文件足够小,可以缓存在内存中,但让我们假装不知道这一点,直接流式读取它。第一行是快照头,后面的每一行都包含一个 JSON 对象。

让我们检查一下头部,这是个好习惯:

现在我们可以逐行读取响应,处理快照中的所有实体了。就我们这个简单目的而言, 处理 是指打印实体类型和 ID:

这个循环将开始流式读取、解析并打印如下内容,直到快照处理完毕:

干杯!我们已经使用快照系统探索了 Decentraland 中一些可用的内容。

请记住,你可以在 完整脚本 的 GitHub 中找到,同时还有一个 更高级的示例.

最后更新于