定期清理日志

This commit is contained in:
lvyuankang 2024-08-29 08:10:20 +08:00
parent 7c42a590a6
commit 157a3e86f9
4 changed files with 191 additions and 64 deletions

View File

@ -5,7 +5,7 @@ import { dateFormat } from '../utils/tools'
import FileUtil from '../../common/utils/File'
import AccountTable from '../../common/database/tables/AccountTable'
import MA_SYSSET from '../../common/constants/MA_SYSSET'
import { takePhoto } from '../../common/service/videoService'
import { takePhoto,deleteAllFileByPiC } from '../../common/service/videoService'
import {
delSyncTable,
@ -46,6 +46,7 @@ export async function deleteAllFIleLog(path){
"recursion": false,
"listNum": 0,
};
let filenames = fs.listFileSync(path, options);
console.info("listFile succeed",JSON.stringify(filenames));
for (let i = 0; i < filenames.length; i++) {
@ -64,6 +65,30 @@ export async function deleteAllFIleLog(path){
}
}
export async function delHilgo(){
const fileUtil = new FileUtil(globalThis.context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/hilogTime.txt');
if(data === '' || data === undefined){
const folderPath = await fileUtil.initFolder(`/config`);
fileUtil.addFile(`${folderPath}/hilogTime.txt`, JSON.stringify(1))
}else{
if(Number(data)<7){
let num=Number(data)+1
fileUtil.addFile(`${folderPath}/hilogTime.txt`, JSON.stringify(num))
}else{
let num=Number(data)+1
fileUtil.addFile(`${folderPath}/hilogTime.txt`, JSON.stringify(1))
fs.rmdir('/data/log/hilog', (err) => {
if (err) {
console.error("rmdir failed with error message: " + err.message + ", error code: " + err.code);
} else {
console.info("rmdir succeed");
}
});
deleteAllFileByPiC('jt',1)
}
}
}
function isSevenDaysAgo(date) {
const today = new Date(); // 当前日期
const target = new Date(date); // 需要判断的日期

View File

@ -5,45 +5,55 @@ import fs from '@ohos.file.fs'
// @ts-ignore
import photoAccessHelper from '@ohos.file.photoAccessHelper'
import dataSharePredicates from '@ohos.data.dataSharePredicates'
import { getCurrentTime } from '../utils/tools'
import { dateFormat, getCurrentTime, isSevenDaysAgo } from '../utils/tools'
// import rtsp_server from '@ohos.rtsprecord';
import record from '@ohos.rtsprecord';
import { FileHelper } from './FileHelper';
import FileUtil from '../utils/File';
import { GlobalConfig } from '../../config';
const rtsp_server = record.createServer();
//开始录屏
const FILE_ASSET_FETCH_COLUMNS = [photoAccessHelper.PhotoKeys.URI,
photoAccessHelper.PhotoKeys.PHOTO_TYPE,
photoAccessHelper.PhotoKeys.DISPLAY_NAME,
photoAccessHelper.PhotoKeys.SIZE,
photoAccessHelper.PhotoKeys.DATE_ADDED,
photoAccessHelper.PhotoKeys.DATE_MODIFIED,
photoAccessHelper.PhotoKeys.DURATION,
photoAccessHelper.PhotoKeys.WIDTH,
photoAccessHelper.PhotoKeys.HEIGHT,
photoAccessHelper.PhotoKeys.DATE_TAKEN,
photoAccessHelper.PhotoKeys.ORIENTATION,
photoAccessHelper.PhotoKeys.FAVORITE,
photoAccessHelper.PhotoKeys.TITLE,
photoAccessHelper.PhotoKeys.POSITION,
photoAccessHelper.PhotoKeys.DATE_TRASHED,
photoAccessHelper.PhotoKeys.HIDDEN];
photoAccessHelper.PhotoKeys.PHOTO_TYPE,
photoAccessHelper.PhotoKeys.DISPLAY_NAME,
photoAccessHelper.PhotoKeys.SIZE,
photoAccessHelper.PhotoKeys.DATE_ADDED,
photoAccessHelper.PhotoKeys.DATE_MODIFIED,
photoAccessHelper.PhotoKeys.DURATION,
photoAccessHelper.PhotoKeys.WIDTH,
photoAccessHelper.PhotoKeys.HEIGHT,
photoAccessHelper.PhotoKeys.DATE_TAKEN,
photoAccessHelper.PhotoKeys.ORIENTATION,
photoAccessHelper.PhotoKeys.FAVORITE,
photoAccessHelper.PhotoKeys.TITLE,
photoAccessHelper.PhotoKeys.POSITION,
photoAccessHelper.PhotoKeys.DATE_TRASHED,
photoAccessHelper.PhotoKeys.HIDDEN];
// const rtsp_server = record.createServer();
export async function startRecordVideo(param, td, context, dir) {
return new Promise((reslove, reject) => {
export async function startRecordVideo(param, td, context, dir, path?) {
return new Promise(async (reslove, reject) => {
// const fileUtil = new FileUtil(globalThis.context)
// const date=dateFormat(new Date).split(' ')[0]
// const folderPath = await fileUtil.initFolder(`/PLC/${date}/${dir}`);
var video_uri = `rtsp://${param.userName}:${param.pwd}@${param.ip}:${param.port}/h264/ch${td}/main/av_stream`;
if (rtsp_server != null) {
console.log(`Rtsprecord startRecordVideo begin,video_uri`, video_uri);
const num = Math.floor(Math.random() * 10000)
const fileName = `movie_record${num}.mp4`
let fileName
if (!path) {
fileName = `movie_record${num}.mp4`
} else {
fileName = `${path}.mp4`
}
// @ts-ignore
var recordResult = rtsp_server.startRecordVideo(context, video_uri, fileName, dir);
const handleId = recordResult.dataInt;
console.log(`Rtsprecord startRecordVideo begin,handleId`, handleId);
reslove(handleId)
console.log(`Rtsprecord startRecordVideo record_handle` + recordResult.dataInt);
}
else {
console.log(`Rtsprecord startRecordVideo rtsp_server isnull`);
@ -55,33 +65,106 @@ export async function startRecordVideo(param, td, context, dir) {
}
//结束录屏
export async function endRecordVideo(record_handle) {
if (rtsp_server != null && record_handle > 0) {
console.log(`Rtsprecord endRecordVideo begin`);
// @ts-ignore
var recordResult = rtsp_server.endRecordVideo(record_handle);
console.log(`Rtsprecord startRecordVideo record_handle` + recordResult.dataInt + ` filename:` + recordResult.fileName);
export async function endRecordVideo(record_handleObj) {
for (let key in record_handleObj) {
if (rtsp_server != null && record_handleObj[key] > 0) {
console.log(`Rtsprecord endRecordVideo begin`);
// @ts-ignore
var recordResult = rtsp_server.endRecordVideo(record_handleObj[key]);
console.log(`Rtsprecord endRecordVideo record_handle` + record_handleObj[key].dataInt + ` filename:` + record_handleObj[key].fileName);
}
else {
console.log(`Rtsprecord endRecordVideo handleId isnull`);
}
}
else {
console.log(`Rtsprecord endRecordVideo handleId isnull`);
}
// var result = onvifclient.endRecordVideo(record_handle);
// fs.closeSync(record_handle);
// file_asset.close(record_handle);
}
export async function saveStartRecordVideo(path) {
return new Promise(async (reslove, reject) => {
const fileUtil = new FileUtil(globalThis.context)
const fileHelper = new FileHelper();
const date = dateFormat(new Date).split(' ')[0]
fileHelper.createAlbum(date);
// const folderPath = await fileUtil.initFolder(`/${path}/${date}`);
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/config3.txt');
const param = JSON.parse(data)
const record_handle = {
1: 0,
2: 1,
3: 2,
4: 3
}
for (let i = 1; i <= 4; i++) {
if (param['videoRecord'+i]) {
console.log('pathpath0',path)
record_handle[i] = await getfilehandleCode(i, param, date, path)
}
}
reslove(record_handle)
})
}
async function getfilehandleCode(td, param, dir, path) {
return new Promise(async (reslove, reject) => {
console.log('pathpath1',path)
const record_handle = await startRecordVideo(param, td, globalThis.context, dir, path)
// this.rocordHandleObj['rocord_handle'+td] = record_handle
reslove(record_handle)
})
}
export async function getUserAlbumItemByDisplayName(displayName: string): Promise<photoAccessHelper.Album> {
let fetchResult = null
let album: photoAccessHelper.Album = null
try {
console.log('getUserAlbumItemByDisplayName');
let predicates = new dataSharePredicates.DataSharePredicates();
predicates.equalTo(photoAccessHelper.AlbumKeys.ALBUM_NAME, displayName)
let fetchOptions = {
fetchColumns: [],
predicates: predicates
};
const userFileMgr = photoAccessHelper.getPhotoAccessHelper(globalThis.context);
fetchResult = await userFileMgr.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions);
console.log('get getUserAlbumItemByDisplayName, count: ' + JSON.stringify(fetchResult));
if (fetchResult.getCount() > 0) {
const albums = await fetchResult.getLastObject();
if(isSevenDaysAgo(albums.albumName)){
deleteAllFileByPiC(albums.albumName,2)
}
console.log('get getUserAlbumItemByDisplayName album',)
}
} catch (err) {
console.log('get Album getUserAlbumItemByDisplayName fetchResult failed with err: ' + err);
} finally {
if (fetchResult != null) {
fetchResult.close();
}
}
return album;
}
/**
*
* @param param
* @param context
* @param type=0base64
*/
interface takePhotoParam {
name?:string,
base64?:string,
fileSize?:number,
errorCode?:number
interface takePhotoParam {
name?: string,
base64?: string,
fileSize?: number,
errorCode?: number
}
/**
*
* @param param
@ -92,32 +175,38 @@ interface takePhotoParam {
* @returns
*/
const fileHelper = new FileHelper();
export async function takePhoto(param, context,dir,flag=1,callback?) {
var video_uri = `rtsp://${param.userName}:${param.pwd}@${param.ip}:${param.port}/h264/ch${param.pztd}/main/av_stream`;
// var video_uri = `rtsp://admin:openharmony1@192.168.1.66:554/Streaming/Channels/3`;
export async function takePhoto(param, context, dir, flag = 1, callback?) {
const num = Math.floor(Math.random() * 10000)
const fileName = `picture_record${num}.jpg`
console.log('baoyihubaoyihu',video_uri,flag)
var video_uri = `rtsp://${param.userName}:${param.pwd}@${param.ip}:${param.port}/h264/ch${param.pztd}/main/av_stream`;
// var video_uri = `rtsp://admin:openharmony1@192.168.1.66:554/Streaming/Channels/3`;
console.log(`baoyihu Rtsprecord baohaowen getVideoSnapshot fileName` + fileName);
// @ts-ignore
// var snapResult = rtsp_server.getVideoSnapshot(context, video_uri, '', dir);
if(flag==0){
rtsp_server.detectVideoSnapshotSize(video_uri,fileName,(err,snapResult)=>{
console.log("baohaowen_detectLoop round end size1:"+snapResult.fileSize);
callback({fileSize:snapResult.fileSize,errorCode:snapResult.errorCode })
const num = Math.floor(Math.random() * 10000)
const fileName = `picture_record${num}.jpg`
console.log('baoyihubaoyihu', video_uri, flag)
console.log(`baoyihu Rtsprecord baohaowen getVideoSnapshot fileName` + fileName);
// @ts-ignore
// var snapResult = rtsp_server.getVideoSnapshot(context, video_uri, '', dir);
if (flag == 0) {
rtsp_server.detectVideoSnapshotSize(video_uri, fileName, (err, snapResult) => {
console.log("baohaowen_detectLoop round end size1:" + snapResult.fileSize);
callback({ fileSize: snapResult.fileSize, errorCode: snapResult.errorCode })
});
}
else{
console.log('baoyihubaoyihu1',video_uri,flag)
return new Promise<takePhotoParam>((resolve,reject)=>{
rtsp_server.getVideoSnapshot(context, video_uri, fileName,dir,true,(err,snapResult)=>{
console.log('baoyihubaoyihu',video_uri,flag,JSON.stringify(snapResult))
console.log('getPhtot',JSON.stringify(snapResult))
resolve({base64: snapResult.dataString,name:snapResult.fileName,fileSize:snapResult.fileSize,errorCode:snapResult.errorCode })
else {
console.log('baoyihubaoyihu1', video_uri, flag)
return new Promise<takePhotoParam>((resolve, reject) => {
rtsp_server.getVideoSnapshot(context, video_uri, fileName, dir, true, (err, snapResult) => {
console.log('baoyihubaoyihu', video_uri, flag, JSON.stringify(snapResult))
console.log('getPhtot', JSON.stringify(snapResult))
resolve({
base64: snapResult.dataString,
name: snapResult.fileName,
fileSize: snapResult.fileSize,
errorCode: snapResult.errorCode
})
});
})
console.log('getmyLog02')
@ -127,13 +216,14 @@ console.log('baoyihubaoyihu',video_uri,flag)
}
//type:1 是图片 2是视频
export async function deleteAllFileByPiC(dirName,type=1) {
export async function deleteAllFileByPiC(dirName, type = 1) {
// const fileHelper = new FileHelper();
fileHelper.deleteFileOfAlbum(dirName,type);
fileHelper.deleteFileOfAlbum(dirName, type);
}
export async function deleteAllVideos(context,type: photoAccessHelper.AlbumType, subType: photoAccessHelper.AlbumSubtype): Promise<void> {
export async function deleteAllVideos(context, type: photoAccessHelper.AlbumType, subType: photoAccessHelper.AlbumSubtype): Promise<void> {
let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = null;
try {
const userFileMgr = photoAccessHelper.getPhotoAccessHelper(context);

View File

@ -93,12 +93,13 @@ export class voiceService {
// 以下为使用资源管理接口获取打包在HAP内的媒体资源文件并通过fdSrc属性进行播放示例
avPlayerFdSrc(name) {
globalThis.context.resourceManager.getRawFd(name, (error, value) => {
globalThis.context.resourceManager.getRawFd(name,async (error, value) => {
if (error != null) {
console.log(`jiangsong callback getRawFd failed error code: ${error.code}, message: ${error.message}.`);
} else {
console.log('jiangsongjiangsong',this.avPlayer)
if (this.avPlayer) {
await this.avPlayer.reset()
this.avPlayer.fdSrc = value;
}

View File

@ -2,7 +2,18 @@
import systemTime from '@ohos.systemDateTime';
import { expect } from '@ohos/hypium';
import FileUtil from './File';
export function isSevenDaysAgo(date) {
const today = new Date(); // 当前日期
const target = new Date(date); // 需要判断的日期
console.info("listFile succeed1",JSON.stringify(target));
const diff = today.getTime() - target.getTime(); // 计算两个日期之间的毫秒数差异
const diffDays = diff / (1000 * 60 * 60 * 24); // 将毫秒转换为天数
console.info("listFile succeed2",JSON.stringify(diffDays));
// 如果差异天数正好是7则原日期是当前日期的前七天
console.log('diffDays',diffDays)
return diffDays > 7;
}
export async function writeLog(path,param){
return
const fileUtil = new FileUtil(globalThis.context)