tiktok-dl/models/upload.go

65 lines
1.3 KiB
Go
Raw Normal View History

2020-01-19 04:11:53 +02:00
package models
import (
"encoding/json"
2020-01-20 19:42:34 +02:00
"os"
2020-01-19 04:11:53 +02:00
"strings"
2020-03-22 02:10:24 +02:00
res "../resources"
checkErr "../utils/checkErr"
log "../utils/log"
2020-01-19 04:11:53 +02:00
)
// Upload - Upload object
type Upload struct {
URL string `json:"url"`
2020-01-20 19:42:34 +02:00
ShareLink string `json:"shareLink"`
Caption string `json:"caption"`
Uploader string `json:"uploader"`
2020-01-20 19:42:34 +02:00
Sound Sound `json:"sound"`
}
// Sound - Sound object
type Sound struct {
Title string `json:"title"`
Link string `json:"link"`
2020-01-19 04:11:53 +02:00
}
// ParseUploads - Parses json uploads array
func ParseUploads(str string) []Upload {
var uploads []Upload
json.Unmarshal([]byte(str), &uploads)
return uploads
}
// ParseUpload - Parses json uploads array
func ParseUpload(str string) Upload {
var upload Upload
json.Unmarshal([]byte(str), &upload)
return upload
}
2020-01-19 04:11:53 +02:00
// GetUploadID - Returns upload id
func (u Upload) GetUploadID() string {
parts := strings.Split(u.ShareLink, "/")
return parts[len(parts)-1]
}
2020-01-20 19:42:34 +02:00
// WriteToFile - Writes object to file
func (u Upload) WriteToFile(outputPath string) {
bytes, err := json.Marshal(u)
if err != nil {
2020-03-22 02:10:24 +02:00
log.Logf(res.ErrorCouldNotSerializeJSON, u.GetUploadID())
2020-01-20 19:42:34 +02:00
panic(err)
}
// Create the file
out, err := os.Create(outputPath)
2020-03-22 02:10:24 +02:00
checkErr.CheckErr(err)
2020-01-20 19:42:34 +02:00
defer out.Close()
// Write to file
_, err = out.Write(bytes)
2020-03-22 02:10:24 +02:00
checkErr.CheckErr(err)
2020-01-20 19:42:34 +02:00
}