Skip to content

Commit

Permalink
Adding dehydrate-posters cmd
Browse files Browse the repository at this point in the history
  • Loading branch information
boggydigital committed Dec 17, 2024
1 parent 7b0cbc5 commit 4ad2a48
Show file tree
Hide file tree
Showing 7 changed files with 107 additions and 3 deletions.
3 changes: 3 additions & 0 deletions cli-commands.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ backup
cleanup-ended-videos
now

dehydrate-posters
force

download-video
video-id^*&
mark-watched
Expand Down
90 changes: 90 additions & 0 deletions cli/dehydrate_posters.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package cli

import (
"errors"
"github.com/boggydigital/issa"
"github.com/boggydigital/kevlar"
"github.com/boggydigital/nod"
"github.com/boggydigital/pathways"
"github.com/boggydigital/yet/data"
"github.com/boggydigital/yet_urls/youtube_urls"
"net/url"
"os"
)

func DehydratePostersHandler(u *url.URL) error {
force := u.Query().Has("force")
return DehydratePosters(force)
}

func DehydratePosters(force bool) error {

dpa := nod.NewProgress("dehydrating posters...")
defer dpa.EndWithResult("done")

metadataDir, err := pathways.GetAbsDir(data.Metadata)
if err != nil {
return dpa.EndWithError(err)
}

rdx, err := kevlar.NewReduxWriter(metadataDir, data.VideoProperties()...)
if err != nil {
return dpa.EndWithError(err)
}

videoIds := rdx.Keys(data.VideoTitleProperty)
dpa.TotalInt(len(videoIds))

dehydratedPosters := make(map[string][]string)
dehydratedRepColors := make(map[string][]string)

for _, videoId := range videoIds {

if rdx.HasKey(data.VideoDehydratedThumbnailProperty, videoId) && !force {
dpa.Increment()
continue
}

if dp, rc, err := dehydratePosterImageRepColor(videoId); err == nil {
dehydratedPosters[videoId] = append(dehydratedPosters[videoId], dp)
dehydratedRepColors[videoId] = append(dehydratedRepColors[videoId], rc)
} else {
dpa.Error(err)
}

dpa.Increment()
}

if err := rdx.BatchReplaceValues(data.VideoDehydratedThumbnailProperty, dehydratedPosters); err != nil {
return dpa.EndWithError(err)
}

if err := rdx.BatchReplaceValues(data.VideoDehydratedRepColorProperty, dehydratedRepColors); err != nil {
return dpa.EndWithError(err)
}

return nil
}

func dehydratePosterImageRepColor(videoId string) (string, string, error) {

var absPosterPath string
var err error

// find the first existing poster (if any if available at all)
for _, q := range youtube_urls.AllThumbnailQualities() {
absPosterPath, err = data.AbsPosterPath(videoId, q)
if err != nil {
return "", "", err
}
if _, err := os.Stat(absPosterPath); err == nil {
break
}
}

if absPosterPath == "" {
return "", "", errors.New("video has no poster thumbnails: " + videoId)
}

return issa.DehydrateImageRepColor(absPosterPath)
}
4 changes: 4 additions & 0 deletions cli/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ func Sync(rdx kevlar.WriteableRedux, opt *VideoOptions) error {
return sa.EndWithError(err)
}

if err := DehydratePosters(false); err != nil {
return sa.EndWithError(err)
}

if err := ScrubEndedProperties(rdx); err != nil {
return sa.EndWithError(err)
}
Expand Down
5 changes: 5 additions & 0 deletions data/properties.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ const (
VideoErrorsProperty = "video-errors"
VideoFavoriteProperty = "video-favorite"

VideoDehydratedThumbnailProperty = "video-dehydrated-thumbnail"
VideoDehydratedRepColorProperty = "video-dehydrate-rep-color"

VideoForcedDownloadProperty = "video-forced-download"

VideoDownloadQueuedProperty = "video-download-queued"
Expand Down Expand Up @@ -57,6 +60,8 @@ func VideoProperties() []string {
return []string{
VideoTitleProperty,
VideoThumbnailUrlsProperty,
VideoDehydratedThumbnailProperty,
VideoDehydratedRepColorProperty,
VideoExternalChannelIdProperty,
VideoShortDescriptionProperty,
VideoViewCountProperty,
Expand Down
6 changes: 4 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ module github.com/boggydigital/yet
go 1.23.4

require (
github.com/arelate/southern_light v0.1.52
github.com/boggydigital/backups v0.1.5
github.com/boggydigital/busan v0.1.0
github.com/boggydigital/clo v1.0.5
Expand All @@ -12,12 +13,13 @@ require (
github.com/boggydigital/nod v0.1.21
github.com/boggydigital/pathways v0.1.14
github.com/boggydigital/yet_urls v0.1.54
golang.org/x/exp v0.0.0-20241204233417-43b7b7cde48d
golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67
)

require (
github.com/arelate/southern_light v0.1.52 // indirect
github.com/boggydigital/issa v0.1.20 // indirect
github.com/boggydigital/match_node v0.1.17 // indirect
github.com/boggydigital/wits v0.2.3 // indirect
golang.org/x/image v0.23.0 // indirect
golang.org/x/net v0.32.0 // indirect
)
1 change: 1 addition & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ func main() {
"add-video": cli.AddVideoHandler,
"backup": cli.BackupHandler,
"cleanup-ended-videos": cli.CleanupEndedVideosHandler,
"dehydrate-posters": cli.DehydratePostersHandler,
"download-video": cli.DownloadVideoHandler,
"get-captions": cli.GetCaptionsHandler,
"get-channels-metadata": cli.GetChannelsMetadataHandler,
Expand Down
1 change: 0 additions & 1 deletion yeti/get_thumbnail.go

This file was deleted.

0 comments on commit 4ad2a48

Please sign in to comment.