#! /usr/bin/env python
# Retrieve TLE files from the  https://www.space-track.org website

from __future__ import print_function

import urllib
import urllib2
import cookielib
import os
import shutil

baseTLEdir = '/disk02/predictTLEs'
username = 'swbailey'
password = 'Meav4fs'

norad = {'MODIS_TERRA': '25994',
         'MODIS_AQUA': '27424',
         'CALIPSO': '29108',
         'CLOUDSAT': '29107',
         'PROBA': '26958',
         'NPP':'37849',
         'OCEANSAT-2':'35931'}
tleIDs = ','.join(norad.values())

baseurl = "https://www.space-track.org"
loginurl = '/'.join([baseurl, "ajaxauth","login"])
tleurl = '/'.join([baseurl,"basicspacedata","query","class","tle_latest","ORDINAL","1","NORAD_CAT_ID",tleIDs,"format","tle"])

#Get login cookie
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'identity' : username, 'password' : password})
opener.open(loginurl, login_data)
urllib2.install_opener(opener)
#Get TLE info
f = urllib2.urlopen(tleurl)

print (tleurl)
tlehash = {}

for line in f.readlines():
    if len(line) < 10:
        continue
    parts = line.split()
    tleID = parts[1].strip('U')
    if tlehash.has_key(tleID):
        tlehash[tleID].append(line)
    else:
        tlehash[tleID] = [line]

for bird in norad.keys():
    tleID = norad[bird]
    dirbird = bird
    if bird == 'SEASTAR':
        dirbird = 'seawifs'
    if bird[0:5] == "MODIS":
        bird = bird.strip('MODIS_')

    tle = tlehash[tleID]
    if len(tle) != 2:
        print ("Whoops! TLE retrieval error for %s" % bird)
    else:
        tleDate = tle[0].split()[3]
        year = str(int(tleDate[0:2]) + 2000)
        doy = tleDate[2:5]
#        if not os.path.exists(os.path.join(baseTLEdir,dirbird.lower()+"_info")):
#            os.mkdir(os.path.join(baseTLEdir,dirbird.lower()+"_info"),0755)
#        if not os.path.exists(os.path.join(baseTLEdir,dirbird.lower()+"_info","tles")):
#            os.mkdir(os.path.join(baseTLEdir,dirbird.lower()+"_info","tles"),0755)
        tleFile = os.path.join(baseTLEdir,bird+doy+year+".dat")
        tceFile = os.path.join(baseTLEdir,bird+".tce")
        f = open(tleFile,'w')
        f.write(tle[0])
        f.write(tle[1])
        f.close()
        shutil.copyfile(tleFile,tceFile)
