sync: check video file size during import process

This commit is contained in:
nemunaire 2019-01-19 01:13:17 +01:00
parent 2ac205bf83
commit 6042f9b477
2 changed files with 45 additions and 0 deletions

View file

@ -39,6 +39,45 @@ type Importer interface {
// GlobalImporter stores the main importer instance to use for global imports.
var GlobalImporter Importer
// getFileSize returns the size.
func getFileSize(i Importer, URI string) (size int64, err error) {
if i.exists(URI) {
if fi, err := i.stat(URI); err != nil {
return 0, err
} else {
return fi.Size(), nil
}
}
dirname := path.Dir(URI)
if i.exists(dirname) {
filename := path.Base(URI)
if files, err := i.listDir(dirname); err != nil {
return size, err
} else {
for _, fname := range []string{filename, filename + "."} {
found := false
for _, file := range files {
if matched, _ := path.Match(fname + "[0-9][0-9]", file); matched {
found = true
if fi, err := i.stat(path.Join(dirname, file)); err != nil {
return size, err
} else {
size += fi.Size()
}
}
}
if found {
return size, nil
}
}
}
}
return size, errors.New(fmt.Sprintf("%q: no such file or directory", URI))
}
// getFile helps to manage huge file transfert by concatenating splitted (with split(1)) files.
func getFile(i Importer, URI string, writer *bufio.Writer) error {
// Import file if it exists