Skip to content

Commit 5892ba1

Browse files
committed
内容渲染,如果不存在puppeteer,则用chrome
1 parent 2677b1b commit 5892ba1

File tree

1 file changed

+45
-44
lines changed

1 file changed

+45
-44
lines changed

utils/util.go

Lines changed: 45 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,15 @@ import (
5252

5353
//存储类型
5454

55-
//更多存储类型有待扩展
55+
// 更多存储类型有待扩展
5656
const (
5757
StoreLocal = "local"
5858
StoreOss = "oss"
5959
VirtualRoot = "virtualroot"
6060
unknown = "unknown"
6161
)
6262

63-
//分词器
63+
// 分词器
6464
var (
6565
seg gse.Segmenter
6666
te idf.TagExtracter
@@ -124,15 +124,15 @@ func GetLang(lang string) string {
124124
return "中文"
125125
}
126126

127-
//评分处理
127+
// 评分处理
128128
func ScoreFloat(score int) string {
129129
return fmt.Sprintf("%1.1f", float32(score)/10.0)
130130
}
131131

132-
//@param conf 邮箱配置
133-
//@param subject 邮件主题
134-
//@param email 收件人
135-
//@param body 邮件内容
132+
// @param conf 邮箱配置
133+
// @param subject 邮件主题
134+
// @param email 收件人
135+
// @param body 邮件内容
136136
func SendMail(conf *conf.SmtpConf, subject, email string, body string) error {
137137
msg := &mail.Message{
138138
Header: mail.Header{
@@ -152,27 +152,28 @@ func SendMail(conf *conf.SmtpConf, subject, email string, body string) error {
152152
return m.Send(msg)
153153
}
154154

155-
//渲染markdown为html并录入数据库
155+
// 渲染markdown为html并录入数据库
156156
func RenderDocumentById(id int) {
157157
//使用chromium-browser
158158
// chromium-browser --headless --disable-gpu --screenshot --no-sandbox --window-size=320,480 http://www.bookstack.cn
159159
link := "http://localhost:" + beego.AppConfig.DefaultString("httpport", "8181") + "/local-render?id=" + strconv.Itoa(id)
160-
name := beego.AppConfig.DefaultString("chrome", "chromium-browser")
161-
args := []string{"--headless", "--disable-gpu", "--screenshot", "--no-sandbox", "--window-size=320,480", link}
162-
if ok := beego.AppConfig.DefaultBool("puppeteer", false); ok {
163-
name = "node"
164-
args = []string{"crawl.js", "--url", link}
165-
}
166-
cmd := exec.Command(name, args...)
167-
beego.Info("render document by document_id:", cmd.Args)
168-
// 超过10秒,杀掉进程,避免长期占用
169-
time.AfterFunc(httpTimeout, func() {
170-
if cmd.Process != nil && cmd.Process.Pid != 0 {
171-
cmd.Process.Kill()
160+
chrome := beego.AppConfig.DefaultString("chrome", "chromium-browser")
161+
chromeArgs := []string{chrome, "--headless", "--disable-gpu", "--screenshot", "--no-sandbox", "--window-size=320,480", link}
162+
nodeArgs := []string{"node", "crawl.js", "--url", link}
163+
for _, v := range [][]string{chromeArgs, nodeArgs} {
164+
cmd := exec.Command(v[0], v[1:]...)
165+
beego.Info("render document by document_id:", cmd.Args)
166+
// 超过10秒,杀掉进程,避免长期占用
167+
time.AfterFunc(httpTimeout, func() {
168+
if cmd.Process != nil && cmd.Process.Pid != 0 {
169+
cmd.Process.Kill()
170+
}
171+
})
172+
if err := cmd.Run(); err != nil {
173+
beego.Error(err)
174+
continue
172175
}
173-
})
174-
if err := cmd.Run(); err != nil {
175-
beego.Error(err)
176+
return
176177
}
177178
}
178179

@@ -251,7 +252,7 @@ func RenderCoverByBookIdentify(identify string) (err error) {
251252
return
252253
}
253254

254-
//使用chrome采集网页HTML
255+
// 使用chrome采集网页HTML
255256
func CrawlByChrome(urlStr string, bookIdentify string) (cont string, err error) {
256257
if strings.Contains(strings.ToLower(urlStr), "bookstack") {
257258
return
@@ -354,11 +355,11 @@ func cropScreenshot(selector, jsonFile, pngFile string) (images map[string]map[i
354355
}
355356

356357
// 图片缩放居中裁剪
357-
//图片缩放居中裁剪
358-
//@param file 图片文件
359-
//@param width 图片宽度
360-
//@param height 图片高度
361-
//@return err 错误
358+
// 图片缩放居中裁剪
359+
// @param file 图片文件
360+
// @param width 图片宽度
361+
// @param height 图片高度
362+
// @return err 错误
362363
func CropImage(file string, width, height int) (err error) {
363364
var img image.Image
364365
img, err = imaging.Open(file)
@@ -376,12 +377,12 @@ func CropImage(file string, width, height int) (err error) {
376377
return imaging.Save(img, file)
377378
}
378379

379-
//采集HTML并把相对链接和相对图片
380-
//内容类型,contType:0表示markdown,1表示html,2表示文本
381-
//force:是否是强力采集
382-
//intelligence:是否是智能提取,智能提取,使用html2article,否则提取body
383-
//diySelecter:自定义选择器
384-
//注意:由于参数问题,采集并下载图片的话,在headers中加上key为"project"的字段,值为书籍的标识
380+
// 采集HTML并把相对链接和相对图片
381+
// 内容类型,contType:0表示markdown,1表示html,2表示文本
382+
// force:是否是强力采集
383+
// intelligence:是否是智能提取,智能提取,使用html2article,否则提取body
384+
// diySelecter:自定义选择器
385+
// 注意:由于参数问题,采集并下载图片的话,在headers中加上key为"project"的字段,值为书籍的标识
385386
func CrawlHtml2Markdown(urlstr string, contType int, force bool, intelligence int, diySelector string, excludeSelector []string, links map[string]string, headers ...map[string]string) (cont string, err error) {
386387
defer func() {
387388
if r := recover(); r != nil {
@@ -591,8 +592,8 @@ func HandleSVG(doc *goquery.Document, project string) *goquery.Document {
591592
return doc
592593
}
593594

594-
//操作图片显示
595-
//如果用的是oss存储,这style是avatar、cover可选项
595+
// 操作图片显示
596+
// 如果用的是oss存储,这style是avatar、cover可选项
596597
func ShowImg(img string, style ...string) (url string) {
597598
img = strings.ReplaceAll(img, "\\", "/")
598599
if strings.HasPrefix(img, "https://") || strings.HasPrefix(img, "http://") {
@@ -636,12 +637,12 @@ func Substr(s string, length int) string {
636637
return str
637638
}
638639

639-
//分页函数(这个分页函数不具有通用性)
640-
//rollPage:展示分页的个数
641-
//totalRows:总记录
642-
//currentPage:每页显示记录数
643-
//urlPrefix:url链接前缀
644-
//urlParams:url键值对参数
640+
// 分页函数(这个分页函数不具有通用性)
641+
// rollPage:展示分页的个数
642+
// totalRows:总记录
643+
// currentPage:每页显示记录数
644+
// urlPrefix:url链接前缀
645+
// urlParams:url键值对参数
645646
func NewPaginations(rollPage, totalRows, listRows, currentPage int, urlPrefix string, urlSuffix string, urlParams ...interface{}) html1.HTML {
646647
var (
647648
htmlPage, path string
@@ -746,7 +747,7 @@ func NewPaginations(rollPage, totalRows, listRows, currentPage int, urlPrefix st
746747
return html1.HTML(`<ul class="pagination">` + htmlPage + `</ul>`)
747748
}
748749

749-
//判断数据是否在map中
750+
// 判断数据是否在map中
750751
func InMap(maps map[int]bool, key int) (ret bool) {
751752
if _, ok := maps[key]; ok {
752753
return true

0 commit comments

Comments
 (0)