#!/usr/bin/python
# -*- coding: utf-8 -*-
#
#
import sys, time, json, cPickle
from datetime import datetime
from twitter__login import login as twitter_login
from twitter__util import makeTwitterRequest 
import twitter_text
import twitter
import random

#
#
def loadTwitterData(fname="TweetEntities.pickle"):
    tData = None
    f = open(fname)
    if( f ):
        tData = cPickle.load(f)
    return tData

def buildHashtagFrequency(tweets=None):
    hf = {}
    for t in tweets:
        ht_list = t['entities']['hashtags']
        for ht in ht_list:
            tag = ht['text'].lower()
            if( tag in hf ):
                hf[tag] = hf[tag]+1
            else:
                hf[tag] = 1
    return hf

def buildMentionFrequency(tweets=None):
    mf = {}
    for t in tweets:
        m_list = t['entities']['user_mentions']
        for m in m_list:
            name = m['screen_name']
            if( name in mf ):
                mf[name] = mf[name]+1
            else:
                mf[name] = 1
    return mf

def writeFrequencyList(freq_dict,fname):
    f = open(fname,"w")
    keys = freq_dict.keys()
    for k in keys:
        f.write('%s,%s\n'%(k.encode('ascii','replace'),freq_dict[k]))
    f.close()



def parse_params(argv):
    fname = "TweetEntities.pickle"
    pc = 1
    while( pc < len(argv) ):
        param = argv[pc]
        if( param == "-file"):
            pc += 1
            fname = argv[pc] 
        pc += 1
    return {'fname':fname }

def usage(prog):
    print "USAGE: %s -file <tweet-data-fname>"%(prog)
    sys.exit(0)

def main(argv):
    if len(argv) < 3:
        print "ERROR: Must specify a filename"
        usage(sys.argv[0])

    params = parse_params(sys.argv)
    if( not params['fname'] ):
        print "ERROR: Must specify a filename"
        usage(sys.argv[0])

    tweets = loadTwitterData(params['fname'])  
    #print json.dumps(tweets,sort_keys=True,indent=4)
    
    hf = buildHashtagFrequency(tweets)
    print hf
    writeFrequencyList(hf,"entitiesAnalysis-hashtags.csv")
    mf = buildMentionFrequency(tweets)
    print mf    
    writeFrequencyList(hf,"entitiesAnalysis-mentions.csv")

if __name__ == '__main__':
    main(sys.argv)   
