mirror of
https://github.com/filebrowser/filebrowser.git
synced 2026-01-23 02:35:10 +00:00
feat: migrate to vue 3 (#2689)
--------- Co-authored-by: Joep <jcbuhre@gmail.com> Co-authored-by: Omar Hussein <omarmohammad1951@gmail.com> Co-authored-by: Oleg Lobanov <oleg@lobanov.me>
This commit is contained in:
parent
0e3b35b30e
commit
5100e587d7
164 changed files with 12202 additions and 8047 deletions
|
|
@ -9,12 +9,14 @@ import (
|
|||
"hash"
|
||||
"image"
|
||||
"io"
|
||||
"io/fs"
|
||||
"log"
|
||||
"mime"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
|
|
@ -27,6 +29,11 @@ import (
|
|||
const PermFile = 0644
|
||||
const PermDir = 0755
|
||||
|
||||
var (
|
||||
reSubDirs = regexp.MustCompile("(?i)^sub(s|titles)$")
|
||||
reSubExts = regexp.MustCompile("(?i)(.vtt|.srt|.ass|.ssa)$")
|
||||
)
|
||||
|
||||
// FileInfo describes a file.
|
||||
type FileInfo struct {
|
||||
*Listing
|
||||
|
|
@ -277,8 +284,8 @@ func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func calculateImageResolution(fs afero.Fs, filePath string) (*ImageResolution, error) {
|
||||
file, err := fs.Open(filePath)
|
||||
func calculateImageResolution(fs_ afero.Fs, filePath string) (*ImageResolution, error) {
|
||||
file, err := fs_.Open(filePath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -343,12 +350,45 @@ func (i *FileInfo) detectSubtitles() {
|
|||
|
||||
base := strings.TrimSuffix(i.Name, ext)
|
||||
for _, f := range dir {
|
||||
if !f.IsDir() && strings.HasPrefix(f.Name(), base) && strings.HasSuffix(f.Name(), ".vtt") {
|
||||
i.Subtitles = append(i.Subtitles, path.Join(parentDir, f.Name()))
|
||||
// load all supported subtitles from subs directories
|
||||
// should cover all instances of subtitle distributions
|
||||
// like tv-shows with multiple episodes in single dir
|
||||
if f.IsDir() && reSubDirs.MatchString(f.Name()) {
|
||||
subsDir := path.Join(parentDir, f.Name())
|
||||
i.loadSubtitles(subsDir, base, true)
|
||||
} else if isSubtitleMatch(f, base) {
|
||||
i.addSubtitle(path.Join(parentDir, f.Name()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (i *FileInfo) loadSubtitles(subsPath, baseName string, recursive bool) {
|
||||
dir, err := afero.ReadDir(i.Fs, subsPath)
|
||||
if err == nil {
|
||||
for _, f := range dir {
|
||||
if isSubtitleMatch(f, "") {
|
||||
i.addSubtitle(path.Join(subsPath, f.Name()))
|
||||
} else if f.IsDir() && recursive && strings.HasPrefix(f.Name(), baseName) {
|
||||
subsDir := path.Join(subsPath, f.Name())
|
||||
i.loadSubtitles(subsDir, baseName, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func IsSupportedSubtitle(fileName string) bool {
|
||||
return reSubExts.MatchString(fileName)
|
||||
}
|
||||
|
||||
func isSubtitleMatch(f fs.FileInfo, baseName string) bool {
|
||||
return !f.IsDir() && strings.HasPrefix(f.Name(), baseName) &&
|
||||
IsSupportedSubtitle(f.Name())
|
||||
}
|
||||
|
||||
func (i *FileInfo) addSubtitle(path_ string) {
|
||||
i.Subtitles = append(i.Subtitles, path_)
|
||||
}
|
||||
|
||||
func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error {
|
||||
afs := &afero.Afero{Fs: i.Fs}
|
||||
dir, err := afs.ReadDir(i.Path)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue