diff --git a/main.go b/main.go index e9f9d3c..40be474 100644 --- a/main.go +++ b/main.go @@ -34,7 +34,7 @@ var ( concurrentJobs int videosLimit int maxVideoSize int - maxVideoLength float64 + maxVideoLength int ) func main() { @@ -69,7 +69,7 @@ func main() { cmd.Flags().IntVar(&concurrentJobs, "concurrent-jobs", 1, "how many jobs to process concurrently") cmd.Flags().IntVar(&videosLimit, "videos-limit", 1000, "how many videos to process per channel") cmd.Flags().IntVar(&maxVideoSize, "max-size", 2048, "Maximum video size to process (in MB)") - cmd.Flags().Float64Var(&maxVideoLength, "max-length", 2.0, "Maximum video length to process (in hours)") + cmd.Flags().IntVar(&maxVideoLength, "max-length", 2, "Maximum video length to process (in hours)") if err := cmd.Execute(); err != nil { fmt.Println(err) @@ -186,7 +186,7 @@ func ytSync(cmd *cobra.Command, args []string) { syncStatus, syncProperties, apiConfig, - maxVideoLength, + time.Duration(maxVideoLength)*time.Hour, ) err := sm.Start() if err != nil { diff --git a/manager/manager.go b/manager/manager.go index 2f831b9..50737af 100644 --- a/manager/manager.go +++ b/manager/manager.go @@ -30,7 +30,7 @@ type SyncManager struct { blobsDir string videosLimit int maxVideoSize int - maxVideoLength float64 + maxVideoLength time.Duration lbrycrdString string awsS3ID string awsS3Secret string @@ -43,7 +43,7 @@ type SyncManager struct { func NewSyncManager(syncFlags sdk.SyncFlags, maxTries int, refill int, limit int, concurrentJobs int, concurrentVideos int, blobsDir string, videosLimit int, maxVideoSize int, lbrycrdString string, awsS3ID string, awsS3Secret string, awsS3Region string, awsS3Bucket string, - syncStatus string, syncProperties *sdk.SyncProperties, apiConfig *sdk.APIConfig, maxVideoLength float64) *SyncManager { + syncStatus string, syncProperties *sdk.SyncProperties, apiConfig *sdk.APIConfig, maxVideoLength time.Duration) *SyncManager { return &SyncManager{ SyncFlags: syncFlags, maxTries: maxTries, @@ -171,7 +171,7 @@ func (s *SyncManager) Start() error { log.Infof("There are %d channels in the \"%s\" queue", len(channels)-i, q) maxVideoLength := s.maxVideoLength if c.TotalSubscribers < 1000 { - maxVideoLength = 1.0 + maxVideoLength = 1 * time.Hour } syncs = append(syncs, Sync{ APIConfig: s.apiConfig, diff --git a/manager/ytsync.go b/manager/ytsync.go index feebc37..f741190 100644 --- a/manager/ytsync.go +++ b/manager/ytsync.go @@ -73,7 +73,7 @@ type Sync struct { clientPublishAddress string publicKey string defaultAccountID string - MaxVideoLength float64 + MaxVideoLength time.Duration } func (s *Sync) AppendSyncedVideo(videoID string, published bool, failureReason string, claimName string, claimID string, metadataVersion int8, size int64) { @@ -224,7 +224,7 @@ func (s *Sync) setStatusSyncing() error { func (s *Sync) setExceptions() { if s.YoutubeChannelID == "UCwjQfNRW6sGYb__pd7d4nUg" { //@FreeTalkLive - s.MaxVideoLength = 9999.0 // skips max length checks + s.MaxVideoLength = 9999 * time.Hour // skips max length checks s.Manager.maxVideoSize = 0 } } diff --git a/sources/youtubeVideo.go b/sources/youtubeVideo.go index 9d11e8a..fd85bf1 100644 --- a/sources/youtubeVideo.go +++ b/sources/youtubeVideo.go @@ -3,7 +3,6 @@ package sources import ( "fmt" "io/ioutil" - "math" "os" "os/exec" "path/filepath" @@ -40,7 +39,7 @@ type YoutubeVideo struct { playlistPosition int64 size *int64 maxVideoSize int64 - maxVideoLength float64 + maxVideoLength time.Duration publishedAt time.Time dir string youtubeInfo *ytdl.YtdlVideo @@ -236,7 +235,7 @@ func (v *YoutubeVideo) download() error { if v.maxVideoLength > 0 { ytdlArgs = append(ytdlArgs, "--match-filter", - fmt.Sprintf("duration <= %d", int(math.Round(v.maxVideoLength*3600))), + fmt.Sprintf("duration <= %d", int(v.maxVideoLength.Seconds())), ) } @@ -432,7 +431,7 @@ type SyncParams struct { ChannelID string MaxVideoSize int Namer *namer.Namer - MaxVideoLength float64 + MaxVideoLength time.Duration Fee *sdk.Fee DefaultAccount string } @@ -452,9 +451,11 @@ func (v *YoutubeVideo) Sync(daemon *jsonrpc.Client, params SyncParams, existingV func (v *YoutubeVideo) downloadAndPublish(daemon *jsonrpc.Client, params SyncParams) (*SyncSummary, error) { var err error - if float64(v.youtubeInfo.Duration) > v.maxVideoLength { - log.Infof("%s is %d long and the limit is %s", v.id, v.youtubeInfo.Duration, (time.Duration(v.maxVideoLength*60) * time.Minute).String()) - logUtils.SendErrorToSlack("%s is %d long and the limit is %s", v.id, v.youtubeInfo.Duration, (time.Duration(v.maxVideoLength*60) * time.Minute).String()) + dur := time.Duration(v.youtubeInfo.Duration) * time.Second + + if dur > v.maxVideoLength { + log.Infof("%s is %d long and the limit is %s", v.id, dur.String(), v.maxVideoLength.String()) + logUtils.SendErrorToSlack("%s is %d long and the limit is %s", v.id, dur.String(), v.maxVideoLength.String()) return nil, errors.Err("video is too long to process") } for {