add scan stats after finish

This commit is contained in:
Georges-Antoine Assi
2024-03-15 22:14:14 -04:00
parent b990b1a37a
commit f1a2cfa7b4
3 changed files with 76 additions and 4 deletions

View File

@@ -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

View File

@@ -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: {

View File

@@ -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"
>
<template v-slot:item="{ props, item }">
<v-list-item
@@ -191,7 +196,13 @@ async function stopScan() {
>
Stop
</v-btn>
<span v-if="metadataSources.length == 0" class="ml-4 text-caption text-yellow"><v-icon class="mr-2">mdi-alert</v-icon>Please select at least one metadata source.</span>
<span
v-if="metadataSources.length == 0"
class="ml-4 text-caption text-yellow"
>
<v-icon class="mr-2">mdi-alert</v-icon>
Please select at least one metadata source.
</span>
</v-row>
<v-divider
@@ -231,10 +242,38 @@ async function stopScan() {
</v-col>
</v-row>
</div>
<!-- Scan stats -->
<v-row class="pa-4 align-center" no-gutters v-if="!scanning">
<v-col>
<v-chip
v-if="scanningPlatforms.length > 0"
color="romm-accent-1"
text-color="white"
class="mr-2"
>
<v-icon left>mdi-information</v-icon>&nbsp; Platforms:
{{ scanStats.scanned_platforms }} scanned, with
{{ scanStats.added_platforms }} new and
{{ scanStats.metadata_platforms }} identified
</v-chip>
<v-chip
v-if="scanningPlatforms.length > 0"
color="romm-accent-1"
text-color="white"
class="mr-2"
>
<v-icon left>mdi-information</v-icon>&nbsp; Roms:
{{ scanStats.scanned_roms }} scanned, with
{{ scanStats.added_roms }} new and
{{ scanStats.metadata_roms }} identified
</v-chip>
</v-col>
</v-row>
</template>
<style scoped>
.scan-log {
max-height: calc(100vh - 295px);
max-height: calc(100vh - 245px);
}
</style>