1
0
mirror of https://github.com/gryf/slack-backup.git synced 2025-12-17 11:30:25 +01:00

Added NoneReporter

This commit is contained in:
2018-03-10 18:39:29 +01:00
parent 57db9b69f6
commit 37aca84605

View File

@@ -18,6 +18,18 @@ from slack_backup import emoji
class Reporter(object): class Reporter(object):
"""Base reporter class""" """Base reporter class"""
ext = '' ext = ''
symbols = {'plain': {'join': '->',
'leave': '<-',
'me': '*',
'file': '-',
'topic': '+',
'separator': '|'},
'unicode': {'join': '',
'leave': '',
'me': '🟊',
'file': '📂',
'topic': '🟅',
'separator': ''}}
url_pat = re.compile(r'(?P<replace><http[^>]+>)') url_pat = re.compile(r'(?P<replace><http[^>]+>)')
slackid_pat = re.compile(r'(?P<replace><@' slackid_pat = re.compile(r'(?P<replace><@'
'(?P<slackid>U[A-Z,0-9]+)(\|[^>]+)?[^>]*>)') '(?P<slackid>U[A-Z,0-9]+)(\|[^>]+)?[^>]*>)')
@@ -31,26 +43,28 @@ class Reporter(object):
"channel_topic": self._msg_topic, "channel_topic": self._msg_topic,
"file_share": self._msg_file, "file_share": self._msg_file,
"me_message": self._msg_me} "me_message": self._msg_me}
self.symbols = {'plain': {'join': '->',
'leave': '<-',
'me': '*',
'file': '-',
'topic': '+',
'separator': '|'},
'unicode': {'join': '',
'leave': '',
'me': '🟊',
'file': '📂',
'topic': '🟅',
'separator': ''}}
self.emoji = emoji.EMOJI.get(args.theme, {}) self.emoji = emoji.EMOJI.get(args.theme, {})
self.channels = self._get_channels(args.channels) self.channels = self._get_channels(args.channels)
self.users = self.q(o.User).all() self.users = self.q(o.User).all()
def generate(self): def generate(self):
"""Generate raport it's a dummmy one - for use with none reporter""" """Generate raport for each channel"""
return for channel in self.channels:
messages = []
log_path = self.get_log_path(channel.name)
self._set_max_len(channel)
try:
os.unlink(log_path)
except IOError as err:
if err.errno != errno.ENOENT:
raise
for message in self.q(o.Message).\
filter(o.Message.channel == channel).\
order_by(o.Message.ts).all():
messages.append(message)
self.write_msg(messages, log_path)
def get_log_path(self, name): def get_log_path(self, name):
"""Return relative log file name """ """Return relative log file name """
@@ -114,6 +128,14 @@ class Reporter(object):
return text return text
class NoneReporter(Reporter):
"""Dummy reporter used for fallback"""
def generate(self):
"""Generate raport it's a dummmy one - for use with none reporter"""
return
class TextReporter(Reporter): class TextReporter(Reporter):
"""Text aka IRC reporter""" """Text aka IRC reporter"""
ext = '.log' ext = '.log'
@@ -210,7 +232,6 @@ class TextReporter(Reporter):
"""return formatter for file""" """return formatter for file"""
fpath = os.path.abspath(msg.file.filepath) fpath = os.path.abspath(msg.file.filepath)
data = {'date': msg.datetime().strftime("%Y-%m-%d %H:%M:%S"), data = {'date': msg.datetime().strftime("%Y-%m-%d %H:%M:%S"),
'msg': self.url_pat.sub('(file://' + fpath + ') ' + 'msg': self.url_pat.sub('(file://' + fpath + ') ' +
msg.file.title, text), msg.file.title, text),
@@ -254,7 +275,6 @@ class TextReporter(Reporter):
"""replace html entites into appropriate chars""" """replace html entites into appropriate chars"""
return html.parser.HTMLParser().unescape(text) return html.parser.HTMLParser().unescape(text)
def _fix_newlines(self, text): def _fix_newlines(self, text):
"""Shift text with new lines to the right with separator""" """Shift text with new lines to the right with separator"""
shift = 19 # length of the date shift = 19 # length of the date
@@ -269,7 +289,7 @@ def get_reporter(args, query):
"""Return object of right reporter class""" """Return object of right reporter class"""
reporters = {'text': TextReporter} reporters = {'text': TextReporter}
klass = reporters.get(args.format, Reporter) klass = reporters.get(args.format, NoneReporter)
if klass.__name__ == 'Reporter': if klass.__name__ == 'Reporter':
logging.warning('None, or wrong (%s) formatter selected, falling to' logging.warning('None, or wrong (%s) formatter selected, falling to'
' None Reporter', args.format) ' None Reporter', args.format)