fix: Load and save base64 image in publish
diff --git a/erpnext/hub_node/api.py b/erpnext/hub_node/api.py
index c4a7925..9f4499f 100644
--- a/erpnext/hub_node/api.py
+++ b/erpnext/hub_node/api.py
@@ -81,13 +81,14 @@
 			'item_code': item_code,
 			'hub_category': item.get('hub_category'),
 			'image_list': item.get('image_list')
-		}).insert()
+		}).insert(ignore_if_duplicate=True)
 
 
 	items = map_fields(items_to_publish)
 
 	try:
 		item_sync_preprocess()
+		load_base64_image_from_items(items)
 
 		# TODO: Publish Progress
 		connection = get_hub_connection()
@@ -97,10 +98,8 @@
 			'status': 'Success',
 			'stats': len(items)
 		})
-
 	except Exception as e:
-		frappe.db.set_value("Hub Settings", "Hub Settings", "sync_in_progress", 0)
-		frappe.throw(e)
+		frappe.log_error(title='Hub Sync Error')
 
 def item_sync_preprocess():
 	hub_seller = frappe.db.get_value("Hub Settings", "Hub Settings", "company_email")
@@ -137,6 +136,31 @@
 
 	frappe.db.set_value('Hub Settings', 'Hub Settings', 'sync_in_progress', 0)
 
+
+def load_base64_image_from_items(items):
+	import io, base64, urllib, os
+	from frappe.utils.file_manager import get_file_path
+
+	for item in items:
+		file_path = item['image']
+		file_name = os.path.basename(file_path)
+
+		if file_path.startswith('http'):
+			url = file_path
+			file_path = os.path.join('/tmp', file_name)
+			urllib.urlretrieve(url, file_path)
+		else:
+			file_path = os.path.abspath(get_file_path(file_path))
+
+		with io.open(file_path, 'rb') as f:
+			image_data = json.dumps({
+				'file_name': file_name,
+				'base64': base64.b64encode(f.read())
+			})
+
+		item['image'] = image_data
+
+
 def get_hub_connection():
 	if frappe.db.exists('Data Migration Connector', 'Hub Connector'):
 		hub_connector = frappe.get_doc('Data Migration Connector', 'Hub Connector')