scheduleMain.cmd by Administrator
@D:
@CD D:\Conda\cron
:: =============================================================================
@schtasks /delete /tn "ParadingCam" /f
:: =============================================================================
@schtasks /create /sc hourly /mo 1 /st 00:00:05 /tn "ParadingCam" /tr "D:\Conda\parading\main.cmd"
:: =============================================================================
Hourly Stat
D:\Conda\parading\nginx-rtmp\html\data>tree
文件夹 PATH 列表
卷序列号为 BA16-BF79
D:.
└─10.10.20.234
└─2024
└─02
├─22
│ ├─09
│ ├─...
│ └─23
└─23
├─00
├─...
├─18
└─19
@gfind . -name *.m3u8 | awk -F '/' '{ print "{\"server\":\""$2"\",\"date\":\""$3"-"$4"-"$5"\",\"hour\":\""$6"\",\"play\":\"/"$3"/"$4"/"$5"/"$6"/"$7"\"}" }' | jq -s "."
[
{
"server": "10.10.20.234",
"date": "2024-02-22",
"hour": "09",
"play": "/2024/02/22/09/playlist.m3u8"
},
{
"server": "10.10.20.234",
"date": "2024-02-22",
"hour": "10",
"play": "/2024/02/22/10/playlist.m3u8"
},
......
{
"server": "10.10.20.234",
"date": "2024-02-23",
"hour": "19",
"play": "/2024/02/23/19/playlist.m3u8"
}
]
scheduleStat.cmd by Administrator
@D:
@CD D:\Conda\cron
:: =============================================================================
@schtasks /delete /tn "ParadingStat" /f
:: =============================================================================
@schtasks /create /sc hourly /mo 1 /st 00:01:05 /tn "ParadingStat" /tr "D:\Conda\parading\stat.cmd"
:: =============================================================================
Sqlite3 nvr store ETL [ from tmp_store_log to sys_store_log ]
DROP TABLE IF EXISTS tmp_store_log;
CREATE TABLE tmp_store_log (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
Server VARCHAR(16),
Date VARCHAR(16),
Hour VARCHAR(2),
Play VARCHAR(32),
Duration VARCHAR(16),
DateInput DATETIME
);
DROP TABLE IF EXISTS sys_store_log;
CREATE TABLE sys_store_log (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
Server VARCHAR(16),
Date VARCHAR(16),
Hour VARCHAR(2),
Play VARCHAR(32),
Duration VARCHAR(16),
DateInput DATETIME
);
c:\Conda\parading-cam>sqlite3 store\nvr.db
SQLite version 3.33.0 2020-08-14 13:23:32
Enter ".help" for usage hints.
sqlite> .table
sys_store_log tmp_store_log
sqlite>
sqlite> select * from sqlite_master where type = "table";
table|tmp_store_log|tmp_store_log|2|CREATE TABLE tmp_store_log (
ID INT NOT NULL,
Server VARCHAR(16),
Date VARCHAR(16),
Hour VARCHAR(2),
Play VARCHAR(32),
Duration VARCHAR(16),
DateInput DATETIME,
PRIMARY KEY (ID)
)
table|sys_store_log|sys_store_log|6|CREATE TABLE sys_store_log (
ID INT NOT NULL,
Server VARCHAR(16),
Date VARCHAR(16),
Hour VARCHAR(2),
Play VARCHAR(32),
Duration VARCHAR(16),
DateInput DATETIME,
PRIMARY KEY (ID)
)
sqlite>
NVR-ETL-Hourly T+0
@SET NVRDAT=store\nvr.db
@SET TMPSQL=store\tmp\%TTSS%.sql
@ECHO DELETE FROM tmp_store_log WHERE 1=1; > %TMPSQL%
@gfind nginx-rtmp\html\data -name *.m3u8 | awk -F '/' '{ print "INSERT INTO tmp_store_log(ID,Server,Date,Hour,Play,Duration,DateInput) VALUES ((SELECT IFNULL(MAX(ID), 0) + 1 FROM tmp_store_log), \""$2"\",\""$3"-"$4"-"$5"\",\""$6"\",\"/"$3"/"$4"/"$5"/"$6"/"$7"\", \"\", DATETIME(\"NOW\", \"LOCALTIME\"));" }' >> %TMPSQL%
@ECHO.
@ECHO NVR-ETL from %TMPSQL% to %NVRDAT%
@sqlite3 %NVRDAT% < %TMPSQL%
c:\Conda\parading-cam>etl-t0.cmd
========================================================================
NVR-ETL from store\tmp\1708846769.sql to store\nvr.db
------------------------------------------------------------------------
c:\Conda\parading-cam>sqlite3 store\nvr.db
SQLite version 3.33.0 2020-08-14 13:23:32
Enter ".help" for usage hints.
sqlite> select * from tmp_store_log;
1|10.10.20.234|2024-02-22|09|/2024/02/22/09/playlist.m3u8||2024-02-25 15:42:51
2|10.10.20.234|2024-02-22|10|/2024/02/22/10/playlist.m3u8||2024-02-25 15:42:51
3|10.10.20.234|2024-02-22|11|/2024/02/22/11/playlist.m3u8||2024-02-25 15:42:51
4|10.10.20.234|2024-02-22|12|/2024/02/22/12/playlist.m3u8||2024-02-25 15:42:51
5|10.10.20.234|2024-02-22|13|/2024/02/22/13/playlist.m3u8||2024-02-25 15:42:51
sqlite> .exit
NVR-ETL-Hourly T+1
INSERT INTO sys_store_log
SELECT NULL,
tm.Server,
tm.Date,
tm.Hour,
tm.Play,
tm.Duration,
DATETIME("NOW", "LOCALTIME")
FROM tmp_store_log tm
WHERE 1=1
AND NOT EXISTS (
SELECT tn.ID
FROM sys_store_log tn
WHERE 1=1
AND tn.Server = tm.Server AND tn.Date = tm.Date AND tn.Hour = tm.Hour
)
;
Reload Nginx File & RTMP Server
c:\Conda\parading-cam\nginx-rtmp>taskkill /f /t /im nginx.exe
成功: 已终止 PID 18700 (属于 PID 7104 子进程)的进程。
成功: 已终止 PID 7104 (属于 PID 2220 子进程)的进程。
成功: 已终止 PID 2220 (属于 PID 4832 子进程)的进程。
c:\Conda\parading-cam\nginx-rtmp>start nginx
JQuery & Bootstrap version
console.log($.fn.jquery);
console.log($.fn.tooltip.Constructor.VERSION);
var initTree = function() {
var alpha = getTreeData();
$('#camTree').treeview(
{
data: alpha,
levels: 1,
selectedColor: '#7E6DFA',
selectedBackColor: '#EFECFE', // #EFECFE #767676
showBorder: false,
highlightSelected: true,
multiSelect: false,
showCheckbox: false,
checkedIcon: 'icon ni ni-check-c',
uncheckedIcon: 'icon ni ni-square-c',
showTags: false,
expandIcon: 'icon ni ni-plus-round',
collapseIcon: 'icon ni ni-minus-round',
nodeIcon: 'icon ni ni-video-fill',
onNodeSelected: function(event, data) {
camName = data.text;
searchCam();
console.log('onNodeSelected', camName);
},
onNodeUnselected: function(event, data) {
camName = '';
searchCam();
console.log('onNodeUnselected', camName);
}
}
);
};