Analyse audio avec python
import pyaudio
from numpy import fromstring
#fenetre
from Tkinter import *
fen = Tk()
close = Button(fen,text="fermer",command=fen.quit)
can = Canvas(fen, width=400,height=200,bg="grey")
can.pack(side=TOP,padx=5,pady=5)
close.pack(side=BOTTOM,pady=12)
#fonctions
num=0
def affiche():
time=[]
time = getAudioData()
global can, lines
n,m,o=0,0,0
if len(lines)==0 :
for a in time:
val = (a*200)+100
lines.append(can.create_line(o,m,n,val,fill="blue"))
m=val
o=n
n+=1
else :
for a in time:
val = (a*200)+100
can.coords(lines[n],o,m,n,val)
m=val
o=n
n+=1
fen.after(1,affiche)
def getAudioData():
rate=1024
p = pyaudio.PyAudio()
inStream = p.open(format=pyaudio.paInt16, channels=1, rate=44100,
input=True, frames_per_buffer=rate)
audio_data = fromstring(inStream.read(rate), dtype=short)
normalized_data = audio_data / 32768.0
return normalized_data
print "enregistrement"
lines = []
affiche()
fen.mainloop()
l'idée c'est bel et bien récuperrer un buffer de la bande audio
puis d'en faire une mini analyse, histoire de se faire plaisir ; tout simplement !!
scanner tout les liens en Python
simpa cette petite librairie urllib !!!
def getLink(url):
import urllib
str=[]
htmlSource = urllib.urlopen(url).read(200000)
for chunk in htmlSource.lower().split('href=')[1:]:
indexes = [i for i in [chunk.find('"',1),chunk.find('>'),chunk.find(' ')] if i>-1]
str.append(chunk[:min(indexes)])
return str
ce code retourne un tableau avec tout les liens du site ;
Problème : il retourne aussi les liens avec les images ; le mieux serait ainsi :
def getLink2(url):
import urllib
str=[]
ext = ['.gif','.png','.jpg','.bmp','.css']
htmlSource = urllib.urlopen(url).read()
for chunk in htmlSource.lower().split('href=')[1:]:
indexes = [i for i in [chunk.find('"',1),chunk.find('>'),chunk.find(' ')] if i>-1]
link = chunk[:min(indexes)]
link = link.replace("'","")
if link[0]=='"':link=link[1:]
if link[-1]=='"':link=link[:1]
if url[-1]!="/":url+="/"
if link[0]=="/":
link = url+link[1:]
if link != "#":
if not link[-4:] in ext :
str.append(link)
return str
on évitera aussi les ancres, les liens nuls, etc ..