예제 #1
0
파일: DB.py 프로젝트: dfunction/dog
class DB:
    def __init__(self, fileName):
        self.fileName = fileName
        self._log = SimpleLogger("db.log")
        self._log.initialize()
        self.log(datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))
        self._createEmailsTable()
        self._createUrlsTable()
    
    def _createEmailsTable(self):
        con = sql.connect(self.fileName)
        with con:
            cur = con.cursor()
            cur.execute("create table if not exists Emails(hash text);")
    
    def _createUrlsTable(self):
        con = sql.connect(self.fileName)
        with con:
            cur = con.cursor()
            cur.execute("create table if not exists Urls(hash text);")
    
    def _get_hash(self, message):
        return sha512(message).hexdigest()
    
    def addUrl(self, url):
        strHash = self._get_hash(url)
        con = sql.connect(self.fileName)
        with con:
            cur = con.cursor()
            cur.execute("select hash from Urls where hash=?", [strHash])
            if cur.fetchone() == None:
                cur.execute("insert into Urls values(?)", [strHash])
                self.log("Urls: inserted hash of " + url)
            else:
                self.log("Urls: " + url + " already in database ")
                return False
        return True
    
    def addEmail(self, email):
        strHash = self._get_hash(email)
        con = sql.connect(self.fileName)
        with con:
            cur = con.cursor()
            cur.execute("select hash from Emails where hash=?", [strHash])
            if cur.fetchone() == None:
                cur.execute("insert into Emails values(?)", [strHash])
                self.log("Emails: inserted hash of " + email)
            else:
                self.log("Emails: " + email + " already in database ")
                return False
        return True
    
    def close(self):
        self._log.finalize()
    
    def log(self, message):
        print message
        self._log.log(message)
예제 #2
0
파일: dog.py 프로젝트: dfunction/dog
def main():
    global logger, timer, db

    logger = SimpleLogger("dog.log")
    logger.initialize()
    logger.log("\n\n\nRunning dog on " + str(datetime.datetime.now()))

    timer = SimpleTimer()

    db = DB("test.db")

    sources = loadSources()
    emailsWithLinks = getEmailsWithLinks(sources)
    filteredEmailsWithLinks = filterEmailsWithLinks(emailsWithLinks)
    sendEmails(filteredEmailsWithLinks)
    logger.log("Done!")
    logger.finalize()
    return