Untitled
unknown
plain_text
2 years ago
3.1 kB
5
Indexable
const AWS = require('aws-sdk'); AWS.config.update({ accessKeyId: '****', secretAccessKey: '******', //region: 'us-east-1' // Promenite region u skladu sa lokacijom vaše korpe }); const s3 = new AWS.S3(); const bucketName = 'worksite-safety-cvat-dev'; async function listAllCameras(bucket, prefix) { let params = { Bucket: bucket, Prefix: prefix, Delimiter: '/' }; let cameras = []; try { const response = await s3.listObjects(params).promise(); response.CommonPrefixes.forEach(item => { let camera = item.Prefix.replace(prefix, '').slice(0, -1); cameras.push(camera); }); } catch(error) { throw error; } return cameras; } async function listAllObjectsFromBucket(bucket, prefix) { let isTruncated = true; let marker; let files = []; while(isTruncated) { let params = { Bucket: bucket, Prefix: prefix }; if(marker) params.Marker = marker; try { const response = await s3.listObjects(params).promise(); response.Contents.forEach(item => files.push(item.Key)); isTruncated = response.IsTruncated; if(isTruncated) { marker = response.Contents.slice(-1)[0].Key; } } catch(error) { throw error; } } console.log(files) return files; } async function findGapsInRecordings(cameraNumber) { let prefix = 'recordings/' + cameraNumber + '/'; let files = await listAllObjectsFromBucket(bucketName, prefix); files.sort(); let lastEndTime; let gaps = []; for (let file of files) { let date = file.match(/\d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}/); if (!date) continue; let dateParts = date[0].split('-'); let startTime = new Date(dateParts[0], dateParts[1]-1, dateParts[2], dateParts[3], dateParts[4], dateParts[5]); if (lastEndTime) { if ((startTime.getTime() - lastEndTime.getTime()) > 900000) { let gap = { gap_start: formatDate(lastEndTime), gap_end: formatDate(startTime) }; gaps.push(gap); } } lastEndTime = new Date(startTime.getTime() + 900000); } return gaps; } function formatDate(date) { let dd = String(date.getDate()).padStart(2, '0'); let mm = String(date.getMonth() + 1).padStart(2, '0'); let yyyy = date.getFullYear(); let hh = String(date.getHours()).padStart(2, '0'); let min = String(date.getMinutes()).padStart(2, '0'); let ss = String(date.getSeconds()).padStart(2, '0'); return yyyy + '-' + mm + '-' + dd + ' ' + hh + ':' + min + ':' + ss; } async function analyzeRecordings() { let cameras = await listAllCameras(bucketName, 'recordings/'); // Automatski listamo sve kamere let cameraGaps = {}; for (let camera of cameras) { let gaps = await findGapsInRecordings(camera); cameraGaps['kamera' + camera] = gaps; } console.log(JSON.stringify(cameraGaps, null, 2)); } analyzeRecordings().catch(console.error);
Editor is loading...