feat(uploads): match release groups with MusicBrainz and AcoustID
ci / module boundaries / boundaries (push) Successful in 10s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m30s
ci / api / api (push) Successful in 58s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m1s
ci / db / db (push) Failing after 25s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m36s
ci / ts / ts (packages + web) (push) Failing after 6m3s
ci / module boundaries / boundaries (push) Successful in 10s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m30s
ci / api / api (push) Successful in 58s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m1s
ci / db / db (push) Failing after 25s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m36s
ci / ts / ts (packages + web) (push) Failing after 6m3s
This commit is contained in:
1 parent
1e3a149aef
commit
39bf7d4b70
45 files changed
+4792
-417
No files matched your search
@@ -41,6 +41,9 @@ func (s *Service) Run(ctx context.Context) {
|
||||
go s.loop(ctx, s.wakeImport, pollEvery, func(ctx context.Context) bool { return s.importNext(ctx) })
|
||||
go s.loop(ctx, nil, cleanupEvery, func(ctx context.Context) bool {
|
||||
s.expire(ctx)
|
||||
if err := s.store.ExpireMetadataCache(ctx); err != nil {
|
||||
s.log.Warn("uploads: expire metadata cache", "err", err)
|
||||
}
|
||||
if err := s.store.ReconcileQuota(ctx); err != nil {
|
||||
s.log.Error("uploads: reconcile quota", "err", err)
|
||||
}
|
||||
@@ -51,6 +54,9 @@ func (s *Service) Run(ctx context.Context) {
|
||||
}
|
||||
wake(s.wakeProcess)
|
||||
wake(s.wakeImport)
|
||||
if s.catalogue != nil {
|
||||
go s.loop(ctx, nil, pollEvery, func(ctx context.Context) bool { return s.lookupNextRelease(ctx) })
|
||||
}
|
||||
}
|
||||
|
||||
// loop вызывает step, пока тот находит работу, затем ждёт сигнала или таймера.
|
||||
@@ -133,6 +139,11 @@ func (s *Service) analyze(ctx context.Context, f File, abs string) outcome {
|
||||
return outcome{status: StatusInvalid, reason: CodeInvalidAudio}
|
||||
}
|
||||
o := outcome{probe: probe, tags: tagsMap(probe.Tags)}
|
||||
for key, value := range probe.RawTags {
|
||||
if strings.HasPrefix(key, "musicbrainz") {
|
||||
o.tags[key] = value
|
||||
}
|
||||
}
|
||||
if o.sha, err = library.FileSHA256(abs); err != nil {
|
||||
return outcome{status: StatusInvalid, reason: CodeInvalidAudio, probe: probe}
|
||||
}
|
||||
@@ -355,6 +366,11 @@ func (s *Service) writeTags(ctx context.Context, f File, m Meta, ext string) (st
|
||||
set("album_artist", m.AlbumArtist)
|
||||
set("album", m.Album)
|
||||
set("genre", m.Genre)
|
||||
for _, key := range []string{"musicbrainz_albumid", "musicbrainz_releasegroupid", "musicbrainz_trackid"} {
|
||||
if value := f.Tags[key]; value != "" {
|
||||
set(key, value)
|
||||
}
|
||||
}
|
||||
num := func(p *int) string {
|
||||
if p == nil {
|
||||
return ""
|
||||
|
||||
Reference in new issue
Block a user