add pynma and postgres
[scannr.git] / scannr.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import snd
import time
from datetime import date
import threading
from pydispatch import dispatcher
import wave
import psycopg2
import sys,os
 
 
sys.path.insert(0, os.path.join(os.path.dirname(__file__) or '.', 'pynma'))
import pynma
 
filename = "demo.wav"
nma = pynma.PyNMA( "apikey(s)", "developerkey")    
conn = psycopg2.connect("dbname=test user=postgres")
 
def worker(filename):
 
    """thread worker function
    http://www.doughellmann.com/PyMOTW/threading/
 
    https://github.com/uskr/pynma
 
http://stackoverflow.com/questions/1092531/event-system-in-python """
    print 'Worker for '+filename
    """nma.push(application, event, description, (opt) url,)"""
    """http://initd.org/psycopg/docs/usage.html"""
    #cur = conn.cursor()
    #cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)",(100, "abc'def"))
    #conn.commit()
    #cur.close()
 
    return
 
def filenameMaker():
    global filename
    filename = date.today().isoformat()+'-'+str(time.time())+'-demo.wav'
 
def record_to_async_file():
    "Records from the microphone and outputs the resulting data to `path`"
    sample_width, data = snd.record()
    data = snd.pack('<' + ('h'*len(data)), *data)
    path = filename
    dispatcher.send( signal='FILE_CREATED', sender=filename, filename=filename)
    wf = wave.open(path, 'wb')
    wf.setnchannels(1)
    wf.setsampwidth(sample_width)
    wf.setframerate(snd.RATE)
    wf.writeframes(data)
    wf.close()
    print("done - result written to "+path)
 
dispatcher.connect( filenameMaker, signal='SND_STARTED', sender=dispatcher.Any )
dispatcher.connect( worker, signal='FILE_CREATED', sender=dispatcher.Any )
print "Scannr started..."
while True:
    print "ready to record"
    record_to_async_file()