def main(meilisearch_server, meilisearch_master_key, slack_directory): print("Reading messages from: %s", slack_directory) reader = Reader(slack_directory) channels = reader.compile_channels({}) groups = reader.compile_groups() print("Pushing to server: %s", meilisearch_server) print() ms_messages = transform_to_ms_messages(channels, groups) ms = Meilisearch(host=meilisearch_server, masterkey=meilisearch_master_key) ms.createmessages(ms_messages) print()
def export_multi(archive, save_dir=None, cache_dir=None): if cache_dir is None: cache_dir = os.path.join(os.getcwd(), "temp") os.environ["SLACKVIEWER_TEMP_PATH"] = os.path.join(cache_dir, "_slackviewer") tmpl = Environment( loader=PackageLoader('slackviewer')).get_template("export_multi.html") export_file_info = get_export_info(archive) r = Reader(export_file_info["readable_path"]) channel_list = sorted([{ "channel_name": k, "messages": v } for (k, v) in r.compile_channels().items()], key=lambda d: d["channel_name"]) # save dir if save_dir is None: save_dir = os.path.join(os.getcwd(), "out", "static") else: save_dir = os.path.join(save_dir, "out", "static") if not os.path.exists(save_dir): os.makedirs(save_dir) # copy css css_path = os.path.join(save_dir, "viewer.css") if not os.path.exists(css_path): current_path = os.path.dirname(os.path.realpath(__file__)) css_src = os.path.join(current_path, "static", "viewer.css") shutil.copyfile(src=css_src, dst=css_path) # get channel names channel_names = list() for channel in channel_list: channel_names.append(channel.get("channel_name")) for channel in channel_list: html = tmpl.render(generated_on=datetime.now(), workspace_name=export_file_info["workspace_name"], source_file=export_file_info["basename"], channel_names=channel_names, channel=channel) save_filename = channel.get("channel_name") + ".html" outfile = open(os.path.join(save_dir, save_filename), 'wb') outfile.write(html.encode('utf-8')) # delete cache/temp dir shutil.rmtree(cache_dir)
def export(archive_dir): css = pkgutil.get_data('slackviewer','static/viewer.css').decode('utf-8') tmpl = Environment(loader=PackageLoader('slackviewer')).get_template("export_single.html") export_file_info = get_export_info(archive_dir) r = Reader(export_file_info["readable_path"]) channel_list = sorted( [{"channel_name": k, "messages": v} for (k,v) in r.compile_channels().iteritems()], key=lambda d: d["channel_name"] ) html = tmpl.render( css=css, generated_on=datetime.now(), workspace_name=export_file_info["workspace_name"], source_file=export_file_info["basename"], channels=channel_list ) outfile = open(export_file_info["stripped_name"] + '.html', 'w') outfile.write(html.encode('utf-8'))
def export(archive_dir): css = pkgutil.get_data('slackviewer', 'static/viewer.css').decode('utf-8') tmpl = Environment( loader=PackageLoader('slackviewer')).get_template("export_single.html") export_file_info = get_export_info(archive_dir) r = Reader(export_file_info["readable_path"]) channel_list = sorted([{ "channel_name": k, "messages": v } for (k, v) in r.compile_channels().items()], key=lambda d: d["channel_name"]) html = tmpl.render(css=css, generated_on=datetime.now(), workspace_name=export_file_info["workspace_name"], source_file=export_file_info["basename"], channels=channel_list) outfile = open(export_file_info["stripped_name"] + '.html', 'w') outfile.write(html.encode('utf-8'))
def configure_app(app, archive, debug): app.debug = debug if app.debug: print("WARNING: DEBUG MODE IS ENABLED!") app.config["PROPAGATE_EXCEPTIONS"] = True path = extract_archive(archive) reader = Reader(path) top = flask._app_ctx_stack top.channels = reader.compile_channels() top.groups = reader.compile_groups() top.dms = reader.compile_dm_messages() top.dm_users = reader.compile_dm_users() top.mpims = reader.compile_mpim_messages() top.mpim_users = reader.compile_mpim_users()
def configure_app(app, archive, channels, no_sidebar, no_external_references, debug): app.debug = debug app.no_sidebar = no_sidebar app.no_external_references = no_external_references if app.debug: print("WARNING: DEBUG MODE IS ENABLED!") app.config["PROPAGATE_EXCEPTIONS"] = True path = extract_archive(archive) reader = Reader(path) top = flask._app_ctx_stack top.channels = reader.compile_channels(channels) top.groups = reader.compile_groups() top.dms = reader.compile_dm_messages() top.dm_users = reader.compile_dm_users() top.mpims = reader.compile_mpim_messages() top.mpim_users = reader.compile_mpim_users() top.root_dir = path
def configure_app(app, archive, channels, no_sidebar, no_external_references, debug): app.debug = debug app.no_sidebar = no_sidebar app.no_external_references = no_external_references if app.debug: print("WARNING: DEBUG MODE IS ENABLED!") app.config["PROPAGATE_EXCEPTIONS"] = True path = extract_archive(archive) reader = Reader(path) top = flask._app_ctx_stack top.channels = reader.compile_channels(channels) top.groups = reader.compile_groups() top.dms = reader.compile_dm_messages() top.dm_users = reader.compile_dm_users() top.mpims = reader.compile_mpim_messages() top.mpim_users = reader.compile_mpim_users()
def configure_app(app, archive, channels, no_sidebar, no_external_references, debug, meilisearch_host, meilisearch_master_key): app.debug = debug app.no_sidebar = no_sidebar app.no_external_references = no_external_references if app.debug: print("WARNING: DEBUG MODE IS ENABLED!") app.config["PROPAGATE_EXCEPTIONS"] = True path = extract_archive(archive) reader = Reader(path) top = flask._app_ctx_stack top.channels = reader.compile_channels(channels) top.groups = reader.compile_groups() top.dms = reader.compile_dm_messages() top.dm_users = reader.compile_dm_users() top.mpims = reader.compile_mpim_messages() top.mpim_users = reader.compile_mpim_users() top.meilisearch_host = meilisearch_host top.meilisearch_master_key = meilisearch_master_key message_channel_index = {} for channelname in top.channels.keys(): for index, message in enumerate(top.channels[channelname]): if message.client_msg_id is None: continue message_channel_index[message.client_msg_id] = (channelname, index) message_group_index = {} for groupname in top.groups.keys(): for index, message in enumerate(top.groups[groupname]): if message.client_msg_id is None: continue message_group_index[message.client_msg_id] = (groupname, index) top.message_channel_index = message_channel_index top.message_group_index = message_group_index
from slackviewer.app import app as application from slackviewer.archive import extract_archive from slackviewer.reader import Reader from slackviewer.appconfig import set_env_params import os try: from flask import _app_ctx_stack as stack except ImportError: from flask import _request_ctx_stack as stack set_env_params() path = extract_archive(os.environ.get("SEV_ARCHIVE")) reader = Reader(path) stack.channels = reader.compile_channels(os.environ.get("SEV_CHANNELS", None)) stack.groups = reader.compile_groups() stack.dms = reader.compile_dm_messages() stack.dm_users = reader.compile_dm_users() stack.mpims = reader.compile_mpim_messages() stack.mpim_users = reader.compile_mpim_users() if __name__ == '__main__': if not application.is_test: application.run(host=os.environ.get("SEV_IP", '0.0.0.0'), port=os.environ.get("SEV_PORT", 5000))