From 481cb4c75e221b05a01b1248f1a07c3d2d7b929e Mon Sep 17 00:00:00 2001 From: Moe Date: Sat, 27 Nov 2021 19:14:32 -0800 Subject: [PATCH 1/3] cron syntax fix for file size setting after old video delete --- cron.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cron.js b/cron.js index ad9eb97b..59f6cc22 100644 --- a/cron.js +++ b/cron.js @@ -207,7 +207,7 @@ const deleteVideosByDays = async (v,days,addedQueries) => { const filename = formattedTime(row.time) + '.' + row.ext try{ await fs.promises.unlink(dir + filename) - row.size += clearSize + clearSize += row.size sendToWebSocket({ f: 'video_delete', filename: filename + '.' + row.ext, From 0c3c183ae8306457a9442f0ed15bc860f1ded4d2 Mon Sep 17 00:00:00 2001 From: Moe Date: Sun, 28 Nov 2021 09:25:36 -0800 Subject: [PATCH 2/3] cron syntax fix for file size setting after old video delete+ --- cron.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cron.js b/cron.js index 59f6cc22..bc738df5 100644 --- a/cron.js +++ b/cron.js @@ -207,7 +207,7 @@ const deleteVideosByDays = async (v,days,addedQueries) => { const filename = formattedTime(row.time) + '.' + row.ext try{ await fs.promises.unlink(dir + filename) - clearSize += row.size + clearSize += row.size / 1048576 sendToWebSocket({ f: 'video_delete', filename: filename + '.' + row.ext, From 26572e480bd254a445f1f32bf7fde6c484f142e8 Mon Sep 17 00:00:00 2001 From: Moe Date: Mon, 29 Nov 2021 13:56:26 -0800 Subject: [PATCH 3/3] fix cron addStorage calculation --- cron.js | 9 +++++---- libs/socketio.js | 17 ++++++++++++++++- libs/videos.js | 8 +++++--- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/cron.js b/cron.js index bc738df5..414136e0 100644 --- a/cron.js +++ b/cron.js @@ -92,8 +92,8 @@ const deleteVideo = (x) => { const deleteFileBinEntry = (x) => { postMessage({f:'s.deleteFileBinEntry',file:x}) } -const setDiskUsedForGroup = (groupKey,size,target) => { - postMessage({f:'s.setDiskUsedForGroup', ke: groupKey, size: size, target: target}) +const setDiskUsedForGroup = (groupKey,size,target,videoRow) => { + postMessage({f:'s.setDiskUsedForGroup', ke: groupKey, size: size, target: target, videoRow: videoRow}) } const getVideoDirectory = function(e){ if(e.mid&&!e.id){e.id=e.mid}; @@ -185,6 +185,7 @@ const checkFilterRules = function(v){ }) } const deleteVideosByDays = async (v,days,addedQueries) => { + const groupKey = v.ke; const whereQuery = [ ['ke','=',v.ke], ['time','<', sqlDate(days+' DAY')], @@ -207,7 +208,8 @@ const deleteVideosByDays = async (v,days,addedQueries) => { const filename = formattedTime(row.time) + '.' + row.ext try{ await fs.promises.unlink(dir + filename) - clearSize += row.size / 1048576 + const fileSizeMB = row.size / 1048576; + setDiskUsedForGroup(groupKey,-fileSizeMB,null,row) sendToWebSocket({ f: 'video_delete', filename: filename + '.' + row.ext, @@ -227,7 +229,6 @@ const deleteVideosByDays = async (v,days,addedQueries) => { where: whereQuery }) affectedRows = deleteResponse.rows || 0 - setDiskUsedForGroup(v.ke,-clearSize) } return { ok: true, diff --git a/libs/socketio.js b/libs/socketio.js index 8075f12a..94e9fb88 100644 --- a/libs/socketio.js +++ b/libs/socketio.js @@ -987,7 +987,22 @@ module.exports = function(s,config,lang,io){ s.deleteFileBinEntry(d.file) break; case's.setDiskUsedForGroup': - s.setDiskUsedForGroup(d.ke,d.size,d.target || undefined) + function doOnMain(){ + s.setDiskUsedForGroup(d.ke,d.size,d.target || undefined) + } + if(d.videoRow){ + let storageIndex = s.getVideoStorageIndex(d.videoRow); + if(storageIndex){ + s.setDiskUsedForGroupAddStorage(d.ke,{ + size: d.size, + storageIndex: storageIndex + }) + }else{ + doOnMain() + } + }else{ + doOnMain() + } break; case'start':case'end': d.mid='_cron';s.userLog(d,{type:'cron',msg:d.msg}) diff --git a/libs/videos.js b/libs/videos.js index 6fd64e28..eb63c944 100644 --- a/libs/videos.js +++ b/libs/videos.js @@ -608,9 +608,11 @@ module.exports = function(s,config,lang){ } s.getVideoStorageIndex = function(video){ try{ - var details = s.parseJSON(video.details) || {} - var storageId = details.storageId - if(s.group[video.ke] && s.group[video.ke].activeMonitors[video.id] && s.group[video.ke].activeMonitors[video.id].addStorageId)storageId = s.group[video.ke].activeMonitors[video.id].addStorageId + const monitorId = video.id || video.mid + const details = s.parseJSON(video.details) || {} + const storageId = details.storageId + const activeMonitor = s.group[video.ke] && s.group[video.ke].activeMonitors[monitorId] ? s.group[video.ke].activeMonitors[monitorId] : null; + if(activeMonitor && activeMonitor.addStorageId)storageId = activeMonitor.addStorageId; if(storageId){ return s.group[video.ke].addStorageUse[storageId] }