Add query method to retrieve metadata from db

This commit is contained in:
Zoe Roux 2024-07-25 19:21:24 +02:00
parent 0f091618b7
commit f16fa9686c
3 changed files with 81 additions and 3 deletions

View File

@ -1,8 +1,11 @@
module github.com/zoriya/kyoo/transcoder
go 1.21
go 1.22
require github.com/labstack/echo/v4 v4.12.0 // direct
require (
github.com/jmoiron/sqlx v1.4.0
github.com/labstack/echo/v4 v4.12.0
)
require (
github.com/disintegration/imaging v1.6.2
@ -17,7 +20,9 @@ require (
golang.org/x/image v0.10.0 // indirect
golang.org/x/net v0.24.0 // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/text v0.14.0
golang.org/x/time v0.5.0 // indirect
gopkg.in/vansante/go-ffprobe.v2 v2.2.0
)
replace github.com/jmoiron/sqlx v1.4.0 => github.com/kmpm/sqlx v1.3.5-0.20220614102404-845a9a7f1301

View File

@ -2,17 +2,25 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c=
github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/kmpm/sqlx v1.3.5-0.20220614102404-845a9a7f1301 h1:BX43DPpHzm4o6tYs3W+92d0F3iCD5/n4zKjv1FV8Ews=
github.com/kmpm/sqlx v1.3.5-0.20220614102404-845a9a7f1301/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ=
github.com/labstack/echo/v4 v4.12.0 h1:IKpw49IMryVB2p1a4dzwlhP1O2Tf2E0Ir/450lH+kI0=
github.com/labstack/echo/v4 v4.12.0/go.mod h1:UP9Cr2DJXbOK3Kr9ONYzNowSh7HP0aG0ShAyycHSJvM=
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg=
github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=

View File

@ -0,0 +1,65 @@
package src
import (
"github.com/jmoiron/sqlx"
)
type MetadataService struct {
database *sqlx.DB
}
func (s MetadataService) GetMetadata(path string, sha string) (*MediaInfo, error) {
var ret MediaInfo
rows, err := s.database.Queryx(`
select * from info as i where i.sha=$1;
select * from videos as v where v.sha=$1;
select * from audios as a where a.sha=$1;
select * from subtitles as s where s.sha=$1;
select * from chapters as c where c.sha=$1;
`,
sha,
)
if err != nil {
return nil, err
}
defer rows.Close()
if !rows.Next() {
if err = rows.Err(); err != nil {
return nil, err
}
// TODO: retrieve mediainfo from file + store them in db.
return &ret, nil
}
rows.StructScan(ret)
rows.NextResultSet()
for rows.Next() {
var video Video
rows.StructScan(video)
ret.Videos = append(ret.Videos, video)
}
rows.NextResultSet()
for rows.Next() {
var audio Audio
rows.StructScan(audio)
ret.Audios = append(ret.Audios, audio)
}
rows.NextResultSet()
for rows.Next() {
var subtitle Subtitle
rows.StructScan(subtitle)
ret.Subtitles = append(ret.Subtitles, subtitle)
}
rows.NextResultSet()
for rows.Next() {
var chapter Chapter
rows.StructScan(chapter)
ret.Chapters = append(ret.Chapters, chapter)
}
return &ret, nil
}