From b64d7fc46d18fb584ba29c36023b20a057fe17fc Mon Sep 17 00:00:00 2001
From: Adrien Nunes <adrien.nunes@ensiie.fr>
Date: Sun, 19 Dec 2021 01:00:18 +0100
Subject: [PATCH] Python c moins  bien

---
 main.py | 190 --------------------------------------------------------
 1 file changed, 190 deletions(-)
 delete mode 100644 main.py

diff --git a/main.py b/main.py
deleted file mode 100644
index 051143e..0000000
--- a/main.py
+++ /dev/null
@@ -1,190 +0,0 @@
-import time
-import sys
-import requests
-from bs4 import BeautifulSoup
-
-
-#Remplire ici 
-# (ou bien ils seront demandés avant l'execution)
-webhook = None          #Sous forme "https://discord.com/api/webhooks/???/???"
-username = None
-password = None
-#############
-if(not username):
-    username = input("Enter your username: ")
-if(not password):
-    password = input("Enter your password: ")
-if(not webhook):
-    webhook = input("Enter your Discord webhook (https://discord.com/api/webhooks/???/???)\n: ")
-
-url_cas = "https://cas.ensiie.fr/login"
-url_notes = "https://aurionweb.ensiie.fr/faces/LearnerNotationListPage.xhtml"
-url_aurion = "https://aurionweb.ensiie.fr/faces/MainMenuPage.xhtml"
-
-session = None
-notes_dones = []
-
-
-def new_session():
-    global session
-    session = requests.session()
-
-class AurionSession:
-    def __init__(self):
-        form_id = None
-        form_res_id = None
-        form_sub_res_id = None
-        viewState = None
-
-
-# Recupere le champs <input> 'execution' de la page de connexion
-def get_execution():
-    field = 'name="execution" value="'
-    r = session.get(url_cas, verify=False)
-    start = r.text.index(field) + len(field)
-    end = r.text.index('"', start + 1)
-    return r.text[start:end]
-
-# Login sur le cas
-def login(execution):
-    data = {
-        'username': username,
-        'password': password,
-        'execution': execution,
-        '_eventId': 'submit',
-        'geolocation': ''
-    }
-    session.post(url_cas, data=data)
-
-
-#Parse une page pour update le nouvau 'viewState'
-def parse_view_state(rep, aurion_session):
-    soup = BeautifulSoup(rep, 'html.parser')
-    element = soup.find('update', {'id':'j_id1:javax.faces.ViewState:0'})
-    if(element != None):
-        aurion_session.viewState = element.string
-    else:
-        aurion_session.viewState = soup.find('input', {'id': 'j_id1:javax.faces.ViewState:0'})['value']
-
-
-#Parse une page et recupere l'id du menu
-def parse_menu_id(text, aurion_session):
-    field = '{PrimeFaces.ab({s:"'
-    soup = BeautifulSoup(text, 'html.parser')
-
-    for script in soup.find_all('script'):
-        content = script.string
-        if(content != None and "chargerSousMenu" in content):
-            start = content.find(field)
-            if(start > 0):
-                start += len(field)
-                end = content.find('"', start)
-                aurion_session.form_id = content[start:end]
-                return
-
-
-#Parse une page et recupere l'id du menu 'Résultats'
-def parse_menu_res(text, aurion_session):
-    soup = BeautifulSoup(text, 'html.parser')
-    for span in soup.findAll('span', {'class' : 'ui-menuitem-text'}):
-        if(span.string == "Résultats"):
-            for classMenu in span.parent.parent['class']:
-                if(classMenu.startswith('submenu_')):
-                    aurion_session.form_res_id = classMenu
-                    return
-            return
-
-
-#Parse une page et recupere l'id du sous-menu 'Notes aux épreuves année en cours'
-def parse_submenu_res(text, aurion_session):
-    field = "form:sidebar_menuid':'"
-    content = BeautifulSoup(text, 'html.parser')
-    for sub_menu in content.findAll('span', {'class' : 'ui-menuitem-text'}):
-        if(sub_menu.string == 'Notes aux épreuves année en cours'):
-            m = sub_menu.parent['onclick']
-            start = m.index(field) + len(field)
-            end = m.index("'", start)
-            aurion_session.form_sub_res_id = m[start:end]
-            return
-
-#Demande les sous-menu du menu 'Résultats'
-def init_result(aurion_session):
-    data = {
-        'javax.faces.partial.ajax': 'true',
-        'javax.faces.source': aurion_session.form_id,
-        'javax.faces.partial.execute': aurion_session.form_id,
-        'javax.faces.partial.render': 'form:sidebar',
-        aurion_session.form_id: aurion_session.form_id,
-        'webscolaapp.Sidebar.ID_SUBMENU': aurion_session.form_res_id,
-        'form': 'form',
-        'javax.faces.ViewState': aurion_session.viewState
-    }
-
-    r = session.post(url_aurion, data=data)
-    soup = BeautifulSoup(r.text, 'html.parser')
-    parse_submenu_res(soup.find('update').string, aurion_session)
-    parse_view_state(r.text, aurion_session)
-
-
-#Envoi une alert Discord
-def send_alert(note):
-    print(note)
-    data = {
-        'content': note,
-        'username': 'Notobot',
-    }
-    requests.post(webhook, json=data)
-
-
-#Parse les notes
-def process_note(note_element):
-    fields = note_element.findAll('td')
-    code = fields[1].string
-    title = fields[2].string
-    note = fields[3].string
-
-    if( code not in notes_dones ): 
-        notes_dones.append(code)
-        send_alert(title+' -> '+note)
-        time.sleep(1)
-
-
-#Demande les notes
-def get_result(aurion_session):
-    data = {
-        'form': 'form',
-        'form:sidebar': 'form:sidebar',
-        'form:sidebar_menuid': aurion_session.form_sub_res_id,
-        'javax.faces.ViewState': aurion_session.viewState
-    }
-
-    r = session.post(url_aurion, data=data)
-
-    soup = BeautifulSoup(r.text, 'html.parser')
-
-    for line in soup.find('tbody').findAll('tr'):
-        process_note(line)
-
-
-
-def init_main():
-    aurion_session = AurionSession()
-    r = session.get(url_aurion)
-
-    parse_menu_id(r.text, aurion_session)
-    parse_menu_res(r.text, aurion_session)
-    parse_view_state(r.text, aurion_session)
-    init_result(aurion_session)
-    get_result(aurion_session)
-
-
-if __name__ == '__main__':
-    while True:
-        try:
-            new_session()
-            execution = get_execution()
-            login(execution)
-            init_main()
-        except:
-            print("Error_ ", sys.exc_info()[0])
-        time.sleep(600)
\ No newline at end of file
-- 
GitLab