Created
June 18, 2024 21:53
-
-
Save Albin-Thapaliya/1cba615ab1d3712948cf1bb8dc9651f8 to your computer and use it in GitHub Desktop.
A Windows GUI that let you put your slack id and see your active arcade session
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import tkinter as tk | |
| from tkinter import Frame, Entry, Label, Button, messagebox | |
| import requests | |
| import time | |
| from datetime import datetime, timedelta | |
| class SlackTimerApp: | |
| def __init__(self, master): | |
| self.master = master | |
| self.master.title("Slack Timer") | |
| self.setup_ui() | |
| def setup_ui(self): | |
| self.frame = Frame(self.master, padx=10, pady=10) | |
| self.frame.pack(pady=(50, 20)) | |
| Label(self.frame, text="Enter your Slack ID:", font=('Helvetica', 16)).pack(pady=10) | |
| self.slack_id_entry = Entry(self.frame, font=('Helvetica', 16), width=25) | |
| self.slack_id_entry.pack(pady=10) | |
| self.start_button = Button(self.frame, text="Start Timer", command=self.start_timer, font=('Helvetica', 16)) | |
| self.start_button.pack(pady=20) | |
| self.session_end_label = Label(self.master, text="Your session ends at:", font=('Helvetica', 16)) | |
| self.session_end_label.pack() | |
| self.timer_label = Label(self.master, font=('Helvetica', 48), fg='blue', pady=20) | |
| self.timer_label.pack() | |
| def fetch_time(self): | |
| try: | |
| url = f"https://hackhour.hackclub.com/api/clock/{self.slack_id}" | |
| headers = {'User-Agent': 'Mozilla/5.0'} | |
| response = requests.get(url, headers=headers) | |
| response.raise_for_status() | |
| milliseconds = int(response.text) | |
| return milliseconds | |
| except ValueError: | |
| self.timer_label.config(text="Error parsing response", fg="red") | |
| return None | |
| except requests.RequestException as e: | |
| self.timer_label.config(text="HTTP Request failed", fg="red") | |
| return None | |
| def update_time(self): | |
| milliseconds = self.fetch_time() | |
| if milliseconds is None: | |
| self.timer_label.config(text="Error fetching time!", fg="red") | |
| elif milliseconds == -1: | |
| self.timer_label.config(text="Session inactive.\nType /arcade to activate.", fg="orange") | |
| else: | |
| current_time = int(milliseconds / 1000) | |
| self.timer_label.config(text=time.strftime('%H:%M:%S', time.gmtime(current_time)), fg="black") | |
| self.master.after(1000, self.update_time) | |
| def start_timer(self): | |
| self.slack_id = self.slack_id_entry.get() | |
| if not self.slack_id: | |
| messagebox.showwarning("Warning", "Please provide a Slack ID.") | |
| return | |
| self.update_time() | |
| root = tk.Tk() | |
| app = SlackTimerApp(root) | |
| root.mainloop() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment