| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package filter
- import (
- "os"
- "path/filepath"
- "strings"
- "github.com/sirupsen/logrus"
- )
- func SkipFileInfo(l *logrus.Logger, curFile os.DirEntry, fileFullPath string) bool {
- if curFile.IsDir() == true {
- // 排除缓存文件夹,见 #532
- if strings.HasPrefix(curFile.Name(), ".@__thumb") == true {
- l.Debugln("curFile is dir and match `.@__thumb`, skip")
- return true
- }
- }
- // 跳过不符合的文件,比如 MAC OS 下可能有缓存文件,见 #138
- fi, err := curFile.Info()
- if err != nil {
- l.Errorln("curFile.Info:", curFile.Name(), err)
- return true
- }
- // 封面缓存文件夹中的文件都要跳过 .@__thumb #581
- // 获取这个文件的父级文件夹的名称,然后判断是否是 .@__thumb 开头的
- parentFolderName := filepath.Base(filepath.Dir(fileFullPath))
- if strings.HasPrefix(parentFolderName, ".@__thumb") == true {
- l.Debugln("curFile is in .@__thumb folder, skip")
- return true
- }
- // 软链接问题 #558
- if fi.Size() < 1000 {
- fileInfo, err := os.Lstat(fileFullPath)
- if err != nil {
- l.Errorln("os.Lstat:", fileFullPath, err)
- return true
- }
- if fileInfo.Mode()&os.ModeSymlink != 0 {
- // 确认是软连接
- l.Debugln("curFile is symlink,", fileFullPath)
- //realPath, err := filepath.EvalSymlinks(fileFullPath)
- //if err == nil {
- // fmt.Println("Path:", realPath)
- //}
- } else {
- l.Debugln("curFile.Size() < 1000:", curFile.Name())
- return true
- }
- }
- if fi.Size() == 4096 && strings.HasPrefix(curFile.Name(), "._") == true {
- l.Debugln("curFile.Size() == 4096 && Prefix Name == ._*", curFile.Name())
- return true
- }
- // 跳过预告片,见 #315
- if strings.HasSuffix(strings.ReplaceAll(curFile.Name(), filepath.Ext(curFile.Name()), ""), "-trailer") == true {
- l.Debugln("curFile Name has -trailer:", curFile.Name())
- return true
- }
- return false
- }
|