diff --git a/setup.go b/setup.go index b161d42..b55a04e 100644 --- a/setup.go +++ b/setup.go @@ -13,6 +13,11 @@ import ( ) func (s *Sync) walletSetup() error { + err := s.ensureChannelOwnership() + if err != nil { + return err + } + balanceResp, err := s.daemon.WalletBalance() if err != nil { return err @@ -38,38 +43,11 @@ func (s *Sync) walletSetup() error { amountToAdd, _ := decimal.NewFromFloat(minBalance).Sub(balance).Float64() if amountToAdd > 0 { - addressResp, err := s.daemon.WalletUnusedAddress() - if err != nil { - return err - } else if addressResp == nil { - return errors.New("no response") - } - address := string(*addressResp) - amountToAdd *= 1.5 // add 50% margin for fees, future publishes, etc if amountToAdd < 1 { amountToAdd = 1 } - log.Printf("Adding %f credits", amountToAdd) - lbrycrdd, err := lbrycrd.NewWithDefaultURL() - if err != nil { - return err - } - - _, err = lbrycrdd.SimpleSend(address, amountToAdd) - if err != nil { - return err - } - - wait := 15 * time.Second - log.Println("Waiting " + wait.String() + " for lbryum to let us know we have the new transaction") - time.Sleep(wait) - - log.Println("Waiting for transaction to be confirmed") - err = s.waitUntilUTXOsConfirmed() - if err != nil { - return err - } + s.addCredits(amountToAdd) } claimAddress, err := s.daemon.WalletUnusedAddress() @@ -88,19 +66,6 @@ func (s *Sync) walletSetup() error { return err } - err = s.ensureChannelOwnership() - if err != nil { - return err - } - - balanceResp, err = s.daemon.WalletBalance() - if err != nil { - return err - } else if balanceResp == nil { - return errors.New("no response") - } - log.Println("starting with " + decimal.Decimal(*balanceResp).String() + "LBC") - return nil } @@ -223,6 +188,18 @@ func (s *Sync) ensureChannelOwnership() error { channelBidAmount, _ = channel.Certificate.Amount.Add(decimal.NewFromFloat(channelClaimAmount)).Float64() } + balanceResp, err := s.daemon.WalletBalance() + if err != nil { + return err + } else if balanceResp == nil { + return errors.New("no response") + } + balance := decimal.Decimal(*balanceResp) + + if balance.LessThan(decimal.NewFromFloat(channelBidAmount)) { + s.addCredits(channelBidAmount + 0.1) + } + _, err = s.daemon.ChannelNew(s.LbryChannelName, channelBidAmount) if err != nil { return err @@ -253,3 +230,31 @@ func allUTXOsConfirmed(utxolist *jsonrpc.UTXOListResponse) bool { return true } + +func (s *Sync) addCredits(amountToAdd float64) error { + log.Printf("Adding %f credits", amountToAdd) + lbrycrdd, err := lbrycrd.NewWithDefaultURL() + if err != nil { + return err + } + + addressResp, err := s.daemon.WalletUnusedAddress() + if err != nil { + return err + } else if addressResp == nil { + return errors.New("no response") + } + address := string(*addressResp) + + _, err = lbrycrdd.SimpleSend(address, amountToAdd) + if err != nil { + return err + } + + wait := 15 * time.Second + log.Println("Waiting " + wait.String() + " for lbryum to let us know we have the new transaction") + time.Sleep(wait) + + log.Println("Waiting for transaction to be confirmed") + return s.waitUntilUTXOsConfirmed() +} diff --git a/ytsync.go b/ytsync.go index 099d317..f4c2a8f 100644 --- a/ytsync.go +++ b/ytsync.go @@ -208,6 +208,7 @@ func (s *Sync) startWorker(workerNum int) { if strings.Contains(err.Error(), "non 200 status code received") || strings.Contains(err.Error(), " reason: 'This video contains content from") || strings.Contains(err.Error(), "dont know which claim to update") || + strings.Contains(err.Error(), "uploader has not made this video available in your country") || strings.Contains(err.Error(), "Playback on other websites has been disabled by the video owner") { log.Println("This error should not be retried at all") } else if tryCount >= s.MaxTries {