Skip to content

Instantly share code, notes, and snippets.

@Gerg
Created January 14, 2020 19:49
Show Gist options
  • Save Gerg/f742e9e8be26601661f3f8345e205a3b to your computer and use it in GitHub Desktop.
Save Gerg/f742e9e8be26601661f3f8345e205a3b to your computer and use it in GitHub Desktop.
Automatic PM for VAT
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Instructions
# chmod +x auto_pm.py
# ./auto_pm.py
import json
import random
import base64
try:
input = raw_input
except NameError:
pass
brain = """
ewogICJpbnRybyI6IHsKICAgICJwcm9tcHQiOiAiU3VwPyIsCiAgICAiYW5zd2VycyI6IFsKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJJIGhhdmUgYSBxdWVzdGlvbi4iLAogICAgICAgICJkZXN0biI6ICJxdWVzdGlvbiIKICAgICAgfSwKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJJIG5lZWQgYSBwZXAgdGFsay4iLAogICAgICAgICJkZXN0biI6ICJwZXAtdGFsayIKICAgICAgfSwKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJXaGF0J3MgYSBnb29kIHNvbmcgdG8gbGlzdGVuIHRvPyIsCiAgICAgICAgImRlc3RuIjogIm11c2ljIgogICAgICB9CiAgICBdCiAgfSwKICAicXVlc3Rpb24iOiB7CiAgICAicHJvbXB0IjogIklzIGl0IGFib3V0IHRoZSBBUEkgb3IgQ0xJPyIsCiAgICAiYW5zd2VycyI6IFsKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJBUEkiLAogICAgICAgICJkZXN0biI6ICJhcGktcXVlc3Rpb24iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAidGl0bGUiOiAiQ0xJIiwKICAgICAgICAiZGVzdG4iOiAiY2xpLXF1ZXN0aW9uIgogICAgICB9CiAgICBdCiAgfSwKICAiYXBpLXF1ZXN0aW9uIjogewogICAgInByb21wdCI6ICJDb29sLiBJcyB0aGVyZSBhbHJlYWR5IHNvbWV0aGluZyBvbiB0aGUgdjMgQVBJIGxpa2UgdGhpcz8iLAogICAgImFuc3dlcnMiOiBbCiAgICAgIHsKICAgICAgICAidGl0bGUiOiAiWWVzIiwKICAgICAgICAiZGVzdG4iOiAiZG8tdGhhdCIKICAgICAgfSwKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJObyIsCiAgICAgICAgImRlc3RuIjogImFwaS1xdWVzdGlvbi0yIgogICAgICB9CiAgICBdCiAgfSwKICAiYXBpLXF1ZXN0aW9uLTIiOiB7CiAgICAicHJvbXB0IjogIklzIHRoZXJlIHNvbWV0aGluZyBpbiB0aGUgdjMgc3R5bGUgZ3VpZGUgbGlrZSB0aGlzPyIsCiAgICAiYW5zd2VycyI6IFsKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJZZXMiLAogICAgICAgICJkZXN0biI6ICJkby10aGF0IgogICAgICB9LAogICAgICB7CiAgICAgICAgInRpdGxlIjogIk5vIiwKICAgICAgICAiZGVzdG4iOiAiYXBpLXF1ZXN0aW9uLTMiCiAgICAgIH0KICAgIF0KICB9LAogICJhcGktcXVlc3Rpb24tMyI6IHsKICAgICJwcm9tcHQiOiAiSXMgdGhlcmUgc29tZXRoaW5nIG9uIHRoZSB2MiBBUEkgbGlrZSB0aGlzPyIsCiAgICAiYW5zd2VycyI6IFsKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJZZXMiLAogICAgICAgICJkZXN0biI6ICJkby10aGF0IgogICAgICB9LAogICAgICB7CiAgICAgICAgInRpdGxlIjogIk5vIiwKICAgICAgICAiZGVzdG4iOiAiYXBpLXF1ZXN0aW9uLTQiCiAgICAgIH0KICAgIF0KICB9LAogICJhcGktcXVlc3Rpb24tNCI6IHsKICAgICJwcm9tcHQiOiAiRG9lcyBDQVBJIGhhdmUgYW55IGdvb2QgaWRlYXM/IiwKICAgICJhbnN3ZXJzIjogWwogICAgICB7CiAgICAgICAgInRpdGxlIjogIlllcyIsCiAgICAgICAgImRlc3RuIjogImRvLXRoYXQiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAidGl0bGUiOiAiTm8iLAogICAgICAgICJkZXN0biI6ICJpZGsiCiAgICAgIH0KICAgIF0KICB9LAogICJpZGsiOiB7CiAgICAicHJvbXB0IjogIk9rYXksIHVzZSB5b3VyIGp1ZGdlbWVudCBhbmQgZG8gd2hhdGV2ZXIgaXMgc2ltcGxlc3Qvc2FmZXN0LiBXZSBjYW4gcmV2aXNpdCB0aGlzIHdoZW4gcmVhbCBHcmVnIGlzIGJhY2suIiwKICAgICJhbnN3ZXJzIjogWwogICAgICB7CiAgICAgICAgInRpdGxlIjogIkkgaGF2ZSBhbm90aGVyIHF1ZXN0aW9uIiwKICAgICAgICAiZGVzdG4iOiAiaW50cm8iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAidGl0bGUiOiAiQ29vbCIsCiAgICAgICAgInRlcm1pbmFsIjogdHJ1ZQogICAgICB9CiAgICBdCiAgfSwKICAiY2xpLXF1ZXN0aW9uIjogewogICAgInByb21wdCI6ICJPaCwgSSBkb24ndCBrbm93IG11Y2ggYWJvdXQgdGhhdCwgYnV0IEknbGwgZG8gbXkgYmVzdC4gSXMgdGhlcmUgc29tZXRoaW5nIGluIHRoZSB2NyBDTEkgbGlrZSB0aGlzPyIsCiAgICAiYW5zd2VycyI6IFsKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJZZXMiLAogICAgICAgICJkZXN0biI6ICJkby10aGF0IgogICAgICB9LAogICAgICB7CiAgICAgICAgInRpdGxlIjogIk5vIiwKICAgICAgICAiZGVzdG4iOiAiY2xpLXF1ZXN0aW9uLTIiCiAgICAgIH0KICAgIF0KICB9LAogICJjbGktcXVlc3Rpb24tMiI6IHsKICAgICJwcm9tcHQiOiAiSXMgdGhlcmUgc29tZXRoaW5nIGluIHRoZSBDTEkgc3R5bGUgZ3VpZGUgbGlrZSB0aGlzPyIsCiAgICAiYW5zd2VycyI6IFsKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJZZXMiLAogICAgICAgICJkZXN0biI6ICJkby10aGF0IgogICAgICB9LAogICAgICB7CiAgICAgICAgInRpdGxlIjogIk5vIiwKICAgICAgICAiZGVzdG4iOiAiY2xpLXF1ZXN0aW9uLTMiCiAgICAgIH0KICAgIF0KICB9LAogICJjbGktcXVlc3Rpb24tMyI6IHsKICAgICJwcm9tcHQiOiAiSXMgdGhlcmUgc29tZXRoaW5nIGluIHRoZSB2NiBDTEkgbGlrZSB0aGlzPyIsCiAgICAiYW5zd2VycyI6IFsKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJZZXMiLAogICAgICAgICJkZXN0biI6ICJkby10aGF0IgogICAgICB9LAogICAgICB7CiAgICAgICAgInRpdGxlIjogIk5vIiwKICAgICAgICAiZGVzdG4iOiAiY2xpLXF1ZXN0aW9uLTQiCiAgICAgIH0KICAgIF0KICB9LAogICJjbGktcXVlc3Rpb24tNCI6IHsKICAgICJwcm9tcHQiOiAiRG9lcyB0aGUgQ0xJIHRlYW0gaGF2ZSBhbnkgZ29vZCBpZGVhcz8iLAogICAgImFuc3dlcnMiOiBbCiAgICAgIHsKICAgICAgICAidGl0bGUiOiAiWWVzIiwKICAgICAgICAiZGVzdG4iOiAiZG8tdGhhdCIKICAgICAgfSwKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJObyIsCiAgICAgICAgImRlc3RuIjogImlkayIKICAgICAgfQogICAgXQogIH0sCiAgImNsaS1xdWVzdGlvbi01IjogewogICAgInByb21wdCI6ICJEb2VzIHRoZSBDTEkgdGVhbSBoYXZlIGFueSBnb29kIGlkZWFzPyIsCiAgICAiYW5zd2VycyI6IFsKICAgICAgewogICAgICAgICJ0aXRsZSI6ICJZZXMiLAogICAgICAgICJkZXN0biI6ICJkby10aGF0IgogICAgICB9LAogICAgICB7CiAgICAgICAgInRpdGxlIjogIk5vIiwKICAgICAgICAidGVybWluYWwiOiB0cnVlCiAgICAgIH0KICAgIF0KICB9LAogICJkby10aGF0IjogewogICAgInByb21wdCI6ICJPa2F5LCBkbyB0aGF0LiBBbnl0aGluZyBlbHNlIEkgY2FuIGhlbHAgeW91IHdpdGg/IiwKICAgICJhbnN3ZXJzIjogWwogICAgICB7CiAgICAgICAgInRpdGxlIjogIlllcyIsCiAgICAgICAgImRlc3RuIjogImludHJvIgogICAgICB9LAogICAgICB7CiAgICAgICAgInRpdGxlIjogIk5vIiwKICAgICAgICAidGVybWluYWwiOiB0cnVlCiAgICAgIH0KICAgIF0KICB9LAogICJwZXAtdGFsayI6IHsKICAgICJwcm9tcHQiOiAie30hIEFueXRoaW5nIGVsc2UgSSBjYW4gaGVscCB5b3Ugd2l0aD8iLAogICAgInJhbmRvbSI6IFsKICAgICAgIllvdSBjYW4gZG8gaXQiLAogICAgICAiSSBiZWxpZXZlIGluIHlvdSIsCiAgICAgICJZb3UgZ290IHRoaXMiCiAgICBdLAogICAgImFuc3dlcnMiOiBbCiAgICAgIHsKICAgICAgICAidGl0bGUiOiAiWWVzIiwKICAgICAgICAiZGVzdG4iOiAiaW50cm8iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAidGl0bGUiOiAiTm8iLAogICAgICAgICJ0ZXJtaW5hbCI6IHRydWUKICAgICAgfQogICAgXQogIH0sCiAgIm11c2ljIjogewogICAgInByb21wdCI6ICJUcnkgbGlzdGVuaW5nIHRvICd7fScuIEFueXRoaW5nIGVsc2UgSSBjYW4gaGVscCB5b3Ugd2l0aD8iLAogICAgInJhbmRvbSI6IFsKICAgICAgIkN1dCBUbyBUaGUgRmVlbGluZyAtIENhcmx5IFJhZSBKZXBzZW4iLAogICAgICAiVG9vIE11Y2ggLSBDYXJseSBSYWUgSmVwc2VuIiwKICAgICAgIkVtb3Rpb24gLSBDYXJseSBSYWUgSmVwc2VuIiwKICAgICAgIlRoaXMgS2lzcyAtIENhcmx5IFJhZSBKZXBzZW4iLAogICAgICAiSnVsaWVuIC0gQ2FybHkgUmFlIEplcHNlbiIsCiAgICAgICJJbW1hdGVyaWFsIC0gU09QSElFIiwKICAgICAgIlJvY2sgQ28uS2FuZSBGbG93IC0gRGUgTGEgU291bCwgTUYgRE9PTSIsCiAgICAgICJzdHVwaWQgaG9yc2UgLSAxMDAgZ2VjcyIsCiAgICAgICJWZW5vbSAtIExpdHRsZSBTaW16IiwKICAgICAgIkROQSAtIEJUUyIsCiAgICAgICJUYWxrIHRvIE1lIC0gUnVuIFRoZSBKZXdlbHMiCiAgICBdLAogICAgImFuc3dlcnMiOiBbCiAgICAgIHsKICAgICAgICAidGl0bGUiOiAiWWVzIiwKICAgICAgICAiZGVzdG4iOiAiaW50cm8iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAidGl0bGUiOiAiTm8iLAogICAgICAgICJ0ZXJtaW5hbCI6IHRydWUKICAgICAgfQogICAgXQogIH0KfQo=
"""
def run(brain64, prompt_key):
brain_json = base64.b64decode(brain64)
brain = json.loads(brain_json)
terminal = False
print("================\n Automatic PM\n================")
while not terminal:
prompt = brain.get(prompt_key)
display_prompt(prompt)
answer_index = accept_response()
answers = prompt.get("answers")
if answer_index.isdigit() and int(answer_index) <= len(answers) - 1:
answer = answers[int(answer_index)]
terminal = bool(answer.get("terminal"))
prompt_key = answer.get("destn")
print("Bye!")
def display_prompt(prompt):
interpolation_value = get_interpolation_value(prompt)
prompt_text = prompt.get("prompt").format(interpolation_value)
print(u'\n🤖: %s \n' % prompt_text)
for i, answer in enumerate(prompt.get("answers")):
print('%d) %s' % (i, answer["title"]))
def get_interpolation_value(prompt):
if 'random' in prompt:
return random.choice(prompt.get('random'))
else:
return ''
def accept_response():
return input('> ')
try:
run(brain, "intro")
except:
print("UnknownError")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment