✨ Support getRating of video

This commit is contained in:
chaoqun committed 2024-03-23 23:16:01 +08:00
1 parent 646531c0ed
commit db2876321e
3 files changed
+65 -9

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
package video
import (
"github.com/eat-pray-ai/yutu/pkg/yutuber"
"github.com/spf13/cobra"
)
var getRatingCmd = &cobra.Command{
Use: "getRating",
Short: "get the rating of a video",
Long: "get the rating of a video, with the specified video ID",
Run: func(cmd *cobra.Command, args []string) {
v := yutuber.NewVideo(
yutuber.WithVideoId(id),
)
v.GetRating()
},
}
func init() {
videoCmd.AddCommand(getRatingCmd)
getRatingCmd.Flags().StringVarP(&id, "id", "i", "", "ID of the video")
getRatingCmd.MarkFlagRequired("id")
}
+2
View File
@@ -14,6 +14,8 @@ var (
tags []string
language string
thumbnail string
myRating string
chart string
channelId string
playListId string
category string
+37 -9
View File
@@ -17,28 +17,32 @@ var (
errUpdateVideo error = errors.New("failed to update video")
errOpenFile error = errors.New("failed to open file")
errSetThumbnail error = errors.New("failed to set thumbnail")
errGetRating error = errors.New("failed to get rating")
)
type Video struct {
id string
path string
file string
title string
desc string
tags []string
language string
thumbnail string
forKids bool
embeddable bool
category string
privacy string
myRating string
chart string
channelId string
playlistId string
category string
privacy string
forKids bool
embeddable bool
}
type VideoService interface {
List([]string, string)
Insert()
Update()
GetRating()
get([]string) *youtube.Video
setThumbnail()
validate()
@@ -61,6 +65,8 @@ func (v *Video) get(parts []string) []*youtube.Video {
call := service.Videos.List(parts)
if v.id != "" {
call = call.Id(v.id)
} else if v.myRating != "" {
call = call.MyRating(v.myRating)
}
response, err := call.Do()
if err != nil {
@@ -86,9 +92,9 @@ func (v *Video) List(parts []string, output string) {
}
func (v *Video) Insert() {
file, err := os.Open(v.path)
file, err := os.Open(v.file)
if err != nil {
log.Fatalln(errors.Join(errOpenFile, err), v.path)
log.Fatalln(errors.Join(errOpenFile, err), v.file)
}
defer file.Close()
@@ -185,6 +191,16 @@ func (v *Video) Update() {
utils.PrintJSON(res)
}
func (v *Video) GetRating() {
call := service.Videos.GetRating([]string{v.id})
res, err := call.Do()
if err != nil {
log.Fatalln(errors.Join(errGetRating, err), v.id)
}
utils.PrintJSON(res)
}
func (v *Video) setThumbnail(thumbnail string, service *youtube.Service) {
file, err := os.Open(thumbnail)
if err != nil {
@@ -203,9 +219,9 @@ func WithVideoId(id string) VideoOption {
}
}
func WithVideoPath(path string) VideoOption {
func WithVideoFile(file string) VideoOption {
return func(v *Video) {
v.path = path
v.file = file
}
}
@@ -239,6 +255,18 @@ func WithVideoThumbnail(thumbnail string) VideoOption {
}
}
func WithVideoMyRating(myRating string) VideoOption {
return func(v *Video) {
v.myRating = myRating
}
}
func WithVideoChart(chart string) VideoOption {
return func(v *Video) {
v.chart = chart
}
}
func WithVideoForKids(forKids bool) VideoOption {
return func(v *Video) {
v.forKids = forKids