diff --git a/apps/tfkeyprice/manifest.yaml b/apps/tfkeyprice/manifest.yaml new file mode 100644 index 000000000..dc9b32e9d --- /dev/null +++ b/apps/tfkeyprice/manifest.yaml @@ -0,0 +1,6 @@ +--- +id: tf-key-price +name: TF Key Price +summary: Team Fortress 2 Key Price +desc: Display price of team fortress 2 keys via backpack.tf website. +author: Trevor Underwood diff --git a/apps/tfkeyprice/tf_key_price.gif b/apps/tfkeyprice/tf_key_price.gif new file mode 100644 index 000000000..88abd3a2a Binary files /dev/null and b/apps/tfkeyprice/tf_key_price.gif differ diff --git a/apps/tfkeyprice/tf_key_price.star b/apps/tfkeyprice/tf_key_price.star new file mode 100644 index 000000000..0c17f7461 --- /dev/null +++ b/apps/tfkeyprice/tf_key_price.star @@ -0,0 +1,35 @@ +load("render.star", "render") +load("http.star", "http") +load("encoding/base64.star", "base64") + +KEY_PRICE_URL = "https://backpack.tf/api/IGetCurrencies/v1?raw=1&key=6594beeaba29d5eb6204c3ab" + +TF2_ICON = base64.decode("""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""") +def main(config): + rep = http.get(KEY_PRICE_URL, ttl_seconds = 240) + if rep.status_code != 200: + fail("Bakcpack.tf request failed with status %d", rep.status_code) + + rate = rep.json()["response"]["currencies"]["keys"]["price"]["value_raw"] + + return render.Root( + child = render.Row( + children = [ + render.Image(src = TF2_ICON), + render.Column( + children = [ + render.Marquee( + width = 32, + child = render.Text("Mann Co. Supply Crate Key"), + ), + render.Text("%d REF" % rate), + ], + expanded = True, + main_align = "space_evenly", + cross_align = "center", + ), + ], + main_align = "space_between", + cross_align = "center", + ), + )