Skip to content

Commit 50ea73b

Browse files
authored
feat: 🎸 parse ocrMetadata json file (#1677)
1 parent d5a80f4 commit 50ea73b

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

src/kili/adapters/kili_api_gateway/asset/formatters.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,33 @@
33
import json
44
from typing import Dict
55

6+
from kili.adapters.http_client import HttpClient
7+
from kili.core.helpers import is_url
68
from kili.domain.types import ListOrTuple
79

810

9-
def load_asset_json_fields(asset: Dict, fields: ListOrTuple[str]) -> Dict:
11+
def load_json_from_link(link: str, http_client: HttpClient) -> Dict:
12+
"""Load json from link."""
13+
if link == "" or not is_url(link):
14+
return {}
15+
16+
try:
17+
return http_client.get(link, timeout=30).json()
18+
except json.JSONDecodeError:
19+
return {}
20+
21+
22+
def load_asset_json_fields(asset: Dict, fields: ListOrTuple[str], http_client: HttpClient) -> Dict:
1023
"""Load json fields of an asset."""
1124
if "jsonMetadata" in fields:
1225
try:
1326
asset["jsonMetadata"] = json.loads(asset.get("jsonMetadata", "{}"))
1427
except json.JSONDecodeError:
1528
asset["jsonMetadata"] = {}
1629

30+
if "ocrMetadata" in fields and asset.get("ocrMetadata") is not None:
31+
asset["ocrMetadata"] = load_json_from_link(asset.get("ocrMetadata", ""), http_client)
32+
1733
if "labels.jsonResponse" in fields:
1834
asset_labels = asset.get("labels", [])
1935
for label in asset_labels:

src/kili/adapters/kili_api_gateway/asset/operations_mixin.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ def list_assets(
4848
assets_gen = PaginatedGraphQLQuery(self.graphql_client).execute_query_from_paginated_call(
4949
query, where, options, "Retrieving assets", GQL_COUNT_ASSETS
5050
)
51-
assets_gen = (load_asset_json_fields(asset, fields) for asset in assets_gen)
51+
assets_gen = (
52+
load_asset_json_fields(asset, fields, self.http_client) for asset in assets_gen
53+
)
5254

5355
if any("jsonResponse" in field for field in fields):
5456
converter = AnnotationsToJsonResponseConverter(

0 commit comments

Comments
 (0)