PHP前端开发

为欧洲翻新蒸汽甲板构建可用性检查器

百变鹏仔 3个月前 (01-27) #Python
文章标签 可用性

Steam Deck 已成为便携式PC游戏玩家的革命性产品。然而,由于供应有限,获取翻新机型并非易事。为此,我开发了一个基于Python的Steam Deck可用性检查器,用于监控欧洲市场上翻新Steam Deck的库存情况。

本文将深入探讨该项目的技术细节,提供实用代码片段,并欢迎其他开发者贡献代码。

项目概述

Steam Deck可用性检查器是一个Python脚本,可自动监控Steam商店的库存状态。它利用ntfy通知服务,在设备可用时向用户发送实时提醒。

该项目充分展现了如何使用简单的内置Python库和API高效解决实际问题。

工作原理

脚本的工作流程十分简洁:

  1. 定期查询Steam API以检查库存状态。
  2. 若检测到库存,则通过ntfy触发通知。
  3. 添加到cron任务后,脚本将无限期地重复此过程。

核心逻辑简述如下:

from urllib.request import urlopen# 请替换为您的ntfy URLntfy_url = "ntfy.sh/YOUR_NTFY_URL"# 设置超时时间,防止脚本挂起timeout = 8def parse_availability(data: bytes) -> bool:    parsed = " ".join(f"{c:02X}" for c in data)    not_available = "08 00 10 00"    return parsed != not_availabledef is_available(id_: str) -> bool:    url = (        "api.steampowered.com/IPhysicalGoodsService/"        "CheckInventoryAvailableByPackage/v1?origin="        f"https://store.steampowered.com&input_protobuf_encoded={id_}"    )    with urlopen(f"https://{url}", timeout=timeout) as response:        data = response.read()    return parse_availability(data)def notify(name: str) -> None:    message = f"{name}版本现已上市!"    print(message)    with urlopen(f"https://{ntfy_url}", data=str.encode(message), timeout=timeout):        passif __name__ == "__main__":    # 取消注释以测试通知功能    # notify("测试")    # 欧洲地区翻新64GB版本,在波兰测试有效    if is_available("COGVNxICUEw="):        notify("64GB")

运行脚本

  1. 安装任何最新版本的Python。无需额外模块。
  2. 将脚本中的ntfy_url替换为您自己的URL。访问ntfy网站获取您的URL。强烈建议您在iOS/Android手机上安装ntfy应用。

对于Windows服务器,您可能需要将ntfy.sh和api.steampowered.com添加到IE设置中的受信任站点。

总结

Steam Deck可用性检查器展示了如何利用简单的Python脚本解决实际问题。对于希望学习API、通知和Python自动化,并同时构建实用工具的开发者来说,这是一个极佳的项目。

欢迎访问GitHub仓库查看完整代码,为项目贡献代码,或根据您的需求自定义脚本。

祝您编程愉快!