Files
cuetools/extras/cueconvert.cgi
2013-08-16 13:28:11 -07:00

114 lines
2.5 KiB
Python

#!/usr/bin/env python
# cueconvert.cgi - use HTML form to drive cueconvert
import os
import cgi
# error reporting
#import cgitb; cgitb.enable()
# cueconvert path
CUECONVERT = "./cueconvert"
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
def 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)
if __name__ == '__main__':
main()