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

This commit is contained in:
mrleo1nid committed 2026-10-29 20:44:59 +03:00
1 parent 1e3a149aef
commit 39bf7d4b70
45 files changed
+4792 -417

No files matched your search

+59
View File
@@ -1,4 +1,63 @@
{
"release_lookup": {
"groups_count": "Releases in batch: {{count}}",
"groups_hint": "Each release is checked separately. Metadata and artwork apply only to tracks in the selected release.",
"group": "Release in batch",
"choose_group": "Choose a release",
"apply_group_cover": "Add artwork to the selected release",
"replace_group_cover": "Replace artwork of the selected release",
"select_group": "Select loaded rows of release {{album}}",
"audio_search": "Identify by audio",
"audio_privacy": "Only fingerprints and durations are sent to AcoustID, never audio files. Up to 50 tracks per request.",
"audio_setup": "Set ACOUSTID_API_KEY in server configuration and apply the changes to enable audio identification.",
"audio_summary": "Identified by audio: {{matched}} of {{total}} tracks",
"audio_editions": "A fingerprint identifies a recording, which may appear on different editions. Check the selected edition and track list.",
"audio_match": "Audio match · AcoustID",
"audio_ambiguous": "Ambiguous or low-confidence match",
"audio_not_found": "No audio match found",
"audio_unavailable": "Could not compute fingerprint: check fpcalc and file availability",
"title": "Match release",
"open": "Check release",
"intro": "MusicBrainz suggests specific editions. Review the track list and differences below. Tags and artwork only change after you select and apply them.",
"album": "Album",
"single": "Single",
"release": "Release",
"complete": "Complete track list",
"incomplete": "Incomplete track list",
"variants": "Editions found: {{count}}",
"choose_edition": "Choose a specific edition",
"partial": "Needs review",
"state_disabled": "Lookup disabled",
"state_queued": "Release queued",
"state_searching": "Finding release…",
"state_ready": "Release found",
"state_not_found": "Release not found",
"state_needs_input": "Refine release",
"state_error": "Lookup unavailable",
"mbid": "MusicBrainz Release ID (optional)",
"search": "Find / retry lookup",
"edition": "Edition",
"tracks_total": "tracks: {{total}}",
"confidence": "Match confidence: {{value}}",
"confidence_high": "high",
"confidence_medium": "medium",
"confidence_low": "low",
"coverage": "Matched {{matched}} of {{total}} tracks · Missing: {{missing}} · Unmatched files: {{extra}}",
"existing": "Metadata and duration matches were found in the library for {{count}} missing tracks. This does not make the uploaded batch complete.",
"uploaded": "Your upload",
"catalogue": "Selected edition",
"matched": "File matched",
"missing": "Not uploaded",
"tentative": "Tentative match — check manually",
"apply_metadata": "Apply titles, artists, album, year and numbering to matched files",
"preview_cover": "Preview catalogue cover",
"exact_cover": "Artwork for this edition · Cover Art Archive",
"group_cover": "Release-group artwork — an exact match to this edition is not confirmed",
"replace_cover": "Replace the batch's current artwork with this cover",
"apply_cover": "Attach this cover to the batch",
"apply": "Apply selection",
"applied": "Selected edition applied"
},
"users": {
"change_username": "Change username",
"title": "Users",
+9
View File
@@ -83,6 +83,15 @@
"update_unavailable": "Update is unavailable"
},
"uploads": {
"release_group_required": "Choose a release within the batch",
"release_group_not_found": "Release group not found in this batch. Refresh the list.",
"audio_disabled": "Audio identification is not configured: an AcoustID application key is required",
"audio_batch_limit": "Audio identification supports batches with up to 50 editable tracks",
"metadata_disabled": "Metadata lookup is disabled in the server configuration.",
"metadata_unavailable": "The external catalogue is temporarily unavailable. Try later; uploads and current tags are preserved.",
"release_stale": "The batch contents or tags changed. Repeat the release lookup before applying.",
"release_not_found": "The selected edition is no longer a candidate for this batch. Repeat the lookup.",
"release_cover_missing": "No artwork was found for this release in Cover Art Archive.",
"storage_full": "The server has no space left for uploads. Ask an administrator to free up space, then retry the upload.",
"queue_full": "The upload queue is full",
"user_quota_full": "Your upload queue limit is exceeded",
+59
View File
@@ -1,4 +1,63 @@
{
"release_lookup": {
"groups_count": "Релизов в пачке: {{count}}",
"groups_hint": "Каждый релиз проверяется отдельно. Метаданные и обложка применяются только к трекам выбранного релиза.",
"group": "Релиз в пачке",
"choose_group": "Выберите релиз",
"apply_group_cover": "Добавить обложку выбранного релиза",
"replace_group_cover": "Заменить обложку выбранного релиза",
"select_group": "Выбрать загруженные строки релиза {{album}}",
"audio_search": "Распознать по звуку",
"audio_privacy": "В AcoustID отправляются только аудиоотпечатки и длительности, без аудиофайлов. До 50 треков за запрос.",
"audio_setup": "Для распознавания по звуку задайте ACOUSTID_API_KEY в конфигурации сервера и примените изменения.",
"audio_summary": "По звуку распознано: {{matched}} из {{total}} треков",
"audio_editions": "Отпечаток определяет запись, но она может входить в разные издания. Проверьте выбранное издание и состав.",
"audio_match": "Совпадение по звуку · AcoustID",
"audio_ambiguous": "Неоднозначное или недостаточно уверенное совпадение",
"audio_not_found": "Совпадений по звуку не найдено",
"audio_unavailable": "Не удалось получить отпечаток: проверьте fpcalc и доступность файла",
"title": "Сопоставление релиза",
"open": "Проверить релиз",
"intro": "MusicBrainz предлагает конкретные издания. Сверьте состав и различия ниже. Теги и обложка изменятся только после вашего выбора и применения.",
"album": "Альбом",
"single": "Сингл",
"release": "Релиз",
"complete": "Полный состав",
"incomplete": "Неполный состав",
"variants": "Найдено изданий: {{count}}",
"choose_edition": "Выберите конкретное издание",
"partial": "Требует проверки",
"state_disabled": "Поиск отключён",
"state_queued": "Релиз: в очереди",
"state_searching": "Поиск релиза…",
"state_ready": "Релиз найден",
"state_not_found": "Релиз не найден",
"state_needs_input": "Уточнить релиз",
"state_error": "Поиск недоступен",
"mbid": "MusicBrainz Release ID (необязательно)",
"search": "Найти / повторить поиск",
"edition": "Издание",
"tracks_total": "дорожек: {{total}}",
"confidence": "Уверенность сопоставления: {{value}}",
"confidence_high": "высокая",
"confidence_medium": "средняя",
"confidence_low": "низкая",
"coverage": "Совпало {{matched}} из {{total}} дорожек · Не хватает: {{missing}} · Не сопоставлено файлов: {{extra}}",
"existing": "Для {{count}} отсутствующих дорожек найдены совпадения в библиотеке по тегам и длительности. Это не делает загруженную пачку полной.",
"uploaded": "Ваша загрузка",
"catalogue": "В выбранном издании",
"matched": "Файл сопоставлен",
"missing": "Не загружено",
"tentative": "Предположительное совпадение — проверьте вручную",
"apply_metadata": "Применить названия, исполнителей, альбом, год и нумерацию к совпавшим файлам",
"preview_cover": "Показать обложку из каталога",
"exact_cover": "Обложка этого издания · Cover Art Archive",
"group_cover": "Обложка группы изданий — точное соответствие выбранному изданию не подтверждено",
"replace_cover": "Заменить текущую обложку пачки этой обложкой",
"apply_cover": "Добавить эту обложку в пачку",
"apply": "Применить выбранное",
"applied": "Выбранное издание применено"
},
"users": {
"change_username": "Изменить логин",
"title": "Пользователи",
+9
View File
@@ -83,6 +83,15 @@
"update_unavailable": "Обновление недоступно"
},
"uploads": {
"release_group_required": "Выберите релиз внутри пачки",
"release_group_not_found": "Релиз внутри этой пачки не найден. Обновите список.",
"audio_disabled": "Распознавание по звуку не настроено: нужен ключ приложения AcoustID",
"audio_batch_limit": "Распознавание по звуку доступно для пачек до 50 редактируемых треков",
"metadata_disabled": "Поиск метаданных отключён в конфигурации сервера.",
"metadata_unavailable": "Внешний каталог временно недоступен. Попробуйте позже; загрузки и текущие теги сохранены.",
"release_stale": "Состав или теги пачки изменились. Повторите поиск релиза перед применением.",
"release_not_found": "Выбранного издания больше нет среди вариантов этой пачки. Повторите поиск.",
"release_cover_missing": "В Cover Art Archive не найдена обложка этого релиза.",
"storage_full": "На сервере закончилось место для загрузок. Попросите администратора освободить место, затем повторите загрузку.",
"queue_full": "В очереди на добавление нет места",
"user_quota_full": "Превышен ваш лимит в очереди на добавление",