import urllib
from searcher import guess_date
def escape(data):
if type(data) is unicode:
data = data.encode('utf-8')
if type(data) != str:
data = str(data)
data = data.replace('&', '&')
data = data.replace('<', '<')
# Do this for attributes
data = data.replace('"', '"')
return data
def quote(data):
if type(data) is unicode:
data = data.encode('utf-8')
if type(data) != str:
data = str(data)
return urllib.quote(data)
def header(wsgi):
fp = open('/home/bryan/public_html/pages/navbar.html')
navbar = fp.read()
fp.close()
return r"""
"""
def js_header(wsgi):
return "%s('" % wsgi['request'].get('callback', 'ogg_search')
def checked(boolean):
if boolean: return 'checked="checked"'
return ''
def search_form(wsgi):
request = dict(((k, v.encode('utf-8')) for k, v in wsgi['request'].iteritems()))
data = """
Ogg files are containers for media streams. They can contain an unlimited amount of audio and video streams.
MediaWiki currently supports Theora, an MPEG-4 like lossy codec, for videos.
For audio MediaWiki supports Vorbis, a general audio codec intended to replace MP3,
FLAC, a lossless audio format, and Speex, which is aimed at voice recordings.
Ogg files are directly playable in the webbrowser via Cortado (Java),
the VLC ActiveX control and Apple Quicktime.
""" % (
request.get('name', ''), request.get('min-min', '0'), request.get('min-sec', '0'),
request.get('max-min', ''), request.get('max-sec', ''),
guess_date(request.get('min-date', ''), True), guess_date(request.get('max-date', ''), True),
request.get('in-category', ''), request.get('not-in-category', ''), wsgi['config']['category_limit'],
checked(request.get('video') == 'no'), checked(request.get('video') == 'yes'),
checked(request.get('video') not in ('yes', 'no')), request.get('min-w', '0'),
request.get('min-h', '0'), request.get('max-w', ''), request.get('max-h', ''),
checked(request.get('audio') == 'no'), checked(request.get('audio') == 'yes'),
checked(request.get('audio') not in ('yes', 'no')), checked('vorbis' in request or 'search' not in request),
checked('flac' in request or 'search' not in request), checked('speex' in request or 'search' not in request),
)
if wsgi['request'].get('format') == 'raw_js':
return data.replace('\n', "\\n' +\n'")
else:
return data
def no_results(wsgi):
return """
No search results
"""
def search_header(wsgi):
return '
\n' + search_navigation(wsgi)
def search_navigation(wsgi):
result = ['
']
link = '&'.join(('%s=%s' % (quote(i[0]), quote(i[1])) for i in wsgi['query_string'].items() +
wsgi['postdata'].items() if i[0] != 'offset'))
result.append('View streams')
if wsgi['continuation'] - wsgi['limit']:
result.append('(previous %s)' % \
(max(0, wsgi['continuation'] - 2 * wsgi['limit']), link, wsgi['limit']))
for i in xrange(1, int(wsgi['continuation'] / wsgi['limit'])):
result.append('%s' % \
((i - 1) * wsgi['limit'], link, i))
if not wsgi['is_last']:
result.append('(next %s)' % \
(wsgi['continuation'], link, wsgi['limit']))
result.append('(')
result.append(' | '.join(('%s' % \
(link, max(0, wsgi['continuation'] - wsgi['limit']), i, i) for i in (10, 20, 50, 100))))
result.append(')')
result.append('