Better tracking (Size and failure reason) #35
4 changed files with 20 additions and 4 deletions
|
@ -141,7 +141,7 @@ const (
|
||||||
VideoStatusFailed = "failed"
|
VideoStatusFailed = "failed"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s SyncManager) MarkVideoStatus(channelID string, videoID string, status string, claimID string, claimName string, failureReason string) error {
|
func (s SyncManager) MarkVideoStatus(channelID string, videoID string, status string, claimID string, claimName string, failureReason string, size *int64) error {
|
||||||
endpoint := s.ApiURL + "/yt/video_status"
|
endpoint := s.ApiURL + "/yt/video_status"
|
||||||
|
|
||||||
vals := url.Values{
|
vals := url.Values{
|
||||||
|
@ -157,6 +157,9 @@ func (s SyncManager) MarkVideoStatus(channelID string, videoID string, status st
|
||||||
vals.Add("published_at", strconv.FormatInt(time.Now().Unix(), 10))
|
vals.Add("published_at", strconv.FormatInt(time.Now().Unix(), 10))
|
||||||
vals.Add("claim_id", claimID)
|
vals.Add("claim_id", claimID)
|
||||||
vals.Add("claim_name", claimName)
|
vals.Add("claim_name", claimName)
|
||||||
|
if size != nil {
|
||||||
|
vals.Add("size", strconv.FormatInt(*size, 10))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if failureReason != "" {
|
if failureReason != "" {
|
||||||
maxReasonLength := 500
|
maxReasonLength := 500
|
||||||
|
|
|
@ -186,6 +186,10 @@ func (v ucbVideo) publish(daemon *jsonrpc.Client, claimAddress string, amount fl
|
||||||
return publishAndRetryExistingNames(daemon, v.title, v.getFilename(), amount, options)
|
return publishAndRetryExistingNames(daemon, v.title, v.getFilename(), amount, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (v ucbVideo) Size() *int64 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (v ucbVideo) Sync(daemon *jsonrpc.Client, claimAddress string, amount float64, channelID string, maxVideoSize int) (*SyncSummary, error) {
|
func (v ucbVideo) Sync(daemon *jsonrpc.Client, claimAddress string, amount float64, channelID string, maxVideoSize int) (*SyncSummary, error) {
|
||||||
//download and thumbnail can be done in parallel
|
//download and thumbnail can be done in parallel
|
||||||
err := v.download()
|
err := v.download()
|
||||||
|
|
|
@ -25,6 +25,7 @@ type YoutubeVideo struct {
|
||||||
title string
|
title string
|
||||||
description string
|
description string
|
||||||
playlistPosition int64
|
playlistPosition int64
|
||||||
|
size *int64
|
||||||
publishedAt time.Time
|
publishedAt time.Time
|
||||||
dir string
|
dir string
|
||||||
}
|
}
|
||||||
|
@ -203,6 +204,10 @@ func (v YoutubeVideo) publish(daemon *jsonrpc.Client, claimAddress string, amoun
|
||||||
return publishAndRetryExistingNames(daemon, v.title, v.getFilename(), amount, options)
|
return publishAndRetryExistingNames(daemon, v.title, v.getFilename(), amount, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (v YoutubeVideo) Size() *int64 {
|
||||||
|
return v.size
|
||||||
|
}
|
||||||
|
|
||||||
func (v YoutubeVideo) Sync(daemon *jsonrpc.Client, claimAddress string, amount float64, channelID string, maxVideoSize int) (*SyncSummary, error) {
|
func (v YoutubeVideo) Sync(daemon *jsonrpc.Client, claimAddress string, amount float64, channelID string, maxVideoSize int) (*SyncSummary, error) {
|
||||||
//download and thumbnail can be done in parallel
|
//download and thumbnail can be done in parallel
|
||||||
err := v.download()
|
err := v.download()
|
||||||
|
@ -215,6 +220,8 @@ func (v YoutubeVideo) Sync(daemon *jsonrpc.Client, claimAddress string, amount f
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
*v.size = fi.Size()
|
||||||
|
|
||||||
if fi.Size() > int64(maxVideoSize)*1024*1024 {
|
if fi.Size() > int64(maxVideoSize)*1024*1024 {
|
||||||
//delete the video and ignore the error
|
//delete the video and ignore the error
|
||||||
_ = v.delete()
|
_ = v.delete()
|
||||||
|
|
|
@ -41,6 +41,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
type video interface {
|
type video interface {
|
||||||
|
Size() *int64
|
||||||
ID() string
|
ID() string
|
||||||
IDAndNum() string
|
IDAndNum() string
|
||||||
PlaylistPosition() int
|
PlaylistPosition() int
|
||||||
|
@ -470,7 +471,7 @@ func (s *Sync) startWorker(workerNum int) {
|
||||||
SendErrorToSlack("Video failed after %d retries, skipping. Stack: %s", tryCount, logMsg)
|
SendErrorToSlack("Video failed after %d retries, skipping. Stack: %s", tryCount, logMsg)
|
||||||
}
|
}
|
||||||
s.AppendSyncedVideo(v.ID(), false, err.Error())
|
s.AppendSyncedVideo(v.ID(), false, err.Error())
|
||||||
err = s.Manager.MarkVideoStatus(s.YoutubeChannelID, v.ID(), VideoStatusFailed, "", "", err.Error())
|
err = s.Manager.MarkVideoStatus(s.YoutubeChannelID, v.ID(), VideoStatusFailed, "", "", err.Error(), v.Size())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
SendErrorToSlack("Failed to mark video on the database: %s", err.Error())
|
SendErrorToSlack("Failed to mark video on the database: %s", err.Error())
|
||||||
}
|
}
|
||||||
|
@ -671,10 +672,11 @@ func (s *Sync) processVideo(v video) (err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = s.Manager.MarkVideoStatus(s.YoutubeChannelID, v.ID(), VideoStatusPublished, summary.ClaimID, summary.ClaimName, "")
|
err = s.Manager.MarkVideoStatus(s.YoutubeChannelID, v.ID(), VideoStatusPublished, summary.ClaimID, summary.ClaimName, "", v.Size())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
SendErrorToSlack("Failed to mark video on the database: %s", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
s.AppendSyncedVideo(v.ID(), true, "")
|
s.AppendSyncedVideo(v.ID(), true, "")
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Reference in a new issue