diff --git a/getdates.py b/getdates.py index 5ad39b9..421cb61 100755 --- a/getdates.py +++ b/getdates.py @@ -19,7 +19,7 @@ def dateArgs(argv = sys.argv[1:]): mode = 0 for arg in argv: - if mode == 0 or (mode == 3 and not isinstance(arg,int)): + if mode == 0: if arg == "-f": mode = 1 elif arg == "-t": @@ -30,7 +30,10 @@ def dateArgs(argv = sys.argv[1:]): strings += [arg] mode = 0 elif mode == 3: - av = arg + try: + av = int(arg) + except ValueError: + raise ValueError("Number of days for running average must be an integer.") mode = 0 elif mode == 1: fr = getDate(arg) @@ -44,7 +47,7 @@ def dateArgs(argv = sys.argv[1:]): if to != None and fr != None and to < fr: raise ValueError("From date must be before To date.") - + return strings, fr, to, av @@ -65,15 +68,43 @@ def dateList(fr, to): return [[(fr+datetime.timedelta(days=i)).strftime('%Y-%m-%d')] for i in range((to+datetime.timedelta(days=1)-fr).days)] +def avg(list): + sum = 0 + + for i in list: + sum += i + + return int(sum / len(list)) + + +def fillAverage(cur, av): + vals = [] + for day in cur: + vals = ([day[len(day)-1]] + vals)[:av] + day += [avg(vals)] + return cur + + def fillList(db, string, cur, av): for day in cur: day += list(db.executeQuery(queryBuilder(day[0], string)))[0] + if not av == 0: + cur = fillAverage(cur, av) + return cur def getHeaders(strings, av): - return [["Date", "Tweets"] + [string for string in strings]] + if av == 0: + return [["Date", "Tweets"] + [string for string in strings]] + + headers = ["Date", "Tweets", "Average"] + + for string in strings: + headers += [string, "Average " + string] + + return [headers] def getTweetsByDate(strings = [], fr = None, to = None, av = 0, path = tools.config.dbpath, headers = False):