This is a python module providing communication abstractions for the OpenScience Observatories telescope.org service. The telescope control is provided through the `Telescope` class which provides state tracking and low level methods - forming a basic API layer. The higher level functions are implemented as separate functions construced with the Telescope class API.
assert cleanup('|ążźćńłóęśĄŻŹĆŃŁÓĘŚ|') == '||'
config = configparser.ConfigParser()
config.read(expanduser('~/.config/telescope.ini'))
OSO=Telescope(config['telescope.org']['user'],
config['telescope.org']['password'])
reqlst=OSO.get_user_requests(sort='completion')
print(f'Number of users requests: {len(reqlst)}')
reqlst[0]
OSO.get_user_folders()
import datetime
olst = OSO.get_obs_list(t=datetime.datetime(2020, 12, 24).timestamp())
print(f'Observations: {len(olst)}')
for rq in sorted(reqlst, key=lambda r: int(r['requesttime']), reverse=True):
if Telescope.REQUESTSTATUS_TEXTS[int(rq['status'])]=='Complete':
break
print(rq)
print(OSO.get_request(int(rq['id'])))
last_complete = int(OSO.get_request(int(rq['id']))['jid'][1:])
obs = OSO.get_job(last_complete)
rsp = OSO.do_api_call("image-engine", "0-create-dlzip", {'jid': obs['jid'], 'flatid': obs['flatid']})
print(rsp)
rsp = OSO.do_api_call("image-engine", "0-is-job-ready", {'ieid':rsp['data']['ieID'],})
print(rsp)
fn = OSO.download_obs(OSO.get_job(last_complete), directory='/tmp', cube=False, verbose=True)
if fn is not None:
print(f'Removing downloaded file: {fn}')
os.unlink(os.path.join('/tmp', fn))
else:
print('Download failed')
fn = OSO.download_obs(OSO.get_job(last_complete), directory='/tmp', cube=True, verbose=True)
if fn is not None:
print(f'Removing downloaded file: {fn}')
os.unlink(os.path.join('/tmp', fn))
else:
print('Download failed')
(OSO.get_obs(OSO.get_job(last_complete), cube=False, verbose=True),
OSO.get_obs(OSO.get_job(last_complete), cube=True, verbose=True),)
if False :
print("Submitting a VS job")
rq = OSO.submitVarStar('V1223 Sgr', expos=180)
if rq[0] :
print("Waiting for job to be accepted")
while (status:=OSO.get_request(int(rq[1]))['status'])!='Waiting' :
print(status, end='\r')
sys.stdout.flush()
time.sleep(15)
print(status)
print("Cancelling the job")
OSO.do_rm_api("0-cancel-request", {'rid':int(rq[1])})
print("Waiting for job to be cancelled")
while 'pending cancel' in (status:=OSO.get_request(int(rq[1]))['status']):
print(status, end='\r')
sys.stdout.flush()
time.sleep(15)
print(status)
else :
print('Submission failed')
reqlst=OSO.get_user_requests(sort='completion')
for rq in sorted(reqlst, key=lambda r: int(r['requesttime']), reverse=True)[:20]:
print(f"{rq['objectname']:12}",
f"{datetime.datetime.fromtimestamp(int(rq['requesttime']))}",
f"{rq['id']:12}",
f"{Telescope.REQUESTSTATUS_TEXTS[int(rq['status'])]}"
)
OSO.logout()
from nbdev.export import notebook2script; notebook2script()