first commit

This commit is contained in:
Charlie 2025-03-02 19:20:39 +13:00
commit 18e3c0bf6d
11 changed files with 110 additions and 0 deletions

BIN
-demo songs-/Jumper.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
README.md Normal file

Binary file not shown.

BIN
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

110
main.py Normal file
View file

@ -0,0 +1,110 @@
from tkinter import *
from tkinter import filedialog
import pygame
import os
root = Tk()
root.title("RASPMP3")
root.geometry("600x400")
#programIcon = pygame.image.load('icon.png')
#pygame.display.set_icon(programIcon)
pygame.mixer.init()
menubar = Menu(root)
root.config(menu=menubar)
songs = []
current_song = ""
paused = False
def load_music():
global current_song
root.directory = filedialog.askdirectory()
for song in os.listdir(root.directory):
name, ext = os.path.splitext(song)
if ext == ".mp3":
songs.append(song)
for song in songs:
songList.insert(END, song)
songList.selection_set(0)
current_song = songs[songList.curselection()[0]]
def play_music():
global current_song, paused
if not paused:
pygame.mixer.music.load(os.path.join(root.directory, current_song))
pygame.mixer.music.play()
else:
pygame.mixer.music.unpause()
paused = False
def pause_music():
global paused
pygame.mixer.music.pause()
paused = True
def next_music():
global current_song, paused
try:
songList.selection_clear(0, END)
next_index = songs.index(current_song) + 1
if next_index < len(songs):
songList.selection_set(next_index)
current_song = songs[songList.curselection()[0]]
play_music()
else:
# Handle the case when the current song is the last in the list
songList.selection_set(0)
current_song = songs[0]
play_music()
except IndexError:
pass
def previous_music():
global current_song, paused
try:
songList.selection_clear(0, END)
prev_index = songs.index(current_song) - 1
if prev_index >= 0:
songList.selection_set(prev_index)
current_song = songs[songList.curselection()[0]]
play_music()
else:
# Handle the case when the current song is the first in the list
songList.selection_set(len(songs) - 1)
current_song = songs[-1]
play_music()
except IndexError:
pass
organize_menu = Menu(menubar, tearoff=False)
organize_menu.add_command(label="Open Folder", command=load_music)
menubar.add_cascade(label="Songs", menu=organize_menu)
songList = Listbox(root, bg="black", fg="white", width=100, height=15)
songList.pack()
control_frame = Frame(root)
control_frame.pack()
play_btn_img = PhotoImage(file="play.png")
pause_btn_img = PhotoImage(file="pause.png")
next_btn_img = PhotoImage(file="next.png")
previous_btn_img = PhotoImage(file="previous.png")
play_btn = Button(control_frame, image=play_btn_img, borderwidth=0, command=play_music)
pause_btn = Button(control_frame, image=pause_btn_img, borderwidth=0, command=pause_music)
next_btn = Button(control_frame, image=next_btn_img, borderwidth=0, command=next_music)
previous_btn = Button(control_frame, image=previous_btn_img, borderwidth=0, command=previous_music)
play_btn.grid(row=0, column=1, padx=7, pady=10)
pause_btn.grid(row=0, column=2, padx=7, pady=10)
next_btn.grid(row=0, column=3, padx=7, pady=10)
previous_btn.grid(row=0, column=0, padx=7, pady=10)
root.mainloop()

BIN
next.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
pause.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
play.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
previous.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB