diff --git a/RunScript.vbs b/RunScript.vbs new file mode 100644 index 0000000..28e814a --- /dev/null +++ b/RunScript.vbs @@ -0,0 +1 @@ +CreateObject("Wscript.Shell").Run "runner.bat",0,True \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..038e024 --- /dev/null +++ b/main.py @@ -0,0 +1,98 @@ +import spotipy +from spotipy.oauth2 import SpotifyOAuth +import tkinter as tk +from tkinter import ttk +from PIL import Image, ImageTk +import json + +config = {} +with open("config.json", 'r') as file: + config = json.load(file) + +# Set up Spotipy OAuth with your Spotify API credentials +scope = config["scope"] +client_id = config['client_id'] +client_secret = config["client_secret"] +redirect_uri = config["redirect_uri"] + +sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=client_id, client_secret=client_secret, redirect_uri=redirect_uri, scope=scope)) + +SCREEN_WIDTH = 2560 +SCREEN_HEIGHT = 1440 +WINDOW_HEIGHT = 40 +WINDOW_WIDTH = 900 + +fetch_interval = 1000 + +class SpotifyWindow(tk.Tk): + def __init__(self): + super().__init__() + + # Configure window + self.title("Spotify Taskbar") + self.geometry(f"{WINDOW_WIDTH}x{WINDOW_HEIGHT}+0+{SCREEN_HEIGHT - WINDOW_HEIGHT}") + self.overrideredirect(True) + self.wm_attributes("-topmost", True) + self.configure(background='#141414') + + # Make window transparent + self.wm_attributes("-transparentcolor", "#141414") + + # Load and display Spotify logo + self.logo_image = Image.open("spotify_logo.png") + self.logo_image = self.logo_image.resize((30, 30)) + self.logo_photo = ImageTk.PhotoImage(self.logo_image) + self.logo_label = tk.Label(self, image=self.logo_photo, bg="#141414") + self.logo_label.pack(side="left", padx=5, pady=5) + + # Song info label + self.song_label = tk.Label(self, text="Loading...", font=("Arial", 8), fg="white", bg="#141414") + self.song_label.pack(side="top", anchor="w", padx=5, pady=0) + + # Custom style for the progress bar + style = ttk.Style() + style.theme_use('default') + style.configure("TProgressbar", + thickness=5, + troughcolor='#457e59', + background='#1DB954', + troughrelief='flat', + bordercolor='#141414') + + # Playback bar + self.playback_bar = ttk.Progressbar(self, orient="horizontal", length=WINDOW_WIDTH / 4, mode="determinate", style="TProgressbar") + self.playback_bar.pack(side="top", anchor="w", padx=5, pady=0) + + # Update song info periodically + self.update_song_info() + + def update_song_info(self): + try: + current_playback = sp.current_playback() + if current_playback and "is_playing" in current_playback: + if current_playback["is_playing"]: + track_name = current_playback["item"]["name"] + artist_name = current_playback["item"]["artists"][0]["name"] + current_time = current_playback["progress_ms"] + max_time = current_playback["item"]["duration_ms"] + + self.song_label.config(text=f"{artist_name} - {track_name}") + self.playback_bar["value"] = (current_time / max_time) * 100 + else: + self.not_playing() + else: + self.not_playing() + except Exception as e: + print(e) + self.not_playing() + + # Increase the delay to 5000 milliseconds (5 seconds) + self.after(fetch_interval, self.update_song_info) + + def not_playing(self): + self.song_label.config(text=f"Not Playing Anything :(") + self.playback_bar["value"] = 0 + +if __name__ == "__main__": + app = SpotifyWindow() + app.mainloop() \ No newline at end of file diff --git a/runner.bat b/runner.bat new file mode 100644 index 0000000..52a0e47 --- /dev/null +++ b/runner.bat @@ -0,0 +1,2 @@ +@echo off +python main.py \ No newline at end of file diff --git a/spotify_logo.png b/spotify_logo.png new file mode 100644 index 0000000..e260eb2 Binary files /dev/null and b/spotify_logo.png differ