|
|
@@ -0,0 +1,108 @@ |
|
|
|
#!/usr/bin/env python |
|
|
|
|
|
|
|
# cueconvert.cgi - use HTML form to drive cueconvert |
|
|
|
# ./cueconvert should be the cueconvert binary, or a link to it |
|
|
|
|
|
|
|
import os |
|
|
|
import cgi |
|
|
|
# error reporting |
|
|
|
#import cgitb; cgitb.enable() |
|
|
|
|
|
|
|
def print_form(iformat, oformat, text, errors): |
|
|
|
# input format radio buttons |
|
|
|
# one "" and one "checked" |
|
|
|
iformat_cue = "" |
|
|
|
iformat_toc = "" |
|
|
|
# output format radio buttons |
|
|
|
oformat_cue = "" |
|
|
|
oformat_toc = "" |
|
|
|
|
|
|
|
if iformat == "cue": |
|
|
|
iformat_cue = "checked" |
|
|
|
else: |
|
|
|
iformat_toc = "checked" |
|
|
|
|
|
|
|
if oformat == "cue": |
|
|
|
oformat_cue = "checked" |
|
|
|
else: |
|
|
|
oformat_toc = "checked" |
|
|
|
|
|
|
|
# print HTML form |
|
|
|
print "Content-type: text/html" |
|
|
|
print |
|
|
|
print """ |
|
|
|
<html> |
|
|
|
<head> |
|
|
|
<title>cueconvert</title> |
|
|
|
</head> |
|
|
|
<body> |
|
|
|
<h1>cueconvert</h1> |
|
|
|
<form action="cueconvert.cgi" method="post"> |
|
|
|
<p> |
|
|
|
Cue Sheet/TOC File<br /> |
|
|
|
<textarea name="text" cols="80" rows="12">%s</textarea> |
|
|
|
</p> |
|
|
|
<p> |
|
|
|
Input Format |
|
|
|
<input type="radio" name="iformat" value="cue" %s>cue</input> |
|
|
|
<input type="radio" name="iformat" value="toc" %s>toc</input> |
|
|
|
</p> |
|
|
|
<p> |
|
|
|
Output Format |
|
|
|
<input type="radio" name="oformat" value="cue" %s>cue</input> |
|
|
|
<input type="radio" name="oformat" value="toc" %s>toc</input> |
|
|
|
</p> |
|
|
|
<input type="submit" value="Submit"> |
|
|
|
</form> |
|
|
|
<pre>%s</pre> |
|
|
|
<hr /> |
|
|
|
<p>cueconvert is part of the <a href="http://cuetools.berlios.de">cuetools</a> project.</p> |
|
|
|
</body> |
|
|
|
</html> |
|
|
|
""" % (cgi.escape(text), iformat_cue, iformat_toc, oformat_cue, oformat_toc, cgi.escape(errors)) |
|
|
|
|
|
|
|
def convert(iformat, oformat, text): |
|
|
|
"""convert - convert a cue or toc file |
|
|
|
|
|
|
|
returns converted text, and any error messages""" |
|
|
|
|
|
|
|
command = "./cueconvert" |
|
|
|
|
|
|
|
# append flags to command |
|
|
|
if iformat == "cue": |
|
|
|
command += " -i cue" |
|
|
|
elif iformat == "toc": |
|
|
|
command += " -i toc" |
|
|
|
|
|
|
|
if oformat == "cue": |
|
|
|
command += " -o cue" |
|
|
|
elif oformat == "toc": |
|
|
|
command += " -o toc" |
|
|
|
|
|
|
|
ifile, ofile, efile = os.popen3(command) |
|
|
|
ifile.write(text) |
|
|
|
ifile.close() |
|
|
|
text = ofile.read() |
|
|
|
errors = efile.read() |
|
|
|
ofile.close() |
|
|
|
efile.close() |
|
|
|
|
|
|
|
return text, errors |
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
iformat = "cue" # input format |
|
|
|
oformat = "toc" # output format |
|
|
|
text = "" # input file content |
|
|
|
errors = "" # cueconvert error messages |
|
|
|
|
|
|
|
form = cgi.FieldStorage() |
|
|
|
if form: |
|
|
|
iformat = form.getfirst("iformat") |
|
|
|
oformat = form.getfirst("oformat") |
|
|
|
text = form.getfirst("text", "") |
|
|
|
|
|
|
|
text, errors = convert(iformat, oformat, text) |
|
|
|
# switch input and output formats for next pass |
|
|
|
iformat, oformat = oformat, iformat |
|
|
|
|
|
|
|
print_form(iformat, oformat, text, errors) |