首頁 >後端開發 >Python教學 >為歐洲翻新蒸汽甲板建造可用性檢查器

為歐洲翻新蒸汽甲板建造可用性檢查器

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-24 02:14:14220瀏覽

Building an Availability Checker for Refurbished Steam Decks in Europe

由於庫存波動,在歐洲獲得翻新的 Steam Deck 可能具有挑戰性。這個基於 Python 的可用性檢查器可自動執行該過程,並在出現翻新設備時提供即時通知。 這篇文章詳細介紹了該計畫的技術實現並鼓勵社區貢獻。

專案概覽

此 Python 腳本監視 Steam 商店在歐洲是否有翻新的 Steam Deck。 利用 ntfy 通知服務,當庫存有貨時,它會立即提醒用戶。 本專案展示如何使用現成的 Python 函式庫和 API 來有效率地解決問題。

功能

腳本運行如下:

  1. 它定期查詢 Steam API 以獲取庫存更新。
  2. 偵測到可用庫存後,它會發送 ntfy 通知。
  3. 透過調度腳本(例如使用 cron)來實現持續監控。

核心邏輯:

<code class="language-python">from urllib.request import urlopen

# Configure your ntfy URL
ntfy_url = "ntfy.sh/YOUR_NTFY_URL"

# Timeout to prevent script hang-ups
timeout = 8


def parse_availability(data: bytes) -> bool:
    parsed = " ".join(f"{c:02X}" for c in data)
    not_available = "08 00 10 00"
    return parsed != not_available


def 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"Refurbished {name} Steam Deck is available!"
    print(message)
    with urlopen(f"https://{ntfy_url}", data=str.encode(message), timeout=timeout):
        pass


if __name__ == "__main__":
    # Uncomment for notification testing
    # notify("TEST")

    # Refurbished 64GB (European region, tested in Poland)
    if is_available("COGVNxICUEw="):
        notify("64GB")</code>

執行

  1. 安裝最新的 Python 版本。不需要額外的模組。
  2. ntfy_url 替換為您的個人 ntfy URL(從 ntfy 網站取得一個)。 建議使用ntfy行動應用程式進行通知。
  3. 對於 Windows Server 用戶,請將 ntfy.shapi.steampowered.com 新增至 Internet Explorer 設定中的受信任網站。

結論

該專案強調了簡潔的 Python 腳本在實際任務中的強大功能。它是 API 互動、通知和 Python 自動化的寶貴學習資源。 完整程式碼在GitHub上,歡迎貢獻和客製化。

以上是為歐洲翻新蒸汽甲板建造可用性檢查器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn