我试着用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的情况

    1. 打开终端

 

    1. 使用cd命令移动到文件夹

 

    在./slack_emoji_mover中运行slack_emoji_mover

如果是Windows系统的话

    双击slack_emoji_mover

注意:
有时候可能无法连接到Slack的API或自定义页面,并且可能会失败。
当失败时,请等待一段时间后再次尝试。

你在做什么事情?

Ruby版本的功能与这个动作没有太大的区别。简单来说,它的功能如下所述。

    1. 读取初始设置文件和标准emoji列表文件

 

    1. 从Slack的API获取emoji的JSON数据

 

    1. 登录到Slack团队,并打开emoji自定义页面

 

    1. 对Web页面上的emoji名称进行爬取

 

    1. 从第3步获取的emoji列表中排除第2步的标准emoji和第6步获取的emoji

 

    1. 下载emoji的图像

 

    上传到Slack的团队中

这次我们使用了Go语言的一个名为Surf的库,作为Mechanize的替代。
事实上,我还没有支持文件上传,所以有点焦虑,但是我很庆幸在拉取请求中找到了支持文件版本…。
↑上述拉取请求已被合并。

另外,我们还对Slack的表情符号页面进行了爬取,将已经注册的表情符号排除在外,作为附加功能。这样一来,即使我们想要定期执行表情符号的同步,只需上传差异部分,大大减轻了负荷。

我制作完的感想

我从未接触过Golang,可以说是未经考虑就开始了,但至少我做出来一个工作的东西感到很好。
虽然只是相对了解Java,但我认为语法还算容易理解。
不过目前还只是在真正完成且运作的阶段,如果有任何错误,请及时联系我。

另外,我认为我对Golang的写作方式还不够熟练,如果有任何奇怪的地方,请务必指正。由于这次学到了以下的内容,我认为这是一次相当不错的经验。

    • 基本的なファイルの読み込み&書き込み

 

    • 配列をfor … rangeで回す

 

    • httpを使って画像をダウンロード こちらの記事を参考にしました

Web APIを叩いて取得したJSONをデコードする こちらの記事を参考にしました

Surfを使ってのWebスクレイピング

我正在考虑尝试使用Golang来创作一些东西。

祝你有一个美好的Slack生活!

广告
将在 10 秒后关闭
bannerAds