#!/usr/bin/env python

import cogniac
import sys
from tabulate import tabulate
import datetime


def print_detections(detections):
    # remove None values from dict
    detections = [{k: v for k, v in d.iteritems() if v is not None} for d in detections]

    detections.sort(key=lambda x: x['timestamp'])

    for d in detections:
        value = datetime.datetime.fromtimestamp(d['timestamp'])
        d['timestamp'] = value.strftime('%Y-%m-%d %H:%M:%S')
    print tabulate(detections, headers='keys')


def print_subjects(media_subjects):
    subjects = [ms['subject'] for ms in media_subjects]
    subjects = [{k: v for k, v in s.iteritems() if v is not None} for s in subjects]
    subjects.sort(key=lambda x: x['updated_at'])
    for s in subjects:
        if 'timestamp' in s:
            del s['timestamp']
        value = datetime.datetime.fromtimestamp(s['updated_at'])
        s['updated_at'] = value.strftime('%Y-%m-%d %H:%M:%S')
    print tabulate(subjects, headers='keys')


def print_media_id_info(media_id):
    try:
        media = cc.get_media(media_id)
    except:
        print "media_id %s not found" % media_id
        return


    print_detections(media.detections())
    print
    print_subjects(media.subjects())

if __name__ == "__main__":
    cc = cogniac.CogniacConnection()

    if len(sys.argv) > 1:
        print_media_id_info(sys.argv[-1])
        media_id = sys.argv[-1]
        sys.exit(0)

    while True:
        sys.stdout.write("media_id> ")
        media_id_str = sys.stdin.readline().rstrip()
        if media_id_str == 'q':
            sys.exit(0)
        if media_id_str:
            media_id = media_id_str
        print_media_id_info(media_id)
