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)