7 changed files with 202 additions and 28 deletions
@ -0,0 +1,43 @@ |
|||
package ffmpeg |
|||
|
|||
import ( |
|||
"os/exec" |
|||
"path/filepath" |
|||
) |
|||
|
|||
func Process(src, dst string, opts ...Option) error { |
|||
err := checkFFMPEG() |
|||
if err != nil { |
|||
return err |
|||
} |
|||
options := filterOptions(opts...) |
|||
appPath := filepath.Join( |
|||
ffmpegPath, |
|||
`ffmpeg`, |
|||
) |
|||
var args []string |
|||
args = append( |
|||
args, |
|||
`-i`, |
|||
src, |
|||
) |
|||
for _, option := range options { |
|||
args = append( |
|||
args, |
|||
option.Option(), |
|||
) |
|||
} |
|||
args = append( |
|||
args, |
|||
dst, |
|||
) |
|||
cmd := exec.Command( |
|||
appPath, |
|||
args..., |
|||
) |
|||
err = cmd.Run() |
|||
if err != nil { |
|||
return err |
|||
} |
|||
return nil |
|||
} |
@ -1,5 +0,0 @@ |
|||
package ffmpeg |
|||
|
|||
func Convert(src, dst string) { |
|||
|
|||
} |
@ -1 +0,0 @@ |
|||
package ffmpeg |
@ -0,0 +1,137 @@ |
|||
package zip |
|||
|
|||
import ( |
|||
"archive/zip" |
|||
"io" |
|||
"os" |
|||
"path/filepath" |
|||
) |
|||
|
|||
var ( |
|||
ErrLogger = func(err error) {} |
|||
CurrentLogger = func(file string) {} |
|||
) |
|||
|
|||
func ZIP(src, dst string) error { |
|||
var stat os.FileInfo |
|||
var err error |
|||
stat, err = os.Stat(src) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
var file *os.File |
|||
file, err = os.Create(dst) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
defer func() { |
|||
err := file.Close() |
|||
if err != nil { |
|||
ErrLogger(err) |
|||
} |
|||
}() |
|||
zipWriter := zip.NewWriter(file) |
|||
defer func() { |
|||
err := zipWriter.Close() |
|||
if err != nil { |
|||
ErrLogger(err) |
|||
} |
|||
}() |
|||
if !stat.IsDir() { |
|||
err = writeToZip( |
|||
zipWriter, |
|||
stat, |
|||
"", |
|||
src, |
|||
) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
return nil |
|||
} |
|||
var walker = func(path string, info os.FileInfo, err error) error { |
|||
if err != nil { |
|||
ErrLogger(err) |
|||
return nil |
|||
} |
|||
CurrentLogger(path) |
|||
err = writeToZip( |
|||
zipWriter, |
|||
info, |
|||
src, |
|||
path, |
|||
) |
|||
ErrLogger(err) |
|||
return nil |
|||
} |
|||
err = filepath.Walk( |
|||
src, |
|||
walker, |
|||
) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
return nil |
|||
} |
|||
|
|||
func UnZIP(src, dst string) error { |
|||
return nil |
|||
} |
|||
|
|||
func writeToZip( |
|||
zipWriter *zip.Writer, info os.FileInfo, |
|||
root, src string, |
|||
) error { |
|||
var header *zip.FileHeader |
|||
var writer io.Writer |
|||
var srcFile *os.File |
|||
var err error |
|||
isDir := info.IsDir() |
|||
header, err = zip.FileInfoHeader(info) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
if root == "" { |
|||
if isDir { |
|||
header.Name = filepath.Join( |
|||
filepath.Base(src), |
|||
`/`, |
|||
) |
|||
} else { |
|||
header.Name = filepath.Base(src) |
|||
} |
|||
} else { |
|||
header.Name, err = filepath.Rel( |
|||
root, |
|||
src, |
|||
) |
|||
if err != nil { |
|||
panic(err) |
|||
} |
|||
} |
|||
writer, err = zipWriter.CreateHeader(header) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
if isDir { |
|||
return nil |
|||
} |
|||
srcFile, err = os.Open(src) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
defer func() { |
|||
err := srcFile.Close() |
|||
if err != nil { |
|||
ErrLogger(err) |
|||
} |
|||
}() |
|||
_, err = io.Copy( |
|||
writer, |
|||
srcFile, |
|||
) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
return nil |
|||
} |
@ -1,5 +0,0 @@ |
|||
package uncompresser |
|||
|
|||
func UnZIP(src, dst string) error { |
|||
return nil |
|||
} |
Loading…
Reference in new issue