Commit 6faacd3b authored by Georg Brandl's avatar Georg Brandl

Update README, remove obsolete script.

parent d3f467ac
...@@ -2,21 +2,21 @@ This directory contains a collection of executable Python scripts. ...@@ -2,21 +2,21 @@ This directory contains a collection of executable Python scripts.
See also the Tools/scripts directory! See also the Tools/scripts directory!
beer.py Print the classic 'bottles of beer' list beer.py Print the classic 'bottles of beer' list
eqfix.py Fix .py files to use the correct equality test operator eqfix.py Fix .py files to use the correct equality test operator
fact.py Factorize numbers fact.py Factorize numbers
find-uname.py Search for Unicode characters using regexps find-uname.py Search for Unicode characters using regexps
from.py Summarize mailbox from.py Summarize mailbox
lpwatch.py Watch BSD line printer queues lpwatch.py Watch BSD line printer queues
makedir.py Like mkdir -p makedir.py Like mkdir -p
markov.py Markov chain simulation of words or characters markov.py Markov chain simulation of words or characters
mboxconvert.py Convert MH or MMDF mailboxes to unix mailbox format mboxconvert.py Convert MH or MMDF mailboxes to unix mailbox format
morse.py Produce morse code (as an AIFF file) morse.py Produce morse code (as an AIFF file)
newslist.py List all newsgroups on a NNTP server as HTML pages newslist.py List all newsgroups on a NNTP server as HTML pages
pi.py Print all digits of pi -- given enough time and memory pi.py Print all digits of pi -- given enough time and memory
pp.py Emulate some Perl command line options pp.py Emulate some Perl command line options
primes.py Print prime numbers primes.py Print prime numbers
queens.py Dijkstra's solution to Wirth's "N Queens problem" queens.py Dijkstra's solution to Wirth's "N Queens problem"
script.py Equivalent to BSD script(1) -- by Steen Lumholt script.py Equivalent to BSD script(1) -- by Steen Lumholt
unbirthday.py Print unbirthday count unbirthday.py Print unbirthday count
update.py Update a bunch of files according to a script. update.py Update a bunch of files according to a script
"""Convert "arbitrary" sound files to AIFF (Apple and SGI's audio format).
Input may be compressed.
Uncompressed file type may be AIFF, WAV, VOC, 8SVX, NeXT/Sun, and others.
An exception is raised if the file is not of a recognized type.
Returned filename is either the input filename or a temporary filename;
in the latter case the caller must ensure that it is removed.
Other temporary files used are removed by the function.
"""
import os
import tempfile
import pipes
import sndhdr
__all__ = ["error", "toaiff"]
table = {}
t = pipes.Template()
t.append('sox -t au - -t aiff -r 8000 -', '--')
table['au'] = t
# XXX The following is actually sub-optimal.
# XXX The HCOM sampling rate can be 22k, 22k/2, 22k/3 or 22k/4.
# XXX We must force the output sampling rate else the SGI won't play
# XXX files sampled at 5.5k or 7.333k; however this means that files
# XXX sampled at 11k are unnecessarily expanded.
# XXX Similar comments apply to some other file types.
t = pipes.Template()
t.append('sox -t hcom - -t aiff -r 22050 -', '--')
table['hcom'] = t
t = pipes.Template()
t.append('sox -t voc - -t aiff -r 11025 -', '--')
table['voc'] = t
t = pipes.Template()
t.append('sox -t wav - -t aiff -', '--')
table['wav'] = t
t = pipes.Template()
t.append('sox -t 8svx - -t aiff -r 16000 -', '--')
table['8svx'] = t
t = pipes.Template()
t.append('sox -t sndt - -t aiff -r 16000 -', '--')
table['sndt'] = t
t = pipes.Template()
t.append('sox -t sndr - -t aiff -r 16000 -', '--')
table['sndr'] = t
uncompress = pipes.Template()
uncompress.append('uncompress', '--')
class error(Exception):
pass
def toaiff(filename):
temps = []
ret = None
try:
ret = _toaiff(filename, temps)
finally:
for temp in temps[:]:
if temp != ret:
try:
os.unlink(temp)
except os.error:
pass
temps.remove(temp)
return ret
def _toaiff(filename, temps):
if filename[-2:] == '.Z':
(fd, fname) = tempfile.mkstemp()
os.close(fd)
temps.append(fname)
sts = uncompress.copy(filename, fname)
if sts:
raise error(filename + ': uncompress failed')
else:
fname = filename
try:
ftype = sndhdr.whathdr(fname)
if ftype:
ftype = ftype[0] # All we're interested in
except IOError as msg:
if type(msg) == type(()) and len(msg) == 2 and \
type(msg.args[0]) == type(0) and type(msg.args[1]) == type(''):
msg = msg.args[1]
if type(msg) != type(''):
msg = repr(msg)
raise error(filename + ': ' + msg)
if ftype == 'aiff':
return fname
if ftype is None or not ftype in table:
raise error('%s: unsupported audio file type %r' % (filename, ftype))
(fd, temp) = tempfile.mkstemp()
os.close(fd)
temps.append(temp)
sts = table[ftype].copy(fname, temp)
if sts:
raise error(filename + ': conversion to aiff failed')
return temp
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment