28 lines
638 B
Python
28 lines
638 B
Python
|
#!/usr/bin/env python
|
||
|
from struct import calcsize, unpack
|
||
|
from sys import argv, exit
|
||
|
|
||
|
def word_iter(f):
|
||
|
while True:
|
||
|
_bytes = f.read(2)
|
||
|
|
||
|
if len(_bytes) != 2:
|
||
|
raise StopIteration
|
||
|
|
||
|
yield unpack("=h", _bytes)[0]
|
||
|
|
||
|
try:
|
||
|
with open(argv[1], "rb") as f:
|
||
|
wav = "=4ci8cihhiihh4ci"
|
||
|
wav_size = calcsize(wav)
|
||
|
metadata = unpack(wav, f.read(wav_size))
|
||
|
|
||
|
if "".join(metadata[:4]) != "RIFF":
|
||
|
print "error: not wav file."
|
||
|
exit(1)
|
||
|
|
||
|
print sum(abs(word) for word in word_iter(f))
|
||
|
except IOError:
|
||
|
print "error: can't open input file '%s'." % argv[1]
|
||
|
exit(1)
|