fix: sync issues

This commit is contained in:
Rogee
2024-12-06 15:18:15 +08:00
parent 7d446b46c2
commit 4191eba953
3 changed files with 34 additions and 11 deletions

View File

@@ -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
}
}
}

View File

@@ -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
}

View File

@@ -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")
})
}