diff --git a/src/Mod/AddonManager/AddonManagerOptions.ui b/src/Mod/AddonManager/AddonManagerOptions.ui
index 8eb3575c98..66bf262816 100644
--- a/src/Mod/AddonManager/AddonManagerOptions.ui
+++ b/src/Mod/AddonManager/AddonManagerOptions.ui
@@ -316,6 +316,36 @@ installed addons will be checked for available updates
+ -
+
+
-
+
+
+ Score source URL
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ AddonScoreURL
+
+
+ Addons
+
+
+ The URL for the Addon Score data (see documentation for formatting and hosting details).
+
+
+
+
+
-
-
diff --git a/src/Mod/AddonManager/addonmanager_workers_startup.py b/src/Mod/AddonManager/addonmanager_workers_startup.py
index 70efa358b5..64b65cb5ea 100644
--- a/src/Mod/AddonManager/addonmanager_workers_startup.py
+++ b/src/Mod/AddonManager/addonmanager_workers_startup.py
@@ -23,7 +23,7 @@
# ***************************************************************************
""" Worker thread classes for Addon Manager startup """
-
+import datetime
import hashlib
import json
import os
@@ -966,7 +966,7 @@ class GetAddonScoreWorker(QtCore.QThread):
FreeCAD.Console.PrintError(
translate(
"AddonsInstaller",
- "Failed to get Addon score from {} -- sorting by score will fail\n",
+ "Failed to get Addon score from '{}' -- sorting by score will fail\n",
).format(self.url)
)
return
@@ -976,7 +976,10 @@ class GetAddonScoreWorker(QtCore.QThread):
FreeCAD.Console.PrintWarning("Running score generation in TEST mode...\n")
json_result = {}
for addon in self.addons:
- json_result[addon.url] = len(addon.display_name)
+ if addon.macro:
+ json_result[addon.name] = len(addon.macro.comment) if addon.macro.comment else 0
+ else:
+ json_result[addon.url] = len(addon.description) if addon.description else 0
for addon in self.addons:
score = None
diff --git a/src/Mod/AddonManager/package_list.py b/src/Mod/AddonManager/package_list.py
index 6cb5d64c91..e5a7494b6b 100644
--- a/src/Mod/AddonManager/package_list.py
+++ b/src/Mod/AddonManager/package_list.py
@@ -387,12 +387,9 @@ class PackageListItemDelegate(QtWidgets.QStyledItemDelegate):
return translate("AddonsInstaller", "Updated ") + time_string
return ""
elif self.sort_order == SortOptions.Score:
- return translate("AddonsInstaller", "Score: ") + str(len(addon.display_name))
+ return translate("AddonsInstaller", "Score: ") + str(addon.score)
return ""
- def _set_sort_string_expanded(self, addon: Addon, label: QtWidgets.QLabel) -> None:
- pass
-
def _get_compact_description(self, addon: Addon) -> str:
if addon.metadata:
trimmed_text = addon.metadata.description