41 lines
935 B
Go
41 lines
935 B
Go
|
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()
|
||
|
}
|