randomhost / steamsignature
以 PNG 图片形式显示 Steam 玩家的在线状态。
Requires
- php: ~8.0
- ext-mbstring: *
- randomhost/image: ~3.0-beta
Requires (Dev)
- phpunit/phpunit: ~9.0
Suggests
- ext-memcached: Provides in-memory caching of API data to reduce amount of API calls
README
randomhost/steamsignature
1. 目的
此包读取 Valve 的 Steam 平台的 Steam Web-API 和 社区 XML 数据,并将玩家的当前在线状态以 PNG 图片的形式显示,设计用于论坛和博客签名。
包含的链接目标方法检测玩家是否正在玩多人服务器,并返回玩家的 Steam 个人资料页面的 URL 或用于加入游戏的 URL(如果游戏支持使用本地安装的 Steam 客户端加入)。
2. 示例
3. 要求
- PHP 8.x
- 处理国际字符和表情的
mbstring扩展 - 用于渲染图像的
GD扩展 - Composer
- 在服务器上执行 shell 命令的基本知识
注意:安装此包的唯一官方支持方式是通过 Composer。然而,在理论上,可以在本地计算机上安装 PHP 8 和 Composer,然后在该处运行安装,然后将 Composer 创建的 vendor 文件夹上传到服务器,如果无法访问 shell。
4. 安装
重要:此包使用 Composer 作为 PHP 的依赖关系管理器来检查系统要求并安装包依赖项。在尝试使用此包之前,请确保已安装。
以下示例假设您的 Web 服务器在用户帐户 www-data 下运行,composer 已安装到系统 $PATH 中,并且您有有效的 sudo 设置来以不同用户运行 shell 命令。
在这种情况下,您只需在服务器上包含此 README.md 的同一目录中运行此命令
sudo -u www-data composer install
5. 使用
使用此包的基本方法可能如下所示
<?php declare(strict_types=1); use randomhost\Steam\API; use randomhost\Steam\Signature; require_once '/path/to/vendor/autoload.php'; // setup directories $imageDir = '/path/to/images/'; $fontsDir = '/path/to/fonts/'; $cacheDir = '/path/to/cache/'; // init an API instance for talking to the Steam Web API $api = new API('yourSteamApiKey'); // resolve custom URL into steam ID $steamId = $api->resolveVanityUrl('yourCustomProfileUrl'); // init Signature instance $signature = new Signature($api, $steamId, $imageDir, $fontsDir, $cacheDir); // renders the picture $signature->render(); // returns a link to the user's profile page or a Steam join link $signature->getLinkTarget();
上面的示例应该大部分是自我解释的。
必须使用个人 API 密钥初始化 API 类。您可以从 Steam 开发者网站 获取您的 API 密钥。
API 类是 Steam Web-API 的非常有限的实现,不应直接使用,除了一个方法之外
API::resolveVanityUrl($vanityUrl)
将给定的 vanity URL 解析为 64 位 Steam ID,准备传递给Signature类构造函数。
Signature 类提供两个公共方法
-
Signature::render()
直接将签名图像输出到网页浏览器。注意:此方法必须是唯一发送输出到网页浏览器的代码。如果您收到“无法修改头部信息”错误,请确保您的应用程序在调用
Signature::render()之前没有生成任何输出。另外,在调用此方法之后不允许生成任何输出,因为它会破坏图像。 -
Signature::getLinkTarget()
返回指向 Steam 用户个人资料页面的链接或指向用户当前正在玩的游戏的加入链接(如果游戏支持通过 Steam 加入)。
此脚本的示例实现可以在 src/www/ 文件夹中找到。
6. 许可证
请参阅LICENSE.txt以获取完整的许可详情。
