nicoxiang/geektime-downloader

下载md格式的专栏,代码块没有语法高亮显示

Opened this issue · 16 comments

部分代码块没有语法高亮

手动加上代码块语言是不是就好了?

手动加上代码块语言是不是就好了?

是的

这个不太好实现,我看他接口返回的文章 content 里没有代码块语言的信息,不知道极客时间是怎么识别的,还是说都是统一用的一种,我先打个 help wanted 标签吧

ZJRui commented

为啥我总是请求超时

为啥我总是请求超时

下载什么类型课程的时候? @ZJRui
可以贴下错误信息

@nicoxiang

编程语言可以通过data-code-language属性获取。
image

@hiifong thanks,我后面有空了看下好不好加上

@hiifong 好像不是很好拿到,markdown的生成用的是接口返回的文章内容,并不是来自页面html,所以好像没法拿到这个html属性。

@hiifong 好像不是很好拿到,markdown的生成用的是接口返回的文章内容,并不是来自页面html,所以好像没法拿到这个html属性。

接口返回文章的内容是什么格式的?可以给一下接口吗?

接口: https://github.com/nicoxiang/geektime-downloader/blob/main/internal/geektime/client.go#L21

返回值中文章内容的字段: https://github.com/nicoxiang/geektime-downloader/blob/main/internal/geektime/response/struct_v1_article.go#L26

image
可以通过返回的<code class="language-javascript">的class属性获取编程语言,把language-去掉就是代码块的编程语言

@hiifong 感谢,我有空再细看下,如果有兴趣的话也欢迎 PR,markdown 用的是 html-to-markdown 的一个项目,应该是可以通过自定义一些 rule 实现的

@hiifong 我自己找了一个专栏里的几篇文章,接口的返回体里 <code> 标签是没有language class 的,但是网页上看 data-code-language 属性是有值的,应该是做了自动识别的,所以这个暂时没有好的方法实现

@hiifong 我自己找了一个专栏里的几篇文章,接口的返回体里 <code> 标签是没有language class 的,但是网页上看 data-code-language 属性是有值的,应该是做了自动识别的,所以这个暂时没有好的方法实现

或许可以设置一个默认语言

设置全局的默认语言不太好