Created
January 14, 2020 19:49
-
-
Save Gerg/f742e9e8be26601661f3f8345e205a3b to your computer and use it in GitHub Desktop.
Automatic PM for VAT
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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