diff --git a/app.py b/app.py index 7bcbd4a..c84fd33 100644 --- a/app.py +++ b/app.py @@ -3,14 +3,13 @@ from datetime import timedelta from dotenv import load_dotenv from threading import Thread from os import getenv +import monitoring import html load_dotenv() # IMPORT DES MODULES -from modules.api import * -from modules.curl import * -import modules.monitoring as monitoring +from modules.Classes import * theaters = [Theater(data["node"]) for data in requests.get("https://www.allocine.fr/_/localization_city/Brest").json()["values"]["theaters"]] @@ -56,6 +55,7 @@ def getShowtimes(date): return data + showtimes = [] for i in range(0, 7): day_showtimes = getShowtimes(datetime.today() + timedelta(days=i)) @@ -87,16 +87,12 @@ def home(): if delta > 6: delta = 6 if delta < 0: delta = 0 - useragent = request.headers.get('User-Agent') Thread(target=monitoring.log, kwargs={ 'ip': request.environ.get("HTTP_X_FORWARDED_FOR", request.remote_addr), - 'useragent': useragent, + 'useragent': request.headers.get('User-Agent'), 'day': delta }).start() - if useragent.startswith("curl/"): - return handle_curl(showtimes[delta]) - dates = [] for i in range(0, 7): diff --git a/modules/api.py b/modules/Classes.py similarity index 100% rename from modules/api.py rename to modules/Classes.py diff --git a/modules/curl.py b/modules/curl.py deleted file mode 100644 index 00013b4..0000000 --- a/modules/curl.py +++ /dev/null @@ -1,20 +0,0 @@ -border_top = "╔" + "═" * 58 + "╗" -border_bottom = "╚" + "═" * 58 + "╝" -separator = "╠" + "═" * 58 + "╣" - -def handle_curl(movies): - table = [border_top, "║{:^58}║".format("CinéBrest"), separator] - - for film in movies: - title_line = f"║ {film['title']:<57}║" - table.append(title_line) - - for cinema, seances in film['seances'].items(): - cinema_line = f"║ ├─ {cinema:<54}║" - seances_line = f"║ │ └─ : {', '.join(seances):<43}║" - table.extend([cinema_line, seances_line]) - - table.append(separator) - - table[-1] = border_bottom - return "\n".join(table) \ No newline at end of file diff --git a/modules/monitoring.py b/monitoring.py similarity index 92% rename from modules/monitoring.py rename to monitoring.py index c34c3db..fe19fb6 100644 --- a/modules/monitoring.py +++ b/monitoring.py @@ -1,11 +1,11 @@ -import time -import logging import psycopg2 -from os import getenv -from dotenv import load_dotenv -from typing import Optional, Any from psycopg2 import OperationalError -from ua_parser import parse_os, parse_user_agent +import time +from typing import Optional, Any +import logging +from os import getenv +import httpagentparser +from dotenv import load_dotenv load_dotenv() @@ -153,11 +153,12 @@ if isInit: def log(ip:str, useragent:str, day:int) -> bool: if not isInit: return True - os = parse_os(useragent) - browser = parse_user_agent(useragent) + ua_data = httpagentparser.detect(useragent) + os = ua_data.get('os', {}).get("name", "unknown") + browser = ua_data.get('browser', {}).get("name", "unknown") + success = db.execute_query(f"INSERT INTO cinema_queries (ip, time, browser, os, day) VALUES (\'{ip}\', current_timestamp, \'{browser}\', \'{os}\', {day});") + return success - os_family = os.family if os != None else "unknown" - browser_family = browser.family if browser != None else "unknown" - - success = db.execute_query(f"INSERT INTO cinema_queries (ip, time, browser, os, day) VALUES (\'{ip}\', current_timestamp, \'{browser_family}\', \'{os_family}\', {day});") - return success \ No newline at end of file +if __name__ == "__main__": + ua ="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0" + print(httpagentparser.detect(ua)) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 08405e6..83dcc2f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,3 @@ Flask psycopg2 requests python-dotenv -ua-parser[regex] \ No newline at end of file