C�digo de Python - Editor de audio.
from tkinter import *
from tkinter import filedialog, messagebox
import [Link] as sct
import os
from pygame import mixer
import threading
from pydub import AudioSegment
class editor():
def __init__(self):
[Link] = Tk()
[Link]('923x375')
[Link]("Audio Editor")
[Link](bg="gray28")
[Link] = StringVar()
[Link]([Link]())
[Link] = StringVar()
[Link] = ""
[Link] = ""
[Link] = False
[Link]()
Entry([Link],textvariable=[Link],width=153).place(x=0,y=0)
Label([Link],text="AUDIO TITLE",fg="white",bg="gray28").place(x=10,y=30)
[Link] =
Entry([Link],textvariable=[Link],bg="black",fg="green",width=34,font=('a
rial 24'))
[Link](x=10,y=53)
#[Link] =
Entry([Link],textvariable=[Link],width=13,font=('arial
20'),bg="black",fg="red").place(x=690,y=53)
#Label([Link],text="DURATION(MINUTES)").place(x=690,y=30)
Button([Link],text="SEARCH AUDIO
FILE",width=86,height=2,bg="gray70",command=self.open_file).place(x=12,y=100)
Button([Link],text="EXPORT AS
.AU",width=15,height=2,bg="red",fg="white",command=lambda:self.init_task("au")).pla
ce(x=650,y=177)
Button([Link],text="EXPORT AS
.AAC",width=15,height=2,bg="red",fg="white",command=lambda:self.init_task("aac")).p
lace(x=797,y=301)#.place(x=797,y=53)
Button([Link],text="EXPORT AS
.MP4",width=15,height=2,bg="red",fg="white",command=lambda:self.init_task("mp4")).p
lace(x=650,y=301)#.place(x=650,y=115)
Button([Link],text="EXPORT AS
.MP2",width=15,height=2,bg="red",fg="white",command=lambda:self.init_task("mp2")).p
lace(x=797,y=239)#.place(x=797,y=115)
Button([Link],text="EXPORT AS
.OGG",width=15,height=2,bg="red",fg="white",command=lambda:self.init_task("ogg")).p
lace(x=650,y=239)#.place(x=650,y=177)
Button([Link],text="EXPORT AS
.FLV",width=15,height=2,bg="red",fg="white",command=lambda:self.init_task("flv")).p
lace(x=797,y=177)#.place(x=797,y=177)
Button([Link],text="EXPORT AS
.MP3",width=15,height=2,bg="red",fg="white",command=lambda:self.init_task("mp3")).p
lace(x=650,y=115)#.place(x=650,y=239)
Button([Link],text="EXPORT AS
.WAV",width=15,height=2,bg="red",fg="white",command=lambda:self.init_task("wav")).p
lace(x=797,y=115)#.place(x=797,y=239)
[Link] = Button([Link],text="PLAY
AUDIO",width=36,height=2,bg="gray70",command=self.init_task2)
[Link](x=650,y=53)#.place(x=650,y=301)
Button([Link],text="REVERSE AUDIO",width=35,height=2,bg="light
green",command=self.reverse_audio).place(x=12,y=177)
Button([Link],text="CLEAR CHANGES",width=35,height=2,bg="light
green",command=self.clear_changes).place(x=12,y=239)
Button([Link],text="HISTORY",width=35,height=2,bg="light
green",command=self.show_history).place(x=12,y=301)
[Link] = Label([Link],text="",width=86,bg="gray28",fg="light
blue")
[Link](x=14,y=148)
[Link] = Scale([Link],length=130,bg="gray25",fg="white",from_=2.00,
to=0.01, digits = 3, resolution = 0.01)
[Link](1.00)
[Link](x=290,y=207)
Label([Link],text="SPEED",fg="white",bg="gray28").place(x=295,y=180)
self.slider1 = Scale([Link],length=130,bg="gray25",fg="white",from_=50,
to=-50)
[Link](1)
[Link](x=360,y=207)
Label([Link],text="VOLUME",fg="white",bg="gray28").place(x=357,y=180)
self.slider2 = Scale([Link],length=130,bg="gray25",fg="white",from_=50,
to=1)
[Link](x=437,y=207)
Label([Link],text="GAIN",fg="white",bg="gray28").place(x=438,y=180)
self.slider3 = Scale([Link],bg="gray25",fg="white",length=130,
from_=1000, to=1)
[Link](x=510,y=207)
Label([Link],text="FADE IN",fg="white",bg="gray28").place(x=505,y=180)
self.slider4 = Scale([Link],bg="gray25",fg="white",length=130,
from_=1000, to=1)
[Link](x=580,y=207)
Label([Link],text="FADE OUT",fg="white",bg="gray28").place(x=570,y=180)
[Link]()
def open_file(self):
[Link](text="")
self.audio_file = [Link](initialdir = "/",
title="Select audio",filetypes = (("mp3 files","*.mp3"),
("wav files","*.wav"),("ogg files","*.ogg"),
("flv files","*.flv"),("mp4 files","*.mp4")))
if self.audio_file != "":
self.audio_f = (self.audio_file.split("/"))[-1]
[Link],[Link] = [Link](self.audio_f)
[Link](self.audio_f)
self.import_audio()
def change_audio_characts(self,mode):
[Link](text="")
speed = [Link]()
if mode == "save":
[Link] = ([Link]._spawn([Link].raw_data,
overrides={"frame_rate": int([Link].frame_rate *
speed)})).fade_out([Link]()).fade_in([Link]()
).apply_gain([Link]())+[Link]()
else:
self.prev_audio = ([Link]._spawn([Link].raw_data,
overrides={"frame_rate": int([Link].frame_rate *
speed)})).fade_out([Link]()).fade_in([Link]()
).apply_gain([Link]())+[Link]()
return ([Link].set_frame_rate([Link].frame_rate))
def play_audio(self):
if [Link] != "":
if "[Link]" in [Link]():
[Link]()
[Link]("[Link]")
[Link](text="PLAYING")
self.change_audio_characts("display")
self.prev_audio.export("[Link]",format="wav")
pos_time = [Link].get_pos()
[Link]("[Link]")
[Link]()
self.update_state()
[Link] = [Link]+("---->PLAYED PREVIEW AUDIO.\n")
def update_state(self):
pos_time = [Link].get_pos()
if pos_time != -1:
[Link](text="STOP AUDIO")
[Link](command=self.stop_audio)
print("PLAYING")
[Link](500, self.update_state)
else:
print("NOT PLAYING")
[Link](text="PLAY AUDIO")
[Link](command=self.play_audio)
[Link].after_cancel(self.update_state)
#[Link]()
def stop_audio(self):
[Link]()
[Link](text="PLAY AUDIO")
[Link](command=self.play_audio)
def init_task2(self):
t = [Link](target=self.play_audio)
[Link]()
def show_history(self):
if [Link] != "":
top = Toplevel()
[Link]("EDITION HISTORY")
[Link] =
[Link](master=top,width=90,height=30,bg="gray91")
[Link](padx=0,pady=0)
[Link](END,[Link])
Button(top,text="CLEAR
HISTORY",bg="gray70",command=self.clear_history).pack(side=BOTTOM)
def clear_history(self):
[Link]('1.0',END)
def clear_changes(self):
if [Link] != "":
[Link] = self.original_audio
[Link](1.00)
[Link](1)
[Link](1)
[Link](1)
[Link](1)
[Link](text="RESTORED ORIGINAL AUDIO")
[Link] = [Link]+("---->RESTORED ORIGINAL AUDIO.\n")
def init_task(self,ex):
if [Link] != "":
[Link] = ex
t = [Link](target=self.export_audio)
[Link]()
def reverse_audio(self):
if [Link] != "":
try:
[Link] = [Link]()
[Link]=[Link]+"---->AUDIO REVERSED.\n"
[Link](text="REVERSED")
except Exception as e:
[Link]("UNEXPECTED ERROR",str(e))
[Link] = [Link]+("---->UNEXPECTED ERROR:
{}.".format(str(e)))+"\n"
def export_audio(self):
[Link](text="SAVING FILE")
try:
self.change_audio_characts("save")
[Link] = [Link]+"---->APPLIED AUDIO CHARACTS.\n"
file =
[Link](initialdir="/",initialfile=[Link],
title="SAVE AS",defaultextension="."+[Link])
if file != "":
[Link](file,format=[Link])
file_saved = (file).split("/")[-1]
[Link]("SAVED FILE","Saved file as:
{}.".format(file_saved))
[Link] = [Link]+("---->SAVED FILE AS:
{}.".format(file_saved))+"\n"
except Exception as e:
[Link]("UNEXPECTED ERROR",str(e))
[Link]=[Link]+"---->UNEXPECTED ERROR: {}\n".format(str(e))
[Link](text="")
def import_audio(self):
try:
if [Link] == ".mp3":
[Link] = AudioSegment.from_mp3(self.audio_file)
elif [Link] == ".wav":
[Link] = AudioSegment.from_wav(self.audio_file)
elif [Link] == ".ogg":
[Link] = AudioSegment.from_ogg(self.audio_file)
elif [Link] == ".flv":
[Link] = AudioSegment.from_flv(self.audio_file)
else:
[Link] = AudioSegment.from_file(self.audio_file)
[Link] = [Link]+("\n-->LOADED: {}.".format(self.audio_f))
+"\n"
self.original_audio = [Link]
except Exception as e:
[Link]("UNEXPECTED ERROR",str(e))
[Link] = [Link]+("---->UNEXPECTED ERROR:
{}.".format(str(e)))+"\n"
[Link] = ""
if __name__=="__main__":
editor()