mirror of
https://github.com/rommapp/romm.git
synced 2026-07-01 08:16:21 +00:00
add scan stats after finish
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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: {
|
||||
|
||||
@@ -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> 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> 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>
|
||||
|
||||
Reference in New Issue
Block a user