Source code for bot.plugs.scan

# bot/plugs/directory.py
#
#

""" mail input plugin. """

## IMPORTS

from bot.utils import strip_html, j, error, need_skip, short_date
from bot import kernel, Object

import email.message
import datetime
import logging
import email
import time
import os

[docs]def scan_dir(*args, **kwargs): target = args[0] teller = 0 for fn in os.listdir(target): if fn.startswith("."): continue ff = target + os.sep + fn logging.warn("reading %s" % ff) if os.path.isdir(ff): scan_dir(ff) ; continue o = Object() try: try: data = open(ff, "r").read() except Exception as ex: logging.warn("problem scanning %s - %s" % (ff, str(ex))) ; continue message = email.message_from_string(data) ; o.update(message.items()) o.text = "" o.filename = ff payload = message.get_payload() go = True for load in payload: if not load: continue if need_skip(load, [], ["text/plain", ],): go = False ; break else: o.text += str(load) if not go: continue o.mdate = short_date(o.Date) except IsADirectoryError: continue except Exception: error() ; continue o.save() teller += 1 logging.warn("at %s" % teller) ## COMMANDS
[docs]def do_scan(event): if not os.path.isdir(event.rest): logging.warn("%s is not a directory" % event.rest) ; return scan_dir(event.rest) event.reply("done")
kernel.register("scan", do_scan)