Files
work-auto-tag/AssignerPal.py
2025-04-11 10:44:56 -07:00

122 lines
4.5 KiB
Python

from selenium import webdriver
import AutoTicket
import AutoColor2
import json
import os
import datetime
import time
import random
import traceback
urls = {"NOC-PROV":"","NOC-PROV-ADV":"","CONSUMER-PROV":"","TICKETS":""}
tickets_sorted = False
def assign_urls(dictionary):
for key in dictionary:
value = input(f"Enter url for '{key}': ")
dictionary[key] = value
def get_team(name):
user_list = []
print(f"List {name} members.")
while True:
user_input = input("Add to list (Press Enter to finish): ")
if user_input:
user_list.append(user_input.lower())
else:
break
print("I'm working with these users:", user_list)
print("")
print("This look good? y/n")
answer = input()
if "n" in answer:
print("Let's try that again...")
print("")
get_team()
else:
return user_list
def first_time_setup():
print("Initiating first time set up")
print("To ensure internal security, you will need to provide urls for each location,")
print("As well as employee usernames (first.last)")
print("If you don't know, you shouldn't be using this script.")
assign_urls(urls)
with open('urls.json', 'w') as file:
json.dump(urls, file)
users = get_team("users")
leads = get_team("leads")
with open('team.json', 'w') as file:
json.dump(users, file)
with open('leads.json', 'w') as file:
json.dump(leads, file)
def show_loading_bar(duration):
start_time = time.time()
while True:
elapsed_time = time.time() - start_time
progress = elapsed_time / duration
bar_length = 30
filled_length = int(progress * bar_length)
bar = '#' * filled_length + '-' * (bar_length - filled_length)
percent = round(progress * 100, 2)
remaining_time = round(duration - elapsed_time, 2)
remaining_hours = int(remaining_time / 3600)
remaining_minutes = int((remaining_time % 3600) / 60)
remaining_seconds = int(remaining_time % 60)
print(f"Waiting: [{bar}] {percent}% | Remaining Time: {remaining_hours}h {remaining_minutes}m {remaining_seconds}s", end='\r')
if elapsed_time >= duration:
break
time.sleep(0.5)
print("\nWait time complete!")
def main():
if os.path.exists('urls.json'):
print("Skipping first time setup")
else: first_time_setup()
driver = webdriver.Firefox()
while True:
with open('urls.json', 'r') as file:
urls = json.load(file)
with open('team.json', 'r') as file:
users = json.load(file)
current_time = datetime.datetime.now().time()
start_time = datetime.time(7, 0, 0)
end_time = datetime.time(17, 0, 0)
weekday = datetime.datetime.now().weekday()
if start_time <= current_time <= end_time and weekday < 5:
while len(driver.window_handles) > 1:
driver.switch_to.window(driver.window_handles[1])
driver.close()
driver.switch_to.window(driver.window_handles[0])
try:
AutoTicket.auto_ticket(urls, users, driver)
except Exception as e:
print("An error occurred in AutoTicket.py")
print(e)
print(traceback.format_exc())
while len(driver.window_handles) > 1:
driver.switch_to.window(driver.window_handles[1])
driver.close()
driver.switch_to.window(driver.window_handles[0])
try:
AutoColor2.tag_assist(urls, driver, users)
except Exception as e:
print("An error occurred in AutoColor2.py")
print(e)
else:
print("It's after hours or on the weekend. I'm not doing anything.")
current_time = datetime.datetime.now().time()
weekday = datetime.datetime.now().weekday()
if start_time <= current_time <= end_time and weekday < 5:
sleep_duration = random.uniform(5400, 7200) # Random amount of time between 1.5 hours and 2 hours
else:
next_start_time = datetime.datetime.combine(datetime.date.today(), start_time)
if current_time > end_time or weekday >= 5:
next_start_time += datetime.timedelta(days=1)
sleep_duration = (next_start_time - datetime.datetime.now()).total_seconds() + random.uniform(0, 5400) # Time until next start time + random amount between 0 and 1.5 hours
show_loading_bar(sleep_duration)
#driver.close()
main()