diff --git a/main.go b/main.go index ef0915a..4b7b132 100644 --- a/main.go +++ b/main.go @@ -37,6 +37,7 @@ var ( maxVideoSize int maxVideoLength float64 removeDBUnpublished bool + upgradeMetadata bool ) func main() { @@ -57,7 +58,8 @@ func main() { cmd.Flags().BoolVar(&skipSpaceCheck, "skip-space-check", false, "Do not perform free space check on startup") cmd.Flags().BoolVar(&syncUpdate, "update", false, "Update previously synced channels instead of syncing new ones") cmd.Flags().BoolVar(&singleRun, "run-once", false, "Whether the process should be stopped after one cycle or not") - cmd.Flags().BoolVar(&singleRun, "remove-db-unpublished", false, "Remove videos from the database that are marked as published but aren't really published") + cmd.Flags().BoolVar(&removeDBUnpublished, "remove-db-unpublished", false, "Remove videos from the database that are marked as published but aren't really published") + cmd.Flags().BoolVar(&upgradeMetadata, "upgrade-metadata", false, "Upgrade videos if they're on the old metadata version") cmd.Flags().StringVar(&syncStatus, "status", "", "Specify which queue to pull from. Overrides --update") cmd.Flags().StringVar(&channelID, "channelID", "", "If specified, only this channel will be synced.") cmd.Flags().Int64Var(&syncFrom, "after", time.Unix(0, 0).Unix(), "Specify from when to pull jobs [Unix time](Default: 0)") @@ -191,6 +193,7 @@ func ytSync(cmd *cobra.Command, args []string) { apiConfig, maxVideoLength, removeDBUnpublished, + upgradeMetadata, ) err := sm.Start() if err != nil { diff --git a/manager/manager.go b/manager/manager.go index ff533d8..02b277f 100644 --- a/manager/manager.go +++ b/manager/manager.go @@ -40,12 +40,13 @@ type SyncManager struct { syncProperties *sdk.SyncProperties apiConfig *sdk.APIConfig removeDBUnpublished bool + upgradeMetadata bool } func NewSyncManager(stopOnError bool, maxTries int, takeOverExistingChannel bool, refill int, limit int, skipSpaceCheck bool, syncUpdate bool, concurrentJobs int, concurrentVideos int, blobsDir string, videosLimit int, maxVideoSize int, lbrycrdString string, awsS3ID string, awsS3Secret string, awsS3Region string, awsS3Bucket string, - syncStatus string, singleRun bool, syncProperties *sdk.SyncProperties, apiConfig *sdk.APIConfig, maxVideoLength float64, removeDBUnpublished bool) *SyncManager { + syncStatus string, singleRun bool, syncProperties *sdk.SyncProperties, apiConfig *sdk.APIConfig, maxVideoLength float64, removeDBUnpublished bool, upgradeMetadata bool) *SyncManager { return &SyncManager{ stopOnError: stopOnError, maxTries: maxTries, @@ -70,6 +71,7 @@ func NewSyncManager(stopOnError bool, maxTries int, takeOverExistingChannel bool syncProperties: syncProperties, apiConfig: apiConfig, removeDBUnpublished: removeDBUnpublished, + upgradeMetadata: upgradeMetadata, } } diff --git a/manager/setup.go b/manager/setup.go index be1d84d..fa1ffc6 100644 --- a/manager/setup.go +++ b/manager/setup.go @@ -84,7 +84,7 @@ func (s *Sync) walletSetup() error { } minBalance := (float64(numOnSource)-float64(numPublished))*(publishAmount+0.1) + channelClaimAmount - if s.Manager.syncStatus == StatusPendingUpgrade { + if s.Manager.upgradeMetadata { videosToUpgrade := 0 for _, v := range s.syncedVideos { if v.Published && v.MetadataVersion < 2 { diff --git a/manager/ytsync.go b/manager/ytsync.go index aad209a..307f6f0 100644 --- a/manager/ytsync.go +++ b/manager/ytsync.go @@ -833,8 +833,9 @@ func (s *Sync) processVideo(v video) (err error) { s.syncedVideosMux.RLock() sv, ok := s.syncedVideos[v.ID()] s.syncedVideosMux.RUnlock() + newMetadataVersion := int8(2) alreadyPublished := ok && sv.Published - isUpgradeSync := s.Manager.syncStatus == StatusPendingUpgrade + videoRequiresUpgrade := s.Manager.upgradeMetadata && sv.MetadataVersion < newMetadataVersion neverRetryFailures := []string{ "Error extracting sts from embedded url response", @@ -850,11 +851,10 @@ func (s *Sync) processVideo(v video) (err error) { return nil } - if alreadyPublished && !isUpgradeSync { + if alreadyPublished && !videoRequiresUpgrade { log.Println(v.ID() + " already published") return nil } - newMetadataVersion := int8(2) if ok && sv.MetadataVersion >= newMetadataVersion { log.Println(v.ID() + " upgraded to the new metadata") return nil @@ -878,7 +878,7 @@ func (s *Sync) processVideo(v video) (err error) { Fee: s.Fee, } - summary, err := v.Sync(s.daemon, sp, &sv, isUpgradeSync) + summary, err := v.Sync(s.daemon, sp, &sv, videoRequiresUpgrade) if err != nil { return err }