diff --git a/image/script/generate_annotations.py b/image/script/generate_annotations.py index e2ce35a..70f9b8a 100644 --- a/image/script/generate_annotations.py +++ b/image/script/generate_annotations.py @@ -1,17 +1,33 @@ import json import uuid +import aiohttp +import asyncio -def process_line(line): +async def get_post_data(session, folder_name): + url = f"https://sketchersunited.org/posts/{folder_name.split('by')[0]}" + headers = {"Accept": "text/json"} + async with session.get(url, headers=headers) as response: + if response.status == 200: + return await response.json() + return None + +async def process_line(session, line): folder_name, x, y, _, _, _ = line.strip().split() annotation_id = str(uuid.uuid4()) + post_data = await get_post_data(session, folder_name) + if post_data: + annotation_text = f'🖼️ {post_data["post"]["title"]}
👤 @{post_data["post"]["profile"]["username"]}' + else: + annotation_text = "Data not available" + annotation = { "@context": "http://www.w3.org/ns/anno.jsonld", "id": f"#{annotation_id}", "type": "Annotation", "body": [{ "type": "TextualBody", - "value": folder_name, + "value": annotation_text, "format": "text/html", "language": "en", "tag": folder_name @@ -28,13 +44,19 @@ def process_line(line): print(f"Appended annotation for {folder_name}") return annotation -annotations = [] -with open('image.txt', 'r') as file: - lines = file.readlines() - for line in lines: - annotations.append(process_line(line)) +async def main(): + annotations = [] + async with aiohttp.ClientSession() as session: + with open('image.txt', 'r') as file: + lines = file.readlines() -with open('../annotations/annotations.w3c.json', 'w') as output_file: - json.dump(annotations, output_file, indent=2) + tasks = [process_line(session, line) for line in lines] + annotations = await asyncio.gather(*tasks) -print("Annotations JSON file created.") + with open('../annotations/annotations.w3c.json', 'w') as output_file: + json.dump(annotations, output_file, indent=2) + + print("Annotations JSON file created.") + +# Run the asynchronous code +asyncio.run(main())