Wayslack机器:使用Slack团队导出格式,增量归档Slack消息和文件
项目描述
The Wayslack Machine
Wayslack机器:使用Slack的“归档”导出格式,增量归档Slack团队并删除旧文件。
Wayslack还可以从Slack中删除旧文件,为免费层的用户提供更多存储空间。请参阅 delete_old_files 选项。
入门
安装 wayslack
$ pip install wayslack
(可选) 导出您的团队历史并解压: https://get.slack.help/hc/en-us/articles/201658943-Export-your-team-s-Slack-history
从: https://api.slack.com/custom-integrations/legacy-tokens 获取旧令牌
运行 wayslack path/to/export/directory 创建归档(如果尚不存在),然后下载所有消息和文件
$ wayslack my-export/ API token for my-export/ (see https://api.slack.com/custom-integrations/legacy-tokens): xoxp-1234-abcd Processing: my-export/ Downloading https://.../image.jpg #general: 10 new messages in #general (saving to my-export/_channel-C049V24HY/2016-12-19.json) $ ls my-export/_files/ ... https%3A%2F%2F...%2Fimage.jpg
可选地,创建一个配置文件,以便轻松归档多个团队
$ cat ~/.wayslack/config.yaml --- archives: - dir: path/to/slack/first-export # path is relative to this file # Get token from: https://api.slack.com/custom-integrations/legacy-tokens token: xoxp-1234-abcd # Delete files from Slack if they're more than 60 days old (useful for # free Slack channels which have a file limit). # Files will only be deleted from Slack if: # - They exist in the archive (_files/storage/...) # - wayslack is run with --confirm-delete # Otherwise a message will be printed but files will not be deleted. delete_old_files: 60 days - dir: second-export token: xoxp-9876-wxyz $ wayslack Processing: first-export ... Processing: second-export ...
从Slack中删除旧文件
可以使用 delete_old_files 选项(以及 --confirm-delete 标志)从Slack中删除旧文件,释放团队的存储空间。
只有当使用 --confirm-delete 标志、文件存在于本地归档中,并且其大小与Slack API中报告的大小匹配时,才会删除文件。
注意:由于 Slack API 中的一个 bug,Slack API 报告的文件大小有时是不正确的。因为 Wayslack 不会在本地大小与远程大小不匹配时删除文件,所以在删除文件时几乎总是会产生一些警告(而且,显然,那些文件不会被删除)。
注意2:Slack 似乎会压缩 JPEG 文件,因此此检查不适用于 JPEG 文件。尽管如此,对于所有下载的文件,都会使用 etag 来验证下载文件没有损坏(即使它与最初上传的文件不相同)。
例如
$ wayslack --confirm-delete ~/.wayslack/your-archive/
将 Slack 消息导出到 SQL(PostgreSQL)
此存储库中还包括 wayslack2sql.py(尽管尚未包含在安装程序中),它可以将 Wayslack 归档导出到 PostgreSQL 数据库
$ pip install sqlalchemy ... $ createdb wayslack $ ./wayslack2sql.py postgres://localhost/wayslack ~/.wayslack/your-team
(注意:wayslack2sql.py 还未经过特别打磨)
模式很简单,与 Slack 的 JSON 格式非常接近
-- Channels (public, private, and IMs) CREATE TABLE ws_channel ( id VARCHAR(64) PRIMARY KEY NOT NULL, -- Slack channel ID kind VARCHAR(16), -- 'channel', 'im', or 'group' created TIMESTAMP WITHOUT TIME ZONE, creator VARCHAR(64), -- Slack creator ID members VARCHAR(64)[], name VARCHAR, purpose JSON, topic JSON, ..., -- See schema in wayslack2sql.py for all columns _original JSON, ) -- Users CREATE TABLE ws_user ( id VARCHAR(64) PRIMARY KEY NOT NULL, name VARCHAR, real_name VARCHAR, ..., -- See schema in wayslack2sql.py for all columns ) -- Files CREATE TABLE ws_file ( id VARCHAR(64) PRIMARY KEY NOT NULL, "user" VARCHAR(64), -- Slack ID title VARCHAR, name VARCHAR, size INTEGER, -- note: can be wrong sometimes mimetype VARCHAR, url_private VARCHAR, url_private_download VARCHAR, ..., -- See schema in wayslack2sql.py for all columns _wayslack_deleted BOOLEAN, -- If Wayslack has deleted this file from Slack _original JSON, ) -- Messages CREATE TABLE ws_msg ( id SERIAL PRIMARY KEY NOT NULL, -- autoincrement integer primary key ts TIMESTAMP WITHOUT TIME ZONE, "user" VARCHAR(64), type VARCHAR(16), subtype VARCHAR(32), text VARCHAR, reactions JSON, attachments JSON, ..., -- See schema in wayslack2sql.py for all columns _original JSON, )
例如,要查看发送最多消息的人,请使用
with mc as ( select "user", sum(length(to_tsvector(text))) as word_count, count(*) as msg_count from ws_msg group by "user" ), report as ( select name, word_count, msg_count, round((word_count / msg_count::numeric), 2) as words_per_msg from mc join ws_user as u on u.id = mc."user" order by msg_count desc ) select * from report
返回
wayslack=# ...; name | word_count | msg_count | words_per_msg ---------------+------------+-----------+--------------- jane | 34432 | 7489 | 4.60 wolever | 22871 | 4787 | 4.78 alex | 19977 | 4346 | 4.60 smith | 12090 | 2132 | 5.67 luke | 10099 | 1852 | 5.45 ...
提示:pg-histogram 对于可视化这些数据特别有用。
不成熟警告
警告:wayslack 仍然相对不成熟,并未完全经过测试。目前,它将存档
公开消息
私有群组
私有消息
所有上传的文件
所有链接预览
频道列表
用户列表
文件
但是,对于拥有 100 个以上用户或频道的团队,它可能会非常慢,没有任何配置选项,并且可能会随着时间的推移发现一些 bug。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
wayslack-0.3.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2eed2de94e8287277cd086951e3ff666a0586c89b5678339e961882b96f2b056 |
|
MD5 | 2a9a5b6bf6f1fe50da051a517e5cb3b8 |
|
BLAKE2b-256 | 9724eb1b1dd0267a434bbb1b1218b8758b8572caf5d0f5cee4032ac73b17e795 |
wayslack-0.3.1-py2-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e2627344ea74131004c9a23a6d237ffcbd54ba312588a6e0387028a01dfc60cd |
|
MD5 | f8f13de42681a60adb36228c7923ed7b |
|
BLAKE2b-256 | 6b17895f74a1cc7ae00c2a1c79349bd4e262b98cf9b44d8d728261c096032f4a |