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:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user