diff --git a/.gitignore b/.gitignore index 9d8c2f4..43c6053 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ creds.ini tg_settings.py *.swp *.swo +.vscode/ # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index a68063e..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - - { - "name": "Python: Current File", - "type": "python", - "request": "launch", - "program": "${file}" - }, - { - "name": "Python: Attach", - "type": "python", - "request": "attach", - "localRoot": "${workspaceFolder}", - "remoteRoot": "${workspaceFolder}", - "port": 3000, - "secret": "my_secret", - "host": "localhost" - }, - { - "name": "Python: Terminal (integrated)", - "type": "python", - "request": "launch", - "program": "${file}", - "console": "integratedTerminal" - }, - { - "name": "Python: Terminal (external)", - "type": "python", - "request": "launch", - "program": "${file}", - "console": "externalTerminal" - }, - { - "name": "Python: Django", - "type": "python", - "request": "launch", - "program": "${workspaceFolder}/manage.py", - "args": [ - "runserver", - "--noreload", - "--nothreading" - ], - "debugOptions": [ - "RedirectOutput", - "Django" - ] - }, - { - "name": "Python: Flask (0.11.x or later)", - "type": "python", - "request": "launch", - "module": "flask", - "env": { - "FLASK_APP": "${workspaceFolder}/app.py" - }, - "args": [ - "run", - "--no-debugger", - "--no-reload" - ] - }, - { - "name": "Python: Module", - "type": "python", - "request": "launch", - "module": "module.name" - }, - { - "name": "Python: Pyramid", - "type": "python", - "request": "launch", - "args": [ - "${workspaceFolder}/development.ini" - ], - "debugOptions": [ - "RedirectOutput", - "Pyramid" - ] - }, - { - "name": "Python: Watson", - "type": "python", - "request": "launch", - "program": "${workspaceFolder}/console.py", - "args": [ - "dev", - "runserver", - "--noreload=True" - ] - }, - { - "name": "Python: All debug Options", - "type": "python", - "request": "launch", - "pythonPath": "${config:python.pythonPath}", - "program": "${file}", - "module": "module.name", - "env": { - "VAR1": "1", - "VAR2": "2" - }, - "envFile": "${workspaceFolder}/.env", - "args": [ - "arg1", - "arg2" - ], - "debugOptions": [ - "RedirectOutput" - ] - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index d9fe6dd..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "python.pythonPath": "/bin/python", - "python.formatting.provider": "yapf", - "python.linting.pylintEnabled": false -} \ No newline at end of file diff --git a/baraban.py b/baraban.py index 4cb9b90..e66bebe 100755 --- a/baraban.py +++ b/baraban.py @@ -112,10 +112,38 @@ def do_action(update): elif s[0] == '/list': try: if len(s) == 3: - update.message.reply_text("Fetching tests...") - sleep(5) + update.message.reply_text("Fetching subjects...") + sleep(1) tests = list_test(s[1], s[2]) - #print("******",tests) + msg = "Here is an available subjects:\n```" + i = 0 + for subj in tests: + tests_count = len(tests[subj]) + msg = msg + (" [%s] %s (%s tests)\n" % (i, subj, tests_count)) + i += 1 +# j = 0 +# for test in tests[subj]: +# msg = msg + (" [%s] %s\n" % (j, test)) +# j += 1 + update.message.reply_markdown(msg + "```\n Pay attention to "\ + "numbers in brackets \[..] *Here is subj or test numbers*") + elif len(s) == 4: + update.message.reply_text("Fetching tests...") + sleep(1) + tests = list_test(s[1], s[2]) + i = int(s[3]) + msg = "Here is an available tests:\n" + j = 0 + for subj in tests: + if j == i: + msg = msg + ("``` *** %s ***\n----------\n" % subj) + k = 0 + for test in tests[subj]: + msg = msg + ("[%s] %s\n" % (k, test)) + k += 1 + j += 1 + update.message.reply_markdown(msg + "```\n Pay attention to "\ + "numbers in brackets \[..] *Here is subj or test numbers*") else: update.message.reply_markdown("Usage: */list "\ " *") @@ -124,18 +152,6 @@ def do_action(update): update.message.reply_markdown("Usage: */list "\ " *") return False - msg = "Here is an available tests:\n``` " - i = 0 - #print("******",tests) - for subj in tests: - msg = msg + (" [%s] %s\n" % (i, subj)) - i += 1 - j = 0 - for test in tests[subj]: - msg = msg + (" [%s] %s\n" % (j, test)) - j += 1 - update.message.reply_markdown(msg + "```\n Pay attention to "\ - "numbers in brackets \[..] *Here is subj and test numbers*") else: update.message.reply_markdown("Possible commands: */resolve, /list*") update.message.reply_markdown("Usage: */resolve "\ diff --git a/main.py b/main.py index de6ad13..e5e00b2 100644 --- a/main.py +++ b/main.py @@ -62,6 +62,7 @@ class Perdoliq: # parse tests per subject i = 0 for subject in self.subjects: + logging.info('Found subject %s' % subject) r = requests.post( settings.fesmu_root_url + 'studtst1.aspx', data=settings.merge(settings.scam_data_2, @@ -70,6 +71,7 @@ class Perdoliq: soup = BeautifulSoup(r.text, "html.parser") for test in soup.find_all(class_="dxeListBoxItem_Aqua dxeLTM"): if test.get_text() != '\xa0': + logging.info('\tFound test %s for subject %s' % (test.get_text(), subject)) self.subjects[subject].append(test.get_text()) logging.debug('%s - Found test %s' % (subject, test.get_text())) @@ -133,6 +135,10 @@ class Perdoliq: settings.fesmu_root_url + 'studtst3.aspx', data=settings.scam_data_5, cookies={'ASP.NET_SessionId': self.SessionId}) + r = requests.get( + settings.fesmu_root_url + 'studtst2.aspx', + cookies={'ASP.NET_SessionId': self.SessionId}, + headers={'User-Agent': 'Mozilla/1337'}) # get answer page r = requests.get( settings.fesmu_root_url + 'studtst5.aspx', diff --git a/settings.py b/settings.py index 08c9dd0..794d81e 100644 --- a/settings.py +++ b/settings.py @@ -106,44 +106,25 @@ scam_data_4 = { } scam_data_5 = { - 'ctl00_MainContent_ToolkitScriptManager1_HiddenField': - '', - '__EVENTTARGET': - '', - '__EVENTARGUMENT': - '', - '__VIEWSTATE': - '/wEPDwUKLTg2NDIzNjE0Ng9kFgJmD2QWAgIDD2QWAmYPZBYCAg8PZBYSAgEPPCsABAEADxYCHgVWYWx1ZQU90YTQuNC30LjQutC+LdGF0LjQvNC40YfQtdGB0LrQuNC1INC80LXRgtC+0LTRiyDQsNC90LDQu9C40LfQsGRkAgUPPCsABAEADxYCHwAFENCX0LDQtNCw0L3QuNC1IDFkZAIHDxQrAAQPFgIfAAUr0JLQsNGIINC70LjQvNC40YIg0LLRgNC10LzQtdC90LggNTgg0LzQuNC9LmQ8KwAMAQAWBB4JRm9yZUNvbG9yCk8eBF8hU0ICBGRkZAIJDw8WAh4EVGV4dAUZSi1DNkg0LUNIMyAg0LggIEM2SDVDSDItSmRkAg0PDxYCHwMFIyAxLiDQmNCaLdGB0L/QtdC60YLRgNC+0YHQutC+0L/QuNGPZGQCEQ8PFgIfAwUjIDIuINCj0KQt0YHQv9C10LrRgtGA0L7RgdC60L7Qv9C40Y9kZAIVDw8WAh8DBQogMyAu0J/QnNCgZGQCGQ8PFgIfAwUKIDQgLtCt0J/QoGRkAh0PDxYCHwMFJyA1LiDQvNCw0YHRgS3RgdC/0LXQutGC0YDQvtC80LXRgtGA0LjRj2RkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBR5jdGwwMCRNYWluQ29udGVudCRBU1B4QnV0dG9uMDR1MyONTwjHeh5KMbmXa0KX80/Rfc6GB9jZCQdthjv7eg==', - '__VIEWSTATEGENERATOR': - 'A8B80323', - '__EVENTVALIDATION': - '/wEdAAeaNITRANe52jN2SIod7jskCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+96QXwtwz0yGK8AotoL9rTbsbA6BMGYlcSDZheWZSsKo8=', - 'ctl00$MainContent$hfo1': - '1', - 'ctl00$MainContent$hfo2': - '1', - 'ctl00$MainContent$hfo3': - '1', - 'ctl00$MainContent$hfo4': - '1', - 'ctl00$MainContent$hfo5': - '1', - 'ctl00$MainContent$hf1': - '0', - 'ctl00$MainContent$ASPxButton04': - '', - 'ctl00$MainContent$ASPxCheckBox1': - 'C', - 'ctl00$MainContent$ASPxCheckBox2': - 'C', - 'ctl00$MainContent$ASPxCheckBox3': - 'C', - 'ctl00$MainContent$ASPxCheckBox4': - 'C', - 'ctl00$MainContent$ASPxCheckBox5': - 'C', - 'DXScript': - '1_42,1_75,2_27,2_34,2_40,2_30', + 'ctl00_MainContent_ToolkitScriptManager1_HiddenField': '', + '__EVENTTARGET':'', + '__EVENTARGUMENT':'', + '__VIEWSTATE': '/wEPDwUKMTI5MTM5NzM3Nw9kFgJmD2QWAgIDD2QWAmYPZBYCAg8PZBYSAgEPPCsABAEADxYCHgVWYWx1ZQVd0JjRgdGC0L7RgNC40YfQtdGB0LrQuNC1INC80L7QtNC10LvQuCDQuCDQvNC+0YDQsNC70YzQvdGL0LUg0L/RgNC40L3RhtC40L/RiyDQsdC40L7RjdGC0LjQutC4ZGQCBw88KwAEAQAPFgIfAAUQ0JfQsNC00LDQvdC40LUgMWRkAgkPFCsABA8WAh8ABSvQktCw0Ygg0LvQuNC80LjRgiDQstGA0LXQvNC10L3QuCA2MCDQvNC40L0uZDwrAAwBABYEHglGb3JlQ29sb3IKTx4EXyFTQgIEZGRkAgsPDxYCHgRUZXh0BeoB0KHQvtCz0LvQsNGB0L3QviDCq9Ce0YHQvdC+0LLQsNC8INC30LDQutC+0L3QvtC00LDRgtC10LvRjNGB0YLQstCwINCg0L7RgdGB0LjQudGB0LrQvtC5INCk0LXQtNC10YDQsNGG0LjQuCDQvtCxINC+0YXRgNCw0L3QtSDQt9C00L7RgNC+0LLRjNGPINCz0YDQsNC20LTQsNC9wrsgKDE5OTMpIMKr0LzQtdC00LjRhtC40L3RgdC60LDRjyAo0LLRgNCw0YfQtdCx0L3QsNGPKSDRgtCw0LnQvdCwwrsgLSDRjdGC0L46ZGQCDw8PFgIfAwV3MS4g0L/QsNGB0L/QvtGA0YLQvdGL0LUg0LTQsNC90L3Ri9C1LCDRgdCy0LXQtNC10L3QuNGPINC+INC80LXRgdGC0LUg0YDQsNCx0L7RgtGLLCDRgdC10LzQtdC50L3QvtC8INC/0L7Qu9C+0LbQtdC90LjQuDtkZAITDw8WAh8DBYgBMi4g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0LHQvtC70LXQt9C90LgsINGB0L7QtNC10YDQttCw0YnQsNGP0YHRjyDQsiDQvNC10LTQuNGG0LjQvdGB0LrQuNGFINC00L7QutGD0LzQtdC90YLQsNGFINCz0YDQsNC20LTQsNC90LjQvdCwO2RkAhcPDxYCHwMFRDMuINC40L3RhNC+0YDQvNCw0YbQuNGPLCDQv9C+0LvRg9GH0LXQvdC90LDRjyDQvtGCINC/0LDRhtC40LXQvdGC0LA7ZGQCGw8PFgIfAwVsNC4g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0L/RgNC10LHRi9Cy0LDQvdC40Lgg0LPRgNCw0LbQtNCw0L0g0LIg0LHQvtC70YzQvdC40YfQvdC+0Lwg0YPRh9GA0LXQttC00LXQvdC40Lg7ZGQCHw8PFgIfAwVkNS4g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0YTQsNC60YLQtSDQvtCx0YDQsNGJ0LXQvdC40Y8g0LfQsCDQvNC10LTQuNGG0LjQvdGB0LrQvtC5INC/0L7QvNC+0YnRjNGOLmRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBR1jdGwwMCRNYWluQ29udGVudCRBU1B4QnV0dG9uNQUeY3RsMDAkTWFpbkNvbnRlbnQkQVNQeEJ1dHRvbjA0Nms3Y6hjvD2W4hemKFPRQ88Mc9mMcGL7F8vhsUXl8ho=', + '__VIEWSTATEGENERATOR': 'A8B80323', + '__EVENTVALIDATION': '/wEdAAfvP6vyY1BLXPbKgalQ8wlHCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+9FratexwyBojhohIkCYqLI7r+we2R8PwZy2gyo+V/pDk=', + 'ctl00$MainContent$hfo1': '1', + 'ctl00$MainContent$hfo2': '1', + 'ctl00$MainContent$hfo3': '1', + 'ctl00$MainContent$hfo4': '1', + 'ctl00$MainContent$hfo5': '1', + 'ctl00$MainContent$hf1': '0', + 'ctl00$MainContent$ASPxButton04': '', + 'ctl00$MainContent$ASPxCheckBox1': 'C', + 'ctl00$MainContent$ASPxCheckBox2': 'C', + 'ctl00$MainContent$ASPxCheckBox3': 'C', + 'ctl00$MainContent$ASPxCheckBox4': 'C', + 'ctl00$MainContent$ASPxCheckBox5': 'C', + 'DXScript': '1_42,1_75,2_27,2_34,2_40,2_30', } scam_data_6 = { @@ -154,11 +135,11 @@ scam_data_6 = { '__EVENTARGUMENT': '', '__VIEWSTATE': - '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', '__VIEWSTATEGENERATOR': 'A8B80323', '__EVENTVALIDATION': - '/wEdAAeKAC1bv+nuL6FBliuajDezCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+9q5qchEPd4P0GcPtCRleS0Yg7xHbLgP7/JC5bnWIdotc=', + '/wEdAAdlS+EcZqZj69lvvVBkOiRdCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+973RWBoRj4RF1FwPj+fzhc5icNGqW+IuWU2bEn9AL/aY=', 'ctl00$MainContent$hf1': '0', 'ctl00$MainContent$ASPxButton04':