Пример #1
0
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)
Пример #3
0
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'))
Пример #4
0
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'))
Пример #5
0
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()
Пример #6
0
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
Пример #7
0
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()
Пример #8
0
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
Пример #9
0
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))