我试着用Go重新编写了一个将Slack表情符号移动到另一个团队的脚本
2019/07/07追加说明:由于Slack的规格变更,导致前面的结构无法正常运行。抱歉!
这篇文章是2016年Slack第二部分圣诞冷链的第18篇文章。
※ 12/20做了一些对文章内容的修正。
首先
我之前写了一篇关于用Ruby编写的将Slack表情迁移到另一个团队的脚本的文章。然而,出于以下原因,我感觉实际运行起来有点困难。
-
- Slackのemojiを引っ越すためだけにRubyの環境を作るのは面倒
- 世の中のSlackユーザーはエンジニアばかりでない
考虑到上述的理由,我觉得如果能更简单地执行,那将更加方便。
在这种情况下,我想起了我在VimConf 2016上听到的热情洋溢的Golang推广演讲。我想,如果我用Golang编写并分发可执行文件,至少就不需要进行环境设置了,这样一来就能简化很多事情。
使用Golang开发有什么好处?
Golang可以将编写的源代码进行交叉编译,从一个源代码文件可以创建出适用于Mac、Windows、Linux等环境可执行的文件。
不需要进行环境设置就能正常运行,真是太棒了。
此外,与在Java虚拟机上运行的Java不同,机器语言编译并执行的速度非常快。
请进一步查阅官方网站或通过Google搜索以获取详细信息。
因此我做了这个。
松弛表情移动者启动
由于在Release中已经包含了构建的模块,请使用那个进行操作。
我们为Windows和Mac分别提供了zip文件,请下载所需的文件。
表示如下:
此外,Windows系统可以双击来执行,而Mac系统则需要从终端执行。
用法
使用方法和Ruby版本几乎相同。
请在emoji_conf.txt文件中填写所需的信息,无需进行环境设置。
搬家目的地的信息
-
- Slack team URL
-
- Slackにログインするためのメールアドレス
- Slackにログインするためのパスワード
搬家前住所的资料
- token
如果已经在机器人等上使用了token,那么在那里也可以,但如果没有的话,需要生成一个。
请从以下URL生成迁移前Slack团队的token。
测试token生成器
关于令牌生成方法,以下文章也可以作为参考。
希望能看到更多公司的负载平衡君Slack表情符号。
请注意,由于使用令牌,您可以做许多事情,因此请务必不要告诉他人。
请按照以下步骤执行,仅在全部填写完成后:
如果是Mac的情况
-
- 打开终端
-
- 使用cd命令移动到文件夹
- 在./slack_emoji_mover中运行slack_emoji_mover
如果是Windows系统的话
- 双击slack_emoji_mover
注意:
有时候可能无法连接到Slack的API或自定义页面,并且可能会失败。
当失败时,请等待一段时间后再次尝试。
你在做什么事情?
Ruby版本的功能与这个动作没有太大的区别。简单来说,它的功能如下所述。
-
- 读取初始设置文件和标准emoji列表文件
-
- 从Slack的API获取emoji的JSON数据
-
- 登录到Slack团队,并打开emoji自定义页面
-
- 对Web页面上的emoji名称进行爬取
-
- 从第3步获取的emoji列表中排除第2步的标准emoji和第6步获取的emoji
-
- 下载emoji的图像
- 上传到Slack的团队中
这次我们使用了Go语言的一个名为Surf的库,作为Mechanize的替代。
事实上,我还没有支持文件上传,所以有点焦虑,但是我很庆幸在拉取请求中找到了支持文件版本…。
↑上述拉取请求已被合并。
另外,我们还对Slack的表情符号页面进行了爬取,将已经注册的表情符号排除在外,作为附加功能。这样一来,即使我们想要定期执行表情符号的同步,只需上传差异部分,大大减轻了负荷。
我制作完的感想
我从未接触过Golang,可以说是未经考虑就开始了,但至少我做出来一个工作的东西感到很好。
虽然只是相对了解Java,但我认为语法还算容易理解。
不过目前还只是在真正完成且运作的阶段,如果有任何错误,请及时联系我。
另外,我认为我对Golang的写作方式还不够熟练,如果有任何奇怪的地方,请务必指正。由于这次学到了以下的内容,我认为这是一次相当不错的经验。
-
- 基本的なファイルの読み込み&書き込み
-
- 配列をfor … rangeで回す
-
- httpを使って画像をダウンロード こちらの記事を参考にしました
Web APIを叩いて取得したJSONをデコードする こちらの記事を参考にしました
Surfを使ってのWebスクレイピング
我正在考虑尝试使用Golang来创作一些东西。
祝你有一个美好的Slack生活!