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())