Files
2025-10-10 01:59:25 +02:00

88 lines
2.9 KiB
Python

# **************************************************************************** #
# #
# ::: :::::::: #
# scrap.py :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/11/25 16:39:19 by tomoron #+# #+# #
# Updated: 2025/10/10 01:58:11 by tomoron ### ########.fr #
# #
# **************************************************************************** #
from login import Intra42
from getpass import getpass
import re
import json
import threading
import time
import sys
import dateutil
import os
import requests
from datetime import date, timedelta
try:
token = os.environ["APP_TOKEN"]
user = os.environ["USER_KEY"]
except KeyError as e:
print(f"Missing environment variable: {e.args[0]}")
sys.exit(1)
pushover_req_data = {
"token": token,
"user": user,
"message": "",
}
print(pushover_req_data)
if(len(sys.argv) != 2):
print("missing team id, usage :", sys.argv[0], "<subscribe url>")
exit(1);
project_id = sys.argv[1].split('/')[-2]
team_id = sys.argv[1].split('?')[-1].split('=')[-1]
print("team id :", team_id, "\nproject_id :", project_id)
start_search_date = date.today().strftime("%Y-%m-%d")
end_search_date = (date.today() + timedelta(days=3)).strftime("%Y-%m-%d")
getUrl = f"https://projects.intra.42.fr/projects/{project_id}/slots.json?start={start_search_date}&end={end_search_date}"
if ( not "https://" in team_id):
getUrl += f"&team_id={team_id}"
print(getUrl)
connIntra = Intra42()
found = set();
while(True):
try:
res = connIntra.get_available_slot(getUrl)
if(type(res) == type({})):
print("probably invalid url")
time.sleep(5)
continue
for x in res:
if x["ids"] not in found:
start = dateutil.parser.isoparse(x["start"]).strftime("%d/%m at %H:%M")
end = dateutil.parser.isoparse(x["end"]).strftime("%d/%m at %H:%M")
text = "slot found starting on " + start + " ,ending on " + end;
pushover_req_data["message"] = text
response = requests.post("https://api.pushover.net/1/messages.json", data=pushover_req_data)
print("request sent", response.status_code, response.text)
print("\a" + text);
found.add(x["ids"])
time.sleep(5);
except Exception as e:
time.sleep(1)
print(e)
pass