Leanote自动提取第一张图片

 果农   2020-01-01 04:44   806 人阅读  0 条评论

目前采用的博客主题需要有一张图片,但是leanote客户端提交的内容默认似乎不处理这个,在网页上打开博客,编辑修改的话倒是正常的,所以,就研究了一下leanote的源码,然后,修改了一下API的相关代码来实现这个操作

修改定义

文件:app/info/Api.go
结构:ApiNote
将原代码中注释掉的ImgSrc给取掉注释,修改后类似这样

type ApiNote struct {
    NoteId     string
    NotebookId string
    UserId     string
    Title      string
    Desc       string
    ImgSrc     string
    Tags       []string
    Abstract   string
    Content    string
    IsMarkdown bool
    //  FromUserId string // 为共享而新建
    IsBlog      bool // 是否是blog, 更新note不需要修改, 添加note时才有可能用到, 此时需要判断notebook是否设为Blog
    IsTrash     bool
    IsDeleted   bool
    Usn         int
    Files       []NoteFile
    CreatedTime time.Time
    UpdatedTime time.Time
    PublicTime  time.Time
}

修改代码

这里共有两处要个性,一处是添加笔记,一处是修改笔记

添加笔记

文件:app/controllers/api/ApiNoteController.go
函数:AddNote
需要修改两处,第一处:
搜索:

noteOrContent.Files[i] = file

在下面添加:

if(noteOrContent.ImgSrc == "") {
    noteOrContent.ImgSrc = "/api/file/getImage?fileId=" + fileId
}

第二处,将下面的

note := info.Note{UserId: userId,
    NoteId:     noteId,
    NotebookId: bson.ObjectIdHex(noteOrContent.NotebookId),
    Title:      noteOrContent.Title,
    Tags:       noteOrContent.Tags,
    Desc:       noteOrContent.Desc,
    //      ImgSrc:     noteOrContent.ImgSrc,
    IsBlog:      noteOrContent.IsBlog,
    IsMarkdown:  noteOrContent.IsMarkdown,
    AttachNum:   attachNum,
    CreatedTime: noteOrContent.CreatedTime,
    UpdatedTime: noteOrContent.UpdatedTime,
}

中的注释给取掉:

note := info.Note{UserId: userId,
    NoteId:     noteId,
    NotebookId: bson.ObjectIdHex(noteOrContent.NotebookId),
    Title:      noteOrContent.Title,
    Tags:       noteOrContent.Tags,
    Desc:       noteOrContent.Desc,
    ImgSrc:     noteOrContent.ImgSrc,
    IsBlog:      noteOrContent.IsBlog,
    IsMarkdown:  noteOrContent.IsMarkdown,
    AttachNum:   attachNum,
    CreatedTime: noteOrContent.CreatedTime,
    UpdatedTime: noteOrContent.UpdatedTime,
}

修改

文件:app/controllers/api/ApiNoteController.go
函数:AddNote
同样有两处,第一处基本上相同
搜索:

noteOrContent.Files[i] = file

在下面添加:

if(noteOrContent.ImgSrc == "" ) {
    noteOrContent.ImgSrc = "/api/file/getImage?fileId=" + fileId
}

第二处,往下找关键字ImgSrc,找到后,将

/*
if c.Has("ImgSrc") {
    needUpdateNote = true
    noteUpdate["ImgSrc"] = noteOrContent.ImgSrc
}
*/

替换,或者在下面添加:

if(noteOrContent.ImgSrc != "") {
    needUpdateNote = true
    noteUpdate["ImgSrc"] = noteOrContent.ImgSrc
}

重新编译,启动即可。

一个BUG

今天在使用的时候发现,原来附件和图片是使用同一接口来处理的,所以,如果先上传的是附件的话,就会取错图片,所以需要修正一下,目前,修正的代码已经提交github

本文地址:http://haolie.net/post/715.html
版权声明:本文为原创文章,版权归 果农 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?