From 491575df52db431c216464df92da72ccdaf7b86d Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Thu, 28 Oct 2021 15:12:18 -0400 Subject: [PATCH] remove gjson dependency --- examples/showProgress.go | 28 ++++++++++++++++++++++++++-- go.mod | 1 - go.sum | 15 +++------------ probe_test.go | 29 +++++++++++++++++++++++++++-- 4 files changed, 56 insertions(+), 17 deletions(-) diff --git a/examples/showProgress.go b/examples/showProgress.go index c9d4fd8..e3f7535 100644 --- a/examples/showProgress.go +++ b/examples/showProgress.go @@ -1,6 +1,7 @@ package examples import ( + "encoding/json" "fmt" "log" "math/rand" @@ -12,7 +13,6 @@ import ( "strings" "time" - "github.com/tidwall/gjson" ffmpeg "github.com/u2takey/ffmpeg-go" ) @@ -23,7 +23,10 @@ func ExampleShowProgress(inFileName, outFileName string) { if err != nil { panic(err) } - totalDuration := gjson.Get(a, "format.duration").Float() + totalDuration, err := probeDuration(a) + if err != nil { + panic(err) + } err = ffmpeg.Input(inFileName). Output(outFileName, ffmpeg.KwArgs{"c:v": "libx264", "preset": "veryslow"}). @@ -81,3 +84,24 @@ func TempSock(totalDuration float64) string { return sockFileName } + +type probeFormat struct { + Duration string `json:"duration"` +} + +type probeData struct { + Format probeFormat `json:"format"` +} + +func probeDuration(a string) (float64, error) { + pd := probeData{} + err := json.Unmarshal([]byte(a), &pd) + if err != nil { + return 0, err + } + f, err := strconv.ParseFloat(pd.Format.Duration, 64) + if err != nil { + return 0, err + } + return f, nil +} diff --git a/go.mod b/go.mod index b5708ba..95123d4 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,6 @@ require ( github.com/aws/aws-sdk-go v1.38.20 github.com/disintegration/imaging v1.6.2 github.com/stretchr/testify v1.4.0 - github.com/tidwall/gjson v1.9.1 github.com/u2takey/go-utils v0.0.0-20200713025200-4704d09fc2c7 gocv.io/x/gocv v0.25.0 ) diff --git a/go.sum b/go.sum index ea1516a..079d979 100644 --- a/go.sum +++ b/go.sum @@ -13,6 +13,7 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -30,18 +31,6 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/tidwall/gjson v1.6.3 h1:aHoiiem0dr7GHkW001T1SMTJ7X5PvyekH5WX0whWGnI= -github.com/tidwall/gjson v1.6.3/go.mod h1:BaHyNc5bjzYkPqgLq7mdVzeiRtULKULXLgZFKsxEHI0= -github.com/tidwall/gjson v1.9.1 h1:wrrRk7TyL7MmKanNRck/Mcr3VU1sdMvJHvJXzqBIUNo= -github.com/tidwall/gjson v1.9.1/go.mod h1:jydLKE7s8J0+1/5jC4eXcuFlzKizGrCKvLmBVX/5oXc= -github.com/tidwall/match v1.0.1 h1:PnKP62LPNxHKTwvHHZZzdOAOCtsJTjo6dZLCwpKm5xc= -github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= -github.com/tidwall/match v1.0.3 h1:FQUVvBImDutD8wJLN6c5eMzWtjgONK9MwIBCOrUJKeE= -github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.0.2 h1:Z7S3cePv9Jwm1KwS0513MRaoUe3S01WPbLNV40pwWZU= -github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/u2takey/go-utils v0.0.0-20200713025200-4704d09fc2c7 h1:PT7mE8HJE1mwaSazrOdSeByJ1FoV33/fHUZrBB+zwVU= github.com/u2takey/go-utils v0.0.0-20200713025200-4704d09fc2c7/go.mod h1:ATqKFpgjUIlhGRs8j59gXmu8Cmpo1QQEHV6vwu1hs28= gocv.io/x/gocv v0.25.0 h1:vM50jL3v9OEqWSi+urelX5M1ptZeFWA/VhGPvdTqsJU= @@ -51,6 +40,7 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -58,6 +48,7 @@ golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/probe_test.go b/probe_test.go index 41c56a7..0421781 100644 --- a/probe_test.go +++ b/probe_test.go @@ -1,14 +1,39 @@ package ffmpeg_go import ( + "encoding/json" + "fmt" + "strconv" "testing" "github.com/stretchr/testify/assert" - "github.com/tidwall/gjson" ) func TestProbe(t *testing.T) { data, err := Probe(TestInputFile1, nil) assert.Nil(t, err) - assert.Equal(t, gjson.Get(data, "format.duration").String(), "7.036000") + duration, err := probeOutputDuration(data) + assert.Nil(t, err) + assert.Equal(t, fmt.Sprintf("%f", duration), "7.036000") +} + +type probeFormat struct { + Duration string `json:"duration"` +} + +type probeData struct { + Format probeFormat `json:"format"` +} + +func probeOutputDuration(a string) (float64, error) { + pd := probeData{} + err := json.Unmarshal([]byte(a), &pd) + if err != nil { + return 0, err + } + f, err := strconv.ParseFloat(pd.Format.Duration, 64) + if err != nil { + return 0, err + } + return f, nil }