Slackのemojiを一括でダウンロードする

Slack のemoji(絵文字) を 別のワークスペースに移行するため、一括でダウンロードするスクリプトを書きました。

ぐぐるAPI トークン使ったやり方が出てきますが、自分は ブラウザ+コマンドラインでやりました。

一括でダウンロードする手順

https://(workspace).slack.com/customize/emoji を開き、ブラウザのDevtoolを開きNetworkのXHRから api/emoji.adminList のレスポンスをコピーしてファイルに保存します。この例だと emojis.json という名前にしました。

f:id:hush_in:20190324112739p:plain

下記のコマンドを実行するとDLできます。

jq -r '.emoji[] | "curl \(.url) -o \(.name)"' emojis.json | perl -pe 's/(\.([^\/]*?) -o .*)$/$1.$2/' | bash

解説

取ってきたJSONはこのような形になっているので、 jq コマンドで name と url を抜き出します

{
  "ok": true,
  "emoji": [
    {
      "name": "hoge",
      "url": "https://emoji.slack-edge.com/(team_id)/hoge/(hash).(拡張子)",
      "created": 1519043230
    },
    ...
  ]
}

stedolan.github.io

jq -r '.emoji[] | "curl \(.url) -o \(.name)"' emojis.json の結果は

curl https://emoji.slack-edge.com/(team_id)/hoge/(hash).(拡張子) -o hoge のようになります。

あとは 拡張子をつけるように置換すると

curl https://emoji.slack-edge.com/(team_id)/hoge/(hash).(拡張子) -o hoge.(拡張子) になって、

bash に渡して実行すれば画像を一括でダウンロードできます。

(シェル芸あまり得意ではないので、もっといいやり方があるかも…)

一括インポート

ちなみに emoji の一括インポートはこちらの拡張を使うとできます。 chrome.google.com

これで無事emojiの移行ができました。