GoDown/app/handlers/ytdl/20_AddMedia.go

41 lines
935 B
Go
Raw Permalink Normal View History

2022-04-29 01:00:04 +02:00
package ytdl
import (
"context"
"crypto/sha256"
"fmt"
"io"
"log"
"os"
"time"
"gitea.voser.cloud/Golang/GoDown/handlers/sqldb"
"gopkg.in/vansante/go-ffprobe.v2"
)
func AddMedia(ytid string) {
DB = sqldb.Opendb()
defer DB.Close()
fileinfo, err := os.Stat(Filepath)
check(err)
file, err := os.Open(Filepath)
check(err)
defer file.Close()
hash := sha256.New()
if _, err := io.Copy(hash, file); err != nil {
log.Fatal(err)
}
ctx, cancelFn := context.WithTimeout(context.Background(), 5*time.Second)
defer cancelFn()
ffprobe, err := ffprobe.ProbeURL(ctx, Filepath)
if err != nil {
log.Panicf("Error getting data: %v", err)
}
sqlinsert := fmt.Sprintf("INSERT INTO testdb.media (ytid,size,sha256sum,duration) VALUES ('%s','%d','%x','%f')", ytid, fileinfo.Size(), hash.Sum(nil), ffprobe.Format.DurationSeconds)
fmt.Println(sqlinsert)
dbinsert, err := DB.Query(sqlinsert)
check(err)
defer dbinsert.Close()
}