diff --git a/backend/endpoints/sockets/scan.py b/backend/endpoints/sockets/scan.py
index 73bb396ed..68aac068b 100644
--- a/backend/endpoints/sockets/scan.py
+++ b/backend/endpoints/sockets/scan.py
@@ -27,6 +27,16 @@ from handler.metadata_handler.moby_handler import MOBY_API_ENABLED
from logger.logger import log
+class ScanStats:
+ def __init__(self):
+ self.scanned_platforms = 0
+ self.added_platforms = 0
+ self.metadata_platforms = 0
+ self.scanned_roms = 0
+ self.added_roms = 0
+ self.metadata_roms = 0
+
+
def _get_socket_manager():
# Connect to external socketio server
return socketio.AsyncRedisManager(redis_url, write_only=True)
@@ -61,6 +71,8 @@ async def scan_platforms(
await sm.emit("scan:done_ko", e.message)
return
+ scan_stats = ScanStats()
+
try:
platform_list = [
db_platform_handler.get_platforms(s).fs_slug for s in platform_ids
@@ -84,6 +96,12 @@ async def scan_platforms(
if platform:
scanned_platform.id = platform.id
+ scan_stats.scanned_platforms += 1
+ scan_stats.added_platforms += 1 if not platform else 0
+ scan_stats.metadata_platforms += (
+ 1 if scanned_platform.igdb_id or scanned_platform.moby_id else 0
+ )
+
platform = db_platform_handler.add_platform(scanned_platform)
await sm.emit(
@@ -136,6 +154,13 @@ async def scan_platforms(
scan_type=scan_type,
metadata_sources=metadata_sources,
)
+
+ scan_stats.scanned_roms += 1
+ scan_stats.added_roms += 1 if not rom else 0
+ scan_stats.metadata_roms += (
+ 1 if scanned_rom.igdb_id or scanned_rom.moby_id else 0
+ )
+
_added_rom = db_rom_handler.add_rom(scanned_rom)
rom = db_rom_handler.get_roms(_added_rom.id)
@@ -154,7 +179,7 @@ async def scan_platforms(
db_platform_handler.purge_platforms(fs_platforms)
log.info(emoji.emojize(":check_mark: Scan completed "))
- await sm.emit("scan:done", {})
+ await sm.emit("scan:done", scan_stats.__dict__)
except Exception as e:
log.error(e)
# Catch all exceptions and emit error to the client
diff --git a/frontend/src/stores/scanning.ts b/frontend/src/stores/scanning.ts
index 848147235..f5fa6404f 100644
--- a/frontend/src/stores/scanning.ts
+++ b/frontend/src/stores/scanning.ts
@@ -10,6 +10,14 @@ export default defineStore("scanning", {
id: number;
roms: Rom[];
}[],
+ scanStats: {
+ scanned_platforms: 0,
+ added_platforms: 0,
+ metadata_platforms: 0,
+ scanned_roms: 0,
+ added_roms: 0,
+ metadata_roms: 0
+ }
}),
actions: {
diff --git a/frontend/src/views/Library/Scan/Base.vue b/frontend/src/views/Library/Scan/Base.vue
index 30af750d2..2a025a39c 100644
--- a/frontend/src/views/Library/Scan/Base.vue
+++ b/frontend/src/views/Library/Scan/Base.vue
@@ -9,7 +9,7 @@ import { ref } from "vue";
// Props
const scanningStore = storeScanning();
-const { scanning, scanningPlatforms } = storeToRefs(scanningStore);
+const { scanning, scanningPlatforms, scanStats } = storeToRefs(scanningStore);
const platforms = storePlatforms();
const heartbeat = storeHeartbeat();
@@ -76,6 +76,10 @@ async function scan() {
});
}
+socket.on("scan:done", (stats) => {
+ scanStats.value = stats;
+});
+
async function stopScan() {
socket.emit("scan:stop");
}
@@ -149,6 +153,7 @@ async function stopScan() {
label="Scan option"
v-model="scanType"
:items="scanOptions"
+ class="py-3"
>
Stop
- mdi-alertPlease select at least one metadata source.
+
+ mdi-alert
+ Please select at least one metadata source.
+
+
+
+
+
+
+ mdi-information Platforms:
+ {{ scanStats.scanned_platforms }} scanned, with
+ {{ scanStats.added_platforms }} new and
+ {{ scanStats.metadata_platforms }} identified
+
+
+ mdi-information Roms:
+ {{ scanStats.scanned_roms }} scanned, with
+ {{ scanStats.added_roms }} new and
+ {{ scanStats.metadata_roms }} identified
+
+
+