Progress!
This commit is contained in:
parent
546fdf8e6b
commit
8b0c6f5020
129
Pi-Recorder.py
129
Pi-Recorder.py
@ -1,11 +1,15 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
|
||||||
from ntpath import altsep
|
|
||||||
import os
|
import os
|
||||||
|
import subprocess
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
def checkUSB():
|
def run_command(command):
|
||||||
|
ret_code, output = subprocess.getstatusoutput(command)
|
||||||
|
return output.splitlines()
|
||||||
|
|
||||||
|
def check_usb():
|
||||||
stream = os.popen('lsusb | grep "Audio" | cut -d" " -f7')
|
stream = os.popen('lsusb | grep "Audio" | cut -d" " -f7')
|
||||||
output = stream.read()
|
output = stream.read()
|
||||||
if (output.find("PreSonus") != -1):
|
if (output.find("PreSonus") != -1):
|
||||||
@ -13,7 +17,7 @@ def checkUSB():
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def checkRecordStatus():
|
def check_record_status():
|
||||||
stream = os.popen('screen -list | grep -c "Pi-ARecord" || true')
|
stream = os.popen('screen -list | grep -c "Pi-ARecord" || true')
|
||||||
output = stream.read()
|
output = stream.read()
|
||||||
if (output.find("1")):
|
if (output.find("1")):
|
||||||
@ -22,12 +26,12 @@ def checkRecordStatus():
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def record():
|
def record():
|
||||||
if checkRecordStatus():
|
if check_record_status():
|
||||||
os.system('screen -S record -X stuff "^C"')
|
os.system('screen -S record -X stuff "^C"')
|
||||||
btn_record_var.set('Start Recording')
|
btn_record_var.set('Start Recording')
|
||||||
else:
|
else:
|
||||||
if (checkUSB()):
|
if (check_usb()):
|
||||||
os.system('screen -S record -d -m arecord -D plughw:2,0 -f dat -vv /home/pi/test_input.wav')
|
os.system('screen -S record -d -m arecord -D plughw:2,0 -f dat -vv /mnt/USB/test_input.wav')
|
||||||
btn_record_var.set('Stop Recording')
|
btn_record_var.set('Stop Recording')
|
||||||
else:
|
else:
|
||||||
btn_record_var.set('PreSonus N/A')
|
btn_record_var.set('PreSonus N/A')
|
||||||
@ -35,6 +39,10 @@ def record():
|
|||||||
### tkinter variables
|
### tkinter variables
|
||||||
run_tk = True
|
run_tk = True
|
||||||
light_mode = True
|
light_mode = True
|
||||||
|
is_mounted = False
|
||||||
|
mount_directory = '/mnt/USB/'
|
||||||
|
record_start_time = None
|
||||||
|
record_current_time = None
|
||||||
|
|
||||||
### tkinter theme
|
### tkinter theme
|
||||||
btn_light_color = '#BA09C6'
|
btn_light_color = '#BA09C6'
|
||||||
@ -45,21 +53,89 @@ text_light_color = '#000000'
|
|||||||
text_dark_color = '#adadad'
|
text_dark_color = '#adadad'
|
||||||
|
|
||||||
### tkinter functions
|
### tkinter functions
|
||||||
def onExit():
|
def on_exit():
|
||||||
global run_tk
|
global run_tk
|
||||||
if checkRecordStatus():
|
if check_record_status():
|
||||||
record()
|
record()
|
||||||
run_tk = False
|
run_tk = False
|
||||||
main_window.destroy()
|
main_window.destroy()
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
def btnRecord():
|
def restart_ar():
|
||||||
|
global run_tk
|
||||||
|
if check_record_status():
|
||||||
record()
|
record()
|
||||||
|
run_tk = False
|
||||||
|
main_window.destroy()
|
||||||
|
exit()
|
||||||
|
|
||||||
|
def btn_record_func():
|
||||||
|
record()
|
||||||
|
|
||||||
|
def btn_mount_func():
|
||||||
|
drives = run_command("lsblk | grep 'sda1'")
|
||||||
|
if is_mounted:
|
||||||
|
run_command("sudo umount /dev/sda1")
|
||||||
|
else:
|
||||||
|
command = "sudo mount /dev/sda1 %s" % (mount_directory)
|
||||||
|
run_command(command)
|
||||||
|
|
||||||
|
def calculate_timer():
|
||||||
|
global record_start_time
|
||||||
|
global record_current_time
|
||||||
|
if check_record_status():
|
||||||
|
record_current_time = datetime.now()
|
||||||
|
record_elapsed = record_current_time - record_start_time
|
||||||
|
label_record_timer_var.set("%02d:%02d:%02d" % (record_elapsed.seconds // 3600, record_elapsed.seconds // 60 % 60, record_elapsed.seconds % 60))
|
||||||
|
|
||||||
|
def check_mount_status():
|
||||||
|
global is_mounted
|
||||||
|
try:
|
||||||
|
mounted_drives = run_command("lsblk | grep 'USB'")
|
||||||
|
if mounted_drives[0].find("USB") != -1:
|
||||||
|
is_mounted = True
|
||||||
|
btn_mount_var.set("Unmount USB")
|
||||||
|
except:
|
||||||
|
is_mounted = False
|
||||||
|
btn_mount_var.set("Mount USB")
|
||||||
|
|
||||||
|
def check_remaining_space():
|
||||||
|
if is_mounted:
|
||||||
|
try:
|
||||||
|
drive = run_command("df -h %s | grep 'USB'" % (mount_directory))[0].split()
|
||||||
|
space = ("Used: %s, Remaining: %s, Percentage: %s" % (drive[2], drive[3], drive[4]))
|
||||||
|
label_mount_space_var.set(space)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
label_mount_space_var.set("Used: ???, Remaining: ???, Percentage: ???")
|
||||||
|
|
||||||
|
def toggle_gui_func():
|
||||||
|
global light_mode
|
||||||
|
if light_mode:
|
||||||
|
main_window.configure(background=bg_dark_color)
|
||||||
|
btn_record.configure(bg=btn_dark_color, foreground=text_dark_color)
|
||||||
|
btn_mount.configure(bg=btn_dark_color, foreground=text_dark_color)
|
||||||
|
#shutdown_btn.configure(bg=btn_dark_color, foreground=text_dark_color)
|
||||||
|
btn_exit.configure(bg=btn_dark_color, foreground=text_dark_color)
|
||||||
|
btn_restart.configure(bg=btn_dark_color, foreground=text_dark_color)
|
||||||
|
btn_lightmode.configure(bg=btn_dark_color, foreground=text_dark_color)
|
||||||
|
light_mode = False
|
||||||
|
else:
|
||||||
|
main_window.configure(background=bg_light_color)
|
||||||
|
btn_record.configure(bg=btn_light_color, foreground=text_light_color)
|
||||||
|
btn_mount.configure(bg=btn_light_color, foreground=text_light_color)
|
||||||
|
#btn_shutdown.configure(bg=btn_light_color, foreground=text_light_color)
|
||||||
|
btn_exit.configure(bg=btn_light_color, foreground=text_light_color)
|
||||||
|
btn_restart.configure(bg=btn_light_color, foreground=text_light_color)
|
||||||
|
btn_lightmode.configure(bg=btn_light_color, foreground=text_light_color)
|
||||||
|
light_mode = True
|
||||||
|
|
||||||
|
|
||||||
### tkinter main window setup
|
### tkinter main window setup
|
||||||
main_window = Tk()
|
main_window = Tk()
|
||||||
main_window.attributes("-fullscreen", False)
|
main_window.attributes("-fullscreen", False)
|
||||||
main_window.protocol("WM_DELETE_WINDOW", onExit)
|
main_window.protocol("WM_DELETE_WINDOW", on_exit)
|
||||||
main_window.configure(background=bg_light_color)
|
main_window.configure(background=bg_light_color)
|
||||||
main_window.title("Momo\'s Awesome Recorder")
|
main_window.title("Momo\'s Awesome Recorder")
|
||||||
main_window.columnconfigure(0, weight=1)
|
main_window.columnconfigure(0, weight=1)
|
||||||
@ -68,9 +144,38 @@ main_window.columnconfigure(2, weight=1)
|
|||||||
### tkinter record button
|
### tkinter record button
|
||||||
btn_record_var = tk.StringVar()
|
btn_record_var = tk.StringVar()
|
||||||
btn_record_var.set('Start Recording')
|
btn_record_var.set('Start Recording')
|
||||||
btn_record = Button(main_window, textvariable=btn_record_var, bg=btn_light_color, command=btnRecord)
|
btn_record = Button(main_window, textvariable=btn_record_var, bg=btn_light_color, command=btn_record_func)
|
||||||
btn_record.grid(column=0, row=0, sticky='NSEW', padx=5, pady=5)
|
btn_record.grid(column=0, row=0, sticky='NSEW', padx=5, pady=5)
|
||||||
|
### tkinter record timer
|
||||||
|
label_record_timer_var = tk.StringVar()
|
||||||
|
label_record_timer_var.set("00:00:00")
|
||||||
|
label_record_timer = Label(main_window, textvariable=label_record_timer_var, font=('arial', 18, 'bold'))
|
||||||
|
label_record_timer.grid(column=0, row=2, sticky='NSEW', padx=5, pady=5)
|
||||||
|
### tkinter mount button
|
||||||
|
btn_mount_var = tk.StringVar()
|
||||||
|
btn_mount_var.set('Mount USB')
|
||||||
|
btn_mount = Button(main_window, textvariable=btn_mount_var, bg=btn_light_color, command=btn_mount_func)
|
||||||
|
btn_mount.grid(column=1, row=0, sticky='NSEW', padx=5, pady=5)
|
||||||
|
### tkinter usb remaining space
|
||||||
|
label_mount_space_var = tk.StringVar()
|
||||||
|
label_mount_space_var.set("Used: ???, Remaining: ???, Percentage: ???")
|
||||||
|
label_mount_space = Label(main_window, textvariable=label_mount_space_var, font=('arial', 18, 'bold'))
|
||||||
|
label_mount_space.grid(column=1, row=1, sticky='NSEW', padx=5, pady=5)
|
||||||
|
### tkinter exit program
|
||||||
|
btn_exit = Button(main_window, text='Exit Recorder', bg=btn_light_color, command=on_exit)
|
||||||
|
btn_exit.grid(column=2, row=1, sticky='NSEW', padx=5, pady=5)
|
||||||
|
### tkinter restart program
|
||||||
|
btn_restart = Button(main_window, text='Restart Recorder', bg=btn_light_color, command=restart_ar)
|
||||||
|
btn_restart.grid(column=2, row=2, sticky='NSEW', padx=5, pady=5)
|
||||||
|
### tkinter lightmode button
|
||||||
|
btn_lightmode_var = tk.StringVar()
|
||||||
|
btn_lightmode_var.set("Go Dark")
|
||||||
|
btn_lightmode = Button(main_window, textvariable=btn_lightmode_var, bg=btn_light_color, command=toggle_gui_func)
|
||||||
|
btn_lightmode.grid(column=1, row=2, sticky='NSEW', padx=5, pady=5)
|
||||||
|
|
||||||
while run_tk:
|
while run_tk:
|
||||||
main_window.update_idletasks()
|
main_window.update_idletasks()
|
||||||
main_window.update()
|
main_window.update()
|
||||||
|
calculate_timer()
|
||||||
|
check_mount_status()
|
||||||
|
check_remaining_space()
|
||||||
|
Loading…
Reference in New Issue
Block a user