diff --git a/acoustid/api/v2/__init__.py b/acoustid/api/v2/__init__.py index 1c56868..42bea5b 100644 --- a/acoustid/api/v2/__init__.py +++ b/acoustid/api/v2/__init__.py @@ -990,6 +990,12 @@ def _handle_internal(self, params): values["meta"] = meta_values if p["foreignid"]: values["foreignid"] = p["foreignid"] + if ( + values.get("mbid") is None + and values.get("puid") is None + and values.get("meta") is None + ): + continue id = insert_submission(ingest_db, values) ids.add(id) submission = {"id": id, "status": "pending"} diff --git a/acoustid/data/submission.py b/acoustid/data/submission.py index fb431d9..05a29bd 100644 --- a/acoustid/data/submission.py +++ b/acoustid/data/submission.py @@ -78,6 +78,20 @@ def import_submission(ingest_db, app_db, fingerprint_db, index_pool, submission) "Importing submission %d with MBIDs %s", submission["id"], submission["mbid"] ) + has_mbid = ( + submission["mbid"] + and submission["mbid"] != "00000000-0000-0000-0000-000000000000" + ) + has_puid = ( + submission["puid"] + and submission["puid"] != "00000000-0000-0000-0000-000000000000" + ) + has_meta = submission["meta_id"] or submission["meta"] + + if not has_mbid and not has_puid and not has_meta: + logger.info("Skipping, missing metadata") + return None + num_unique_items = len(set(submission["fingerprint"])) if num_unique_items < const.FINGERPRINT_MIN_UNIQUE_ITEMS: logger.info("Skipping, has only %d unique items", num_unique_items) @@ -184,10 +198,7 @@ def import_submission(ingest_db, app_db, fingerprint_db, index_pool, submission) submission_result["fingerprint_id"] = fingerprint["id"] - if ( - submission["mbid"] - and submission["mbid"] != "00000000-0000-0000-0000-000000000000" - ): + if has_mbid: insert_mbid( fingerprint_db, ingest_db, @@ -198,10 +209,7 @@ def import_submission(ingest_db, app_db, fingerprint_db, index_pool, submission) ) submission_result["mbid"] = submission["mbid"] - if ( - submission["puid"] - and submission["puid"] != "00000000-0000-0000-0000-000000000000" - ): + if has_puid: insert_puid( fingerprint_db, ingest_db, @@ -212,7 +220,7 @@ def import_submission(ingest_db, app_db, fingerprint_db, index_pool, submission) ) submission_result["puid"] = submission["puid"] - if submission["meta_id"] or submission["meta"]: + if has_meta: meta_id = submission["meta_id"] # type: Optional[int] meta_gid = None # type: Optional[uuid.UUID] if meta_id is None: diff --git a/tests/test_api_v2.py b/tests/test_api_v2.py index 695baa4..ea879a9 100644 --- a/tests/test_api_v2.py +++ b/tests/test_api_v2.py @@ -704,6 +704,7 @@ def test_submit_handler_foreignid(ctx): "fingerprint": TEST_1_FP, "bitrate": 192, "foreignid": "foo:123", + "track": "Voodoo People", "fileformat": "FLAC", } builder = EnvironBuilder(method="POST", data=values) diff --git a/tests/test_data_submission.py b/tests/test_data_submission.py index a914ce3..2794e75 100644 --- a/tests/test_data_submission.py +++ b/tests/test_data_submission.py @@ -118,6 +118,7 @@ def test_import_submission_with_foreignid(ctx): "source_id": 1, "format_id": 1, "foreignid_id": 1, + "meta": {"track": "foo"}, }, ) query = tables.submission.select(tables.submission.c.id == submission_id) @@ -144,6 +145,7 @@ def test_import_submission_with_foreignid(ctx): "source_id": 1, "format_id": 1, "foreignid": "foo:123", + "meta": {"track": "foo"}, }, ) query = tables.submission.select(tables.submission.c.id == submission_id) @@ -227,6 +229,7 @@ def test_import_submission(ctx): "bitrate": 192, "source_id": 1, "format_id": 1, + "meta": {"track": "foo"}, }, ) query = tables.submission.select(tables.submission.c.id == submission_id) @@ -587,6 +590,7 @@ def test_import_queued_submissions(ctx): "bitrate": 192, "source_id": 1, "format_id": 1, + "meta": {"track": "Foo 2"}, }, ) insert_submission( @@ -597,6 +601,7 @@ def test_import_queued_submissions(ctx): "bitrate": 192, "source_id": 1, "format_id": 1, + "meta": {"track": "Foo 3"}, }, )