import sys import os import dateutil.parser from gevent.subprocess import Popen, PIPE sys.path.insert(0, "..") import constants import parse_query import globals def get_moon(parsed_query): location = parsed_query['orig_location'] html = parsed_query['html_output'] lang = parsed_query['lang'] hemisphere = parsed_query['hemisphere'] date = None if '@' in location: date = location[location.index('@')+1:] location = location[:location.index('@')] cmd = [globals.PYPHOON] if lang: cmd += ["-l", lang] if not hemisphere: cmd += ["-s", "south"] if date: try: dateutil.parser.parse(date) except Exception as e: print("ERROR: %s" % e) else: cmd += [date] p = Popen(cmd, stdout=PIPE, stderr=PIPE) stdout = p.communicate()[0] stdout = stdout.decode("utf-8") if parsed_query.get('no-terminal', False): stdout = globals.remove_ansi(stdout) if parsed_query.get('dumb', False): stdout = stdout.translate(globals.TRANSLATION_TABLE) if html: p = Popen( ["bash", globals.ANSI2HTML, "--palette=solarized", "--bg=dark"], stdin=PIPE, stdout=PIPE, stderr=PIPE) stdout, stderr = p.communicate(stdout.encode("utf-8")) stdout = stdout.decode("utf-8") stderr = stderr.decode("utf-8") if p.returncode != 0: globals.error(stdout + stderr) return stdout