GPN19:SPN/upload.py: Unterschied zwischen den Versionen

aus dem Wiki des Entropia e.V., CCC Karlsruhe
(Die Seite wurde neu angelegt: „<code>#!/usr/bin/env python3 import os import json import requests from bs4 import BeautifulSoup from colorama import Fore from colorama import Style def upl…“)
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
<code>#!/usr/bin/env python3
upload.py
 
<pre>
#!/usr/bin/env python3


import os
import os
Zeile 49: Zeile 52:
         upload()
         upload()
     except KeyboardInterrupt:
     except KeyboardInterrupt:
         break</code>
         break
</pre>

Version vom 31. Mai 2019, 23:13 Uhr

upload.py

#!/usr/bin/env python3

import os
import json
import requests
from bs4 import BeautifulSoup
from colorama import Fore
from colorama import Style

def upload():
    config = json.load(open('config'))

    get_url = 'https://schlangen.bytewerk.org/snake/edit/latest'
    cookies = {'sessionid': config['session_id']}

    r = requests.get(get_url, cookies=cookies)
    cookies['csrftoken'] = r.cookies['csrftoken']

    soup = BeautifulSoup(r.text, 'lxml')
    xcsrf = soup.select_one('input[name="csrfmiddlewaretoken"]')['value']
    code = open('bot.cpp').read()

    post_url = 'https://schlangen.bytewerk.org/snake/edit/save'
    form_data = {'action': 'run', 'code': code, 'comment': None, 'parent': config['snake_id']}
    r = requests.post(post_url, headers={'X-CSRFToken': xcsrf, 'X-Requested-With': 'XMLHttpRequest'}, json=form_data, cookies=cookies)

    print(r.text)

    print('waiting for compilation...')

    state = 'not_compiled'

    while state == 'not_compiled':
        r = requests.get('https://schlangen.bytewerk.org/api/v1/compile_state', cookies=cookies)
        j = json.loads(r.text)
        state = j['compile_state']

        for l in j['build_log']:
            fmt = f'{Fore.GREEN}' if not 'e' in l.keys() else f'{Fore.RED}'
            fmt_reset = f'{Style.RESET_ALL}'

            key = list(l.keys())[0]
            print('%s%s%s' % (fmt, l[key], fmt_reset), end='')


while True:
    try:
        os.system('inotifywait -e modify bot.cpp')
        upload()
    except KeyboardInterrupt:
        break