85 lines
2.4 KiB
Go
85 lines
2.4 KiB
Go
// Copyright 2025 eat-pray-ai & OpenWaygate
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package caption
|
|
|
|
import (
|
|
"github.com/eat-pray-ai/yutu/cmd"
|
|
"github.com/eat-pray-ai/yutu/pkg/utils"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
const (
|
|
short = "Manage YouTube video captions"
|
|
long = "Manage YouTube video captions. Use this tool to list, insert, update, download, or delete video captions."
|
|
fileUsage = "Path to save the caption file"
|
|
attUsage = "unknown|primary|commentary|descriptive"
|
|
iasUsage = "Whether YouTube synchronized the caption track to the audio track in the video"
|
|
iscUsage = "Whether the track contains closed captions for the deaf and hard of hearing"
|
|
isdUsage = "whether the caption track is a draft"
|
|
iserUsage = "Whether caption track is formatted for 'easy reader'"
|
|
islUsage = "Whether the caption track uses large text for the vision-impaired"
|
|
languageUsage = "Language of the caption track"
|
|
nameUsage = "Name of the caption track"
|
|
tkUsage = "standard|ASR|forced"
|
|
vidUsage = "ID of the video"
|
|
tfmtUsage = "sbv|srt|vtt"
|
|
tlangUsage = "Translate the captions into this language"
|
|
)
|
|
|
|
var (
|
|
ids []string
|
|
file string
|
|
audioTrackType string
|
|
isAutoSynced = new(false)
|
|
isCC = new(false)
|
|
isDraft = new(false)
|
|
isEasyReader = new(false)
|
|
isLarge = new(false)
|
|
language string
|
|
name string
|
|
trackKind string
|
|
onBehalfOf string
|
|
onBehalfOfContentOwner string
|
|
videoId string
|
|
parts []string
|
|
tfmt string
|
|
tlang string
|
|
)
|
|
|
|
var captionCmd = &cobra.Command{
|
|
Use: "caption",
|
|
Short: short,
|
|
Long: long,
|
|
PersistentPreRun: func(cmd *cobra.Command, _ []string) {
|
|
resetFlags(cmd)
|
|
},
|
|
Run: func(cmd *cobra.Command, _ []string) {
|
|
_ = cmd.Help()
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
cmd.RootCmd.AddCommand(captionCmd)
|
|
}
|
|
|
|
func resetFlags(cmd *cobra.Command) {
|
|
flagSet := cmd.Flags()
|
|
boolFlags := map[string]**bool{
|
|
"isAutoSynced": &isAutoSynced,
|
|
"isCC": &isCC,
|
|
"isDraft": &isDraft,
|
|
"isEasyReader": &isEasyReader,
|
|
"isLarge": &isLarge,
|
|
}
|
|
utils.ResetFlags(boolFlags, flagSet)
|
|
|
|
if cmd.Name() == "update" {
|
|
stringFlags := map[string]*string{
|
|
"audioTrackType": &audioTrackType,
|
|
"trackKind": &trackKind,
|
|
}
|
|
utils.ResetFlags(stringFlags, flagSet)
|
|
}
|
|
}
|