有没有办法将Markdown文件上传为Slack帖子?

时间:2016-12-21 20:43:54

标签: slack-api

尝试找出将Markdown文件上传为频道中格式化帖子的方法。是否有API调用来执行此操作?

files.upload似乎只支持Markdown原始上传。

3 个答案:

答案 0 :(得分:5)

不是100%肯定你的意思" Markdown原始上传" vs" Markdown文件"但是files.upload适用于.md文件。你似乎已经开始工作了:

curl -F filetype=post -F content="# [like this](https://someurl)" -F channels=C1.....7L -F token=xoxp-... https://slack.com/api/files.upload

...现在为content="..."

交换file=@post.md
curl -F filetype=post -F file=@post.md -F channels=C1.....7L -F token=xoxp-... https://slack.com/api/files.upload

这样做是将标准MD文件(例如从github)转换为Slack Post文档。它会尝试保留所有格式,例如标题,代码等。

但是,请记住,Slack仅支持MD的子集,例如,表格无法正确显示。

答案 1 :(得分:1)

看起来没有。

Slack help开始,格式化列表的正确方法是使用Shift + Enter,并粘贴实际的项目符号字符(•)。它不会为你转换你的星号(例如)。

看起来非常基本,考虑到Slack如何使用一些降价功能,以及Slack的使用范围有多广泛!我想我应该提出功能请求?

答案 2 :(得分:1)

我正在使用following Python script将Markdown最有用的子集转换为Slack格式。它代替:

  • 带有项目符号的连字符列表
  • 带有双星号**的双粗体星号*
  • 标头#(带有粗体星号*

该脚本假定列表缩进两个空格,并且在Markdown中使用单个下划线_斜体,因此它已经与Slack兼容。

import re
import sys

REGEX_REPLACE = (
  (re.compile('^- ', flags=re.M), '• '),
  (re.compile('^  - ', flags=re.M), '  ◦ '),
  (re.compile('^    - ', flags=re.M), '    ⬩ '),
  (re.compile('^      - ', flags=re.M), '    ◽ '),
  (re.compile('^#+ (.+)$', flags=re.M), r'*\1*'),
  (re.compile('\*\*'), '*'),
)

def main(i, o):
  s = i.read()
  for regex, replacement in REGEX_REPLACE:
    s = regex.sub(replacement, s)
  o.write(s)

if __name__ == '__main__':
  with open(sys.argv[1], encoding='utf-8') as i, \
       open(sys.argv[1] + '.slack', 'w', encoding='utf-8') as o:
    main(i, o)

对于大多数用途而言,结果可能已经足够好了。

运行脚本

python markdown-to-slack.py filename.md

结果将在filename.md.slack中。