#!/usr/bin/python3 from tkinter import * from tkinter import ttk from tkinter.ttk import * from tkinter import messagebox from tkinter.font import Font import subprocess import time import re # simul_cd.py 20220905 # --- default set --- st = 'Simul CD-DA MPlayer' # default play_vol play_vol = 30 # Track s = 1 # --- run --- # play(with terminal) def play_click(): pulse() subprocess.run("xterm -g 100x36+465+19 -e mplayer cdda://:1 -cache 2048 -nolirc 1 &", shell=True) # Track_play def track_play(): pulse() subprocess.run("xterm -g 100x36+465+19 -e mplayer cdda://" + str(s) + ":1 -cache 2048 -nolirc 1 &", shell=True) # play(no terminal) def noterm_play(): pulse() subprocess.run("mplayer cdda://:1 -cache 2048 -nolirc 1 &", shell=True) # pulseaudio def pulse(): subprocess.run("~/bin/killall.sh", shell=True) command = ("ps ax | grep pulseaudio | grep -v grep | awk '{print substr($6,1)}' | cut -b 3-8") proc = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8') proc = proc.strip() if not proc: subprocess.run("sudo runuser -l www-data -c 'pulseaudio --start'", shell=True) time.sleep(1) subprocess.run("pactl set-sink-volume 0 " + str(play_vol) + "%", shell=True) return # eject_click def eject_click(): command = ("ps ax | grep -v grep | grep -m 1 cdda") cdda = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8') if cdda != "": subprocess.run("~/bin/killall.sh", shell=True) time.sleep(1) subprocess.run("eject", shell=True) # Label default def title0(): global st label0 = ttk.Label( frame0, text = st, background=label_bg, foreground=label_fg) label0.grid(row=0,column=1) def title1(): global sr uname = ("uname -a | awk '{print($2,$3)}'") uname = (subprocess.Popen(uname, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8') uname = uname.strip() dpkg = ("dpkg -l | grep -m 1 mplayer | awk '{print($2,$3)}'") dpkg = (subprocess.Popen(dpkg, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8') dpkg = dpkg.strip() sr = ("ls -m /dev/sr* 2>/dev/null") sr = (subprocess.Popen(sr, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8') sr = sr.strip() st1 = (uname + " " + dpkg + " " + sr) label1 = ttk.Label( frame1, text = st1, background=label_bg, foreground=label_fg) label1.grid(row=0,column=1) # Track def tr1_click(): global s; s = 1; track_play() def tr2_click(): global s; s = 2; track_play() def tr3_click(): global s; s = 3; track_play() def tr4_click(): global s; s = 4; track_play() def tr5_click(): global s; s = 5; track_play() def tr6_click(): global s; s = 6; track_play() def tr7_click(): global s; s = 7; track_play() def tr8_click(): global s; s = 8; track_play() def tr9_click(): global s; s = 9; track_play() def tr10_click(): global s; s = 10; track_play() def tr11_click(): global s; s = 11; track_play() def tr12_click(): global s; s = 12; track_play() def tr13_click(): global s; s = 13; track_play() def tr14_click(): global s; s = 14; track_play() def tr15_click(): global s; s = 15; track_play() def tr16_click(): global s; s = 16; track_play() def tr17_click(): global s; s = 17; track_play() def tr18_click(): global s; s = 18; track_play() def tr19_click(): global s; s = 19; track_play() def tr20_click(): global s; s = 20; track_play() # stop def stop_click(): subprocess.run("~/bin/killall.sh", shell=True) # Exit def exit_click(): root.quit() # --- main ---- if __name__ == '__main__': root = Tk() root.title('CD MPlayer') root.configure(background='#333333') # Background color # Font listfont = Font(family="Helvetica",size=9) root.option_add("*Listbox*Font", listfont) root.option_add('*Dialog.msg.font', 'Helvetica 12') # Frame frame0 = ttk.Frame(root, padding=0) frame0.grid() frame1 = ttk.Frame(root, padding=4) frame1.grid() frame2 = ttk.Frame(root, padding=4) frame2.grid() frame3 = ttk.Frame(root, padding=4) frame3.grid() # label0 label_bg='#008B8B' label_fg='#FFFFFF' label0 = ttk.Label( frame0, text = ' ' * 114, background=label_bg, foreground=label_fg) label0.grid(row=0,column=1) title0() # label1 label_bg='#FFFFFF' label_fg='#000000' label1 = ttk.Label( frame1, text = ' ' * 99, background=label_bg, foreground=label_fg) label1.grid(row=0,column=1) title1() # Button color style = Style() style.configure('TButton', width=3, font=('Helvetica', 8), background='#A4DCBF') style.configure('R.TButton', width=5, font=('Helvetica', 9), background='#E6C0D4') style.configure('G.TButton', width=5, font=('Helvetica', 9), background='#A4DCBF') style.configure('B.TButton', width=5, font=('Helvetica', 9), background='#A2CCE7') style.configure('Y.TButton', width=5, font=('Helvetica', 9), background='#FFEFD5') style.configure('P.TButton', width=5, font=('Helvetica', 9), background='#ffffff') style.configure('L.TButton', width=5, font=('Helvetica', 9), background='#C4CAD0') # Button frame1 button = ttk.Button(frame1, text='PLAY', width=5, style='Y.TButton', command=noterm_play) button.grid(row=0, column=0, columnspan=1) button = ttk.Button(frame1, text='--- PLAY CD-DA MPlayer ---', width=40, style='G.TButton', command=play_click) button.grid(row=1, column=1, columnspan=1) # Button frame2 button = ttk.Button(frame2, style='TButton', text='1', command=tr1_click) button.grid(row=0, column=0, columnspan=1) button = ttk.Button(frame2, style='TButton', text='2', command=tr2_click) button.grid(row=0, column=1, columnspan=1) button = ttk.Button(frame2, style='TButton', text='3', command=tr3_click) button.grid(row=0, column=2, columnspan=1) button = ttk.Button(frame2, style='TButton', text='4', command=tr4_click) button.grid(row=0, column=3, columnspan=1) button = ttk.Button(frame2, style='TButton', text='5', command=tr5_click) button.grid(row=0, column=4, columnspan=1) button = ttk.Button(frame2, style='TButton', text='6', command=tr6_click) button.grid(row=0, column=5, columnspan=1) button = ttk.Button(frame2, style='TButton', text='7', command=tr7_click) button.grid(row=0, column=6, columnspan=1) button = ttk.Button(frame2, style='TButton', text='8', command=tr8_click) button.grid(row=0, column=7, columnspan=1) button = ttk.Button(frame2, style='TButton', text='9', command=tr9_click) button.grid(row=0, column=8, columnspan=1) button = ttk.Button(frame2, style='TButton', text='10', command=tr10_click) button.grid(row=0, column=9, columnspan=1) button = ttk.Button(frame2, style='TButton', text='11', command=tr11_click) button.grid(row=0, column=10, columnspan=1) button = ttk.Button(frame2, style='TButton', text='12', command=tr12_click) button.grid(row=0, column=11, columnspan=1) button = ttk.Button(frame2, style='TButton', text='13', command=tr13_click) button.grid(row=0, column=12, columnspan=1) button = ttk.Button(frame2, style='TButton', text='14', command=tr14_click) button.grid(row=0, column=13, columnspan=1) # Button frame3 button = ttk.Button(frame3, style='TButton', text='15', command=tr15_click) button.grid(row=0, column=0, columnspan=1) button = ttk.Button(frame3, style='TButton', text='16', command=tr16_click) button.grid(row=0, column=1, columnspan=1) button = ttk.Button(frame3, style='TButton', text='17', command=tr17_click) button.grid(row=0, column=2, columnspan=1) button = ttk.Button(frame3, style='TButton', text='18', command=tr18_click) button.grid(row=0, column=3, columnspan=1) button = ttk.Button(frame3, style='TButton', text='19', command=tr19_click) button.grid(row=0, column=4, columnspan=1) button = ttk.Button(frame3, style='TButton', text='20', command=tr20_click) button.grid(row=0, column=5, columnspan=1) button = ttk.Button(frame3, width=9, style='R.TButton', text='Eject', command=eject_click) button.grid(row=0, column=6, columnspan=1) button = ttk.Button(frame3, width=9, style='Y.TButton', text='STOP', command=stop_click) button.grid(row=0, column=7, columnspan=1) button = ttk.Button(frame3, width=10, style='L.TButton', text='EXIT', command=exit_click) button.grid(row=0, column=8, columnspan=1) # Not CD Drive if not sr: messagebox.showinfo('simul radio', 'CD Drive Not Found') root.mainloop()