From 4191eba95329be0df55fde490471c71bfdca1fce Mon Sep 17 00:00:00 2001 From: Rogee Date: Fri, 6 Dec 2024 15:18:15 +0800 Subject: [PATCH] fix: sync issues --- backend/common/media_store/store.go | 15 ++++++++++++--- .../modules/tasks/discover/discover_medias.go | 12 +++++++++--- .../tasks/discover/discover_medias_test.go | 18 +++++++++++++----- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/backend/common/media_store/store.go b/backend/common/media_store/store.go index 9b16503..6def62d 100644 --- a/backend/common/media_store/store.go +++ b/backend/common/media_store/store.go @@ -87,12 +87,21 @@ func (s Store) Hashes() []string { } // Exists -func (s Store) HashExists(hash string) bool { +func (s Store) HashExists(hash string) (VideoInfo, bool) { for _, m := range s { if m.Hash == hash { - return true + return m, true } } - return false + return VideoInfo{}, false +} + +func (s Store) Update(info VideoInfo) { + for i, m := range s { + if m.Hash == info.Hash { + s[i] = info + break + } + } } diff --git a/backend/modules/tasks/discover/discover_medias.go b/backend/modules/tasks/discover/discover_medias.go index b8e2a82..c29dd4d 100644 --- a/backend/modules/tasks/discover/discover_medias.go +++ b/backend/modules/tasks/discover/discover_medias.go @@ -58,8 +58,14 @@ func (d *DiscoverMedias) RunE(from, to string) error { if err != nil { return errors.Wrapf(err, "get file md5: %s", video) } + name := filepath.Base(video)[0:strings.LastIndex(filepath.Base(video), ".")] - if store.HashExists(md5) { + if info, ok := store.HashExists(md5); ok { + info.Name = name + store.Update(info) + if err := store.Save(to); err != nil { + return errors.Wrapf(err, "save store: %s", to) + } continue } @@ -68,7 +74,7 @@ func (d *DiscoverMedias) RunE(from, to string) error { return errors.Wrapf(err, "process video: %s", video) } info.Hash = md5 - info.Name = filepath.Base(video) + info.Name = name store = store.Append(info) d.log.Infof("store: %+v", store) @@ -243,7 +249,7 @@ func (d *DiscoverMedias) runCleanup(to string) { } for _, dir := range dirs { - if store.HashExists(dir) { + if _, ok := store.HashExists(dir); ok { continue } diff --git a/backend/modules/tasks/discover/discover_medias_test.go b/backend/modules/tasks/discover/discover_medias_test.go index dc008ac..42aa4eb 100644 --- a/backend/modules/tasks/discover/discover_medias_test.go +++ b/backend/modules/tasks/discover/discover_medias_test.go @@ -4,6 +4,7 @@ import ( "os" "testing" + "backend/common/media_store" "backend/common/service/testx" "backend/modules/medias" "backend/providers/postgres" @@ -65,17 +66,24 @@ func (t *DiscoverMediasTestSuite) TestDiscoverMedias_getMediaDuration() { Convey("TestDiscoverMedias_getMediaDuration", t.T(), func() { duration, err := t.Svc.getMediaDuration("/projects/mp-qvyun/backend/fixtures/medias/video.mp4") So(err, ShouldBeNil) - t.T().Logf("Duration: %0.8f", duration) + t.T().Logf("Duration: %d", duration) }) } func (t *DiscoverMediasTestSuite) Test_globMedias() { Convey("Test_globMedias", t.T(), func() { - f, err := t.Svc.globVideos("/mnt/yangpingliang/publish/processed") + store, err := media_store.NewStore("/projects/mp-qvyun/backend/fixtures/processed") So(err, ShouldBeNil) - for _, item := range f { - t.T().Logf("Item: %s", item) - } + hash := "eed0fa530f95531f9fac2a962dfbc7ea" + store.Update(media_store.VideoInfo{ + Hash: hash, + Name: "video", + Duration: 10, + }) + + info, ok := store.HashExists(hash) + So(ok, ShouldBeTrue) + So(info.Name, ShouldEqual, "video") }) }