def execute(args):
    try:
        logging.info("INIT PROCESS")
        time.sleep(2)
        #Check args
        if (len(args) > 1):
            labelname = args[0]
            month = args[1]
        else:
            logging.error("not enough args")
            sys.exit()
        #Authenticate to your gmail address
        service = gb.auth_service_to("averneus")

        logging.info("GET DATA")
        time.sleep(2)
        ## get mails with given Label
        label_ids = gb.get_id_for_labelname(service, labelname)
        label_mailids = gb.list_messages_with_label(service,
                                                    "me",
                                                    label_ids=[label_ids])

        ## Get mail info from Ids
        mailBox = gb.mailBox_retriever(service, label_mailids, verbose=True)

        logging.info("PROCESS DATA")
        time.sleep(2)
        ## get labeled mails before given Date Threshold
        fms = gb.find_mailids_below_threshold(mailBox,
                                              month=int(month),
                                              verbose=False)
        if (fms == []):
            logging.warning("No mails found to trash")
        elif (fms != [] and type(fms) == list):
            ## trash mails older than Threshold
            logging.info("Trying to delete mail")
            for mail in fms:
                gb.trash_message(service, mail["id"])
                logging.debug('Gone - {}'.format(mail["snippet"]))
        else:
            logging.warning(
                "Something is wrong with fms variable: go check trash_message")
    except Exception as e:
        logging.error(e)
        exc_info = sys.exc_info()
        # Display the *original* exception
        traceback.print_exception(*exc_info)
        del exc_info
Example #2
0
#! /usr/bin/env python3

import gmail_bot_functions as gb
import dateutil.relativedelta
import datetime
from time import time
import csv
import logging

service = gb.auth_service()
mailIds = gb.list_all_messages(service, "me")
logging.info("retrieving mails")
mailBox = gb.mailBox_retriever(service, mailIds, verbose=True)

logging.info("counting mails")
counted_messages, sorted_counted_messages = gb.count_retrieved_messages(
    mailBox)

#CSV writer source: https://pythonspot.com/save-a-dictionary-to-a-file/
logging.info("writing into: " + filename)
filename = "counted_messages.csv"
w = csv.writer(open(filename, "w"))
for key, val in counted_messages.items():
    w.writerow([key, val])
Example #3
0
def execute(args):
    try:
        if (len(args) > 0):
            pass
        else:
            print("not enough args")
            sys.exit()

        print("### INIT")
        time.sleep(5)
        #Authenticate to your gmail address
        service = gb.auth_service()

        print("### GET DATA ")
        time.sleep(5)
        # Get all mail ids
        query = args[0]
        labelname = args[1]

        mailIds = gb.list_messages_with_matching_query(service,
                                                       "me",
                                                       query=query)
        #mailIds_glassdoor = gb.list_messages_with_matching_query(service, "me", query='glassdoor')

        #mailIds_dailycode = gb.list_messages_with_matching_query(service, "me", query='Daily Coding')
        #label_actions_dailycode = {'removeLabelIds': [labelids["inbox"]],
        #                           'addLabelIds': [labelids["dailycode"]]}

        # Get label ids
        """labelids = {"jobapp" : gb.get_id_for_labelname(service, "JobApp"),
		            "inbox" : gb.get_id_for_labelname(service, "INBOX"),
		            "dailycode" :  gb.get_id_for_labelname(service, "Daily Code")}"""
        labelid = gb.get_id_for_labelname(service, labelname)
        labelid_inbox = gb.get_id_for_labelname(service, "INBOX")

        label_actions_jobapp = {
            'removeLabelIds': [labelid_inbox],
            'addLabelIds': [labelid]
        }

        # Get mail info from Ids
        print("# Retrieving: '" + query + "' related mails")
        mailBox = gb.mailBox_retriever(service, mailIds, verbose=True)

        print("### PROCESS DATA")
        time.sleep(5)
        # find un-labeled mails ("JobApp") and label those
        for mail in mailBox:
            if (labelid in mail["labelIds"]):
                #print("It has JobApp label: " + mail["id"] )
                pass
            else:
                print("Modifing to JobApp:" + mail["id"])
                gb.modify_message_label(service, "me", mail["id"],
                                        label_actions_jobapp)
                #modify_message_label(service, user_id, msg_id, msg_labels)
    except:
        exc_info = sys.exc_info()
        # Display the *original* exception
        traceback.print_exception(*exc_info)
        del exc_info