0%

WeiboCat With Golang

Jacky & Jason


说明

项目情况

  • 项目名:WeiboCat
  • 想要实现的功能:每天定时在微博上发一张家里喵的图片
  • 启动日期:2019年4月
  • 项目代码地址:GitHub-GoWeiboCat

项目框架

  • 微博登录
  • 微博发post
  • 本地图片文件夹管理
  • “闹钟”功能
  • 用.json作为config

待解决的问题

  • SDK for Golang 的使用?
  • 写自己的SDK?
  • OAuth2.0认证什么鬼啊?

版本 Change Log


过程中踩到的坑

movepic.go

把图片改名成时间

文件名不能包含这个符号,否则用os.Rename改名不成功,提示错误:The filename, directory name, or volume label syntax is incorrect.。同样地,新文件名不能包含*\/等字符。

正确的:

1
2
3
4
5
6
7
8
9
func renameImage(folderPath string, imageName string){
oldpath := folderPath + PTHSEP + imageName
fmt.Println("oldpath:", oldpath)
newpath := folderPath + PTHSEP + time.Now().Format("2006-01-02-15-04-05") + ".png"
fmt.Println("newpath:", newpath)
err := os.Rename(oldpath, newpath)
fmt.Println("err:", err)
return
}

错误的:

1
2
3
……
newpath := folderPath + PTHSEP + time.Now().Format("2006-01-02-15:04:05") + ".png"
……

判断文件夹中是否有图片

先用ioutil.ReadDir(imagesFolderPath)读取目录下文件,再根据拓展名判断是否是规定格式的图片,不是文件的剔除,剔除后,检查时候还存在剩余图片。

此时应该用len()判断,而不是判断切片是否为nil

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
images, err := ioutil.ReadDir(imagesFolderPath)
if err != nil {
return err
}

for i := 0; i < len(images); {
if strings.HasSuffix(strings.ToLower(images[i].Name()), ".jpg") || strings.HasSuffix(strings.ToLower(images[i].Name()), ".png") || strings.HasSuffix(strings.ToLower(images[i].Name()), ".jpeg") {
i++
} else {
images = append(images[:i], images[i+1:]...)
}
}

if len(images) == 0 {
fmt.Printf("\"%s\"文件夹中未找到 .jpg/.png/.jpeg 后缀的图片!\n", IMAGESFOLDER)
err = errors.New("图片库文件夹中未发现图片!")
return err
}

欢迎关注我的其它发布渠道