【问题标题】:How can I get the FULL list of slack emoji through API?如何通过 API 获取 slack emoji 的完整列表?
【发布时间】:2017-01-22 06:50:19
【问题描述】:

我正在使用 slack API 来获取 emoji 的完整列表,所以当我收到消息时,我只需将 :squirrel: 替换为图标。

https://slack.com/api/emoji.list 方法就像一个魅力,但只返回 30 个图标。我认为这是正确的,因为他们在文档页面 (https://api.slack.com/methods/emoji.list) 中说:

此方法列出团队的自定义表情符号。

很公平,但我怎样才能获得关联图标名称/图标 URL 的完整列表?

【问题讨论】:

  • 恐怕不可能:/
  • 谢谢@qzb,你有任何链接支持你的答案吗?
  • 不,我只是假设如果可能的话,这些端点将在文档中描述。此外,https://slack.com/api/emoji.list 端点不支持任何分页。如果你想确定,你应该contact with slack team directly,但我想你已经知道了。
  • 刚刚从他们的推特上得到了回复:@stukki 目前,这是我们唯一的公共方法。我们正在研究未来一些更好的表情符号方法!

标签: slack-api slack


【解决方案1】:

由于似乎不可能为这些表情符号名称找到完整且最新的来源,因此我想出了这个浏览器控制台脚本。让它在 Slack 中运行,完成后它会下载完整的emoji.json。在撰写本文时,它包含 2485 个条目。

https://gist.github.com/8461e125072c2806301403a4e1eca891

看起来像这样:

{
  "+1": "https://a.slack-edge.com/production-standard-emoji-assets/13.0/google-medium/1f44d@2x.png",
  "+1::skin-tone-2": "https://a.slack-edge.com/production-standard-emoji-assets/13.0/google-medium/1f44d-1f3fb@2x.png",
  "+1::skin-tone-3": "https://a.slack-edge.com/production-standard-emoji-assets/13.0/google-medium/1f44d-1f3fc@2x.png",
  "+1::skin-tone-4": "https://a.slack-edge.com/production-standard-emoji-assets/13.0/google-medium/1f44d-1f3fd@2x.png",

如果您想要实际的表情符号而不是图像,您可以从图像文件名中解析出来,例如1f44d-1f3fd@2x.png"\u1f44d\u1f3fd"

【讨论】:

    【解决方案2】:

    据我所知,没有可用的 API 端点或支持的表情符号/关键字的完整列表。通过使用 React 开发人员工具(Chrome 扩展)检查 Slack 表情符号选择器,我能够获取完整集(包括工作区的自定义表情符号)。

    这是一个示例(JSON):

    ...
      {
        "name": "beers",
        "unicode": "1f37b",
        "id": "E1f37b",
        "keywords": ["bar", "beer", "clink", "drink", "mug", "ale", "food"]
      },
      {
        "name": "baby_bottle",
        "unicode": "1f37c",
        "id": "E1f37c",
        "keywords": ["baby", "bottle", "drink", "milk", "infant"]
      },
      {
        "name": "knife_fork_plate",
        "unicode": "1f37d-fe0f",
        "id": "E1f37d-fe0f",
        "keywords": ["cooking", "fork", "knife", "plate"]
      },
      {
        "name": "champagne",
        "unicode": "1f37e",
        "id": "E1f37e",
        "keywords": ["bar", "bottle", "cork", "drink", "popping"]
      },
      { "name": "popcorn", "unicode": "1f37f", "id": "E1f37f", "keywords": [] },
    ...
    

    完整转储(截至 2020 年 12 月 20 日,不包括自定义表情符号)https://gist.github.com/impressiver/87b5b9682d935efba8936898fbfe1919

    【讨论】:

      【解决方案3】:

      只是扩展了@Luca 的出色解决方案,我创建了一个shortnames => html unicode javascript 字典...

      下载:Slack emoticons to unicode html mapping.

      生成 - 2018 年 8 月 17 日,来源 https://raw.githubusercontent.com/iamcal/emoji-data/master/emoji.json

      示例:

      {
        "+1": "👍",
        "-1": "👎",
        "100": "💯",
        "1234": "🔢",
        "8ball": "🎱",
        "ab": "🆎",
        "abc": "🔤",
        "abcd": "🔡",
        "accept": "🉑",
        ...
        "zebra_face": "🦓",
        "zipper_mouth_face": "🤐",
        "zombie": "🧟",
        "zzz": "💤"
      }
      

      变成...

      { "+1": "?", "-1": "?", "100": "?",
      “1234”:“?”,“8ball”:“?”,“ab”:“?”,
      “abc”:“?”,“abcd”:“?”,“接受”:“?”,
      ...“zebra_face”:“?”,“zipper_mouth_face”:“?”,
      “僵尸”:“?”,“zzz”:“?”}

      【讨论】:

      【解决方案4】:

      我终于设法得到所有图标并使用它们,我在这里为任何想要使用类似的人发布解决方案:

      1. 首先,我通过thisslack URL 获得了 Slack Custom Emoji

      2. 由于在第 1 步中我们只获得自定义表情符号,因此了解 slack 使用以 unicode 字符定义的标准表情符号是很有用的,这些表情通过自定义句柄(如 :smiley::horse: 进行映射)。好在我们可以通过 slack 页面找到一个link to a JSON object with all the emoji mappings 链接。这个文件很大,但有我们需要的一切。

      3. 在该文件中,您将找到一组 javascript 对象,如下所示:

      {
       "name":"SMILING FACE WITH OPEN MOUTH",
       "unified":"1F603",
       "variations":[],
       "docomo":"E6F0", 
       "au":"E471",
       "softbank":"E057",
       "google":"FE330",
       "image":"1f603.png",
       "sheet_x":26,
       "sheet_y":18,"
       short_name":"smiley",
       "short_names":["smiley"],
       "text":":)",
       "texts":["=)","=-)"],
       "category":"People",
       "sort_order":5,
       "has_img_apple":true,
       "has_img_google":true,
       "has_img_twitter":true,
       "has_img_emojione":true
      }

      我使用了以下信息:

      • shortnames 是 slack 中使用的名称(您需要将 smiley 转换为 :smiley:
      • unified 是要使用的 unicode 字符(要直接在 HTML 页面中使用它,您需要添加 &#x 所以在这种情况下,您必须使用呈现的 😃 ?

      使用此信息,您将能够创建一个 slack-to-html 函数来解码表情符号并将它们显示在您想要的任何位置

      【讨论】:

        【解决方案5】:

        不完全确定这是否是您正在寻找的,但如果只是将图像映射到松弛样式的名称,这是一个非常好的库:

        https://github.com/iamcal/emoji-data

        因此,以他们自述文件中的示例为基础:

        具有 Slack 样式短名称 point_up 的表情符号具有十六进制值 261d,因此可以在此处找到:https://github.com/iamcal/emoji-data/blob/master/img-apple-160/261d.png

        (苹果,因为默认的松弛表情是苹果表情)

        【讨论】:

        • 另外:不是非常有用,但this 是 Slack 用来显示表情符号的实际精灵。
        • 嘿@wilhelm-klopp,感谢您的提示!是的,这非常有用!我找到了一个包含所有可能匹配项的 JSON,我正在使用它来获取 unicode 值并将图标呈现为 HTML。如果可行,我会发布解决方案!
        • 另外值得注意的是这个库是由 Slack CTO 维护的
        猜你喜欢
        • 2011-10-27
        • 1970-01-01
        • 1970-01-01
        • 2015-11-26
        • 2017-10-10
        • 2020-06-26
        • 1970-01-01
        • 1970-01-01
        • 2017-07-28
        相关资源
        最近更新 更多