You've already forked VptPassiveAdapter
Initial
This commit is contained in:
70
fs/local_adapter.go
Normal file
70
fs/local_adapter.go
Normal file
@ -0,0 +1,70 @@
|
||||
package fs
|
||||
|
||||
import (
|
||||
"ZhenTuLocalPassiveAdapter/config"
|
||||
"ZhenTuLocalPassiveAdapter/dto"
|
||||
"ZhenTuLocalPassiveAdapter/util"
|
||||
"fmt"
|
||||
"os"
|
||||
"sort"
|
||||
"time"
|
||||
)
|
||||
|
||||
type LocalAdapter struct {
|
||||
StorageConfig config.StorageConfig
|
||||
}
|
||||
|
||||
func (l *LocalAdapter) GetFileList(path string) ([]dto.File, error) {
|
||||
if l.StorageConfig.Path == "" {
|
||||
return nil, fmt.Errorf("未配置存储路径")
|
||||
}
|
||||
if path == "" {
|
||||
path = "/"
|
||||
}
|
||||
if path[0] != '/' {
|
||||
path = "/" + path
|
||||
}
|
||||
if path[len(path)-1] != '/' {
|
||||
path = path + "/"
|
||||
}
|
||||
// 读取文件夹下目录
|
||||
files, err := os.ReadDir(l.StorageConfig.Path + path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var fileList []dto.File
|
||||
for _, file := range files {
|
||||
if file.IsDir() {
|
||||
continue
|
||||
}
|
||||
if !util.IsVideoFile(file.Name()) {
|
||||
continue
|
||||
}
|
||||
info, err := file.Info()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
// TODO: 0点左右会出问题
|
||||
relDt := info.ModTime()
|
||||
startTime, stopTime, err := util.ParseStartStopTime(info.Name(), relDt)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if startTime.Equal(stopTime) {
|
||||
stopTime = stopTime.Add(time.Second * time.Duration(config.Config.Record.Duration))
|
||||
}
|
||||
fileList = append(fileList, dto.File{
|
||||
BasePath: l.StorageConfig.Path,
|
||||
Name: file.Name(),
|
||||
Path: path,
|
||||
Url: fmt.Sprintf("%s%s%s", l.StorageConfig.Path, path, file.Name()),
|
||||
StartTime: startTime,
|
||||
EndTime: stopTime,
|
||||
})
|
||||
sort.Slice(fileList, func(i, j int) bool {
|
||||
return fileList[i].StartTime.Before(fileList[j].StartTime)
|
||||
})
|
||||
}
|
||||
return fileList, nil
|
||||
}
|
Reference in New Issue
Block a user