Merge develop into main for v1.0.7 release
This commit is contained in:
@@ -5,6 +5,29 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [1.0.7] - 2025-11-23
|
||||
|
||||
### Fixed
|
||||
- Fixed channel numbering for Hikvision-style cameras (reported by @sergbond_com)
|
||||
- Removed invalid test data from Hikvision database
|
||||
- Fixed brand+model search matching in stream discovery
|
||||
|
||||
### Added
|
||||
- Universal `[CHANNEL+1]` placeholder support for flexible channel numbering
|
||||
- Support for both 0-based (channel=0 → 101) and 1-based (channel=1 → 101) channel selection
|
||||
- Added 6 high-priority Hikvision patterns to popular stream patterns database
|
||||
|
||||
### Changed
|
||||
- Updated 14 camera brands with universal channel patterns (Hikvision, Hiwatch, Annke, Swann, Abus, 7links, LevelOne, AlienDVR, Oswoo, AV102IP-40, Acvil, TBKVision, Deltaco, Night Owl)
|
||||
- Hikvision: replaced 10 hardcoded patterns with 6 universal patterns
|
||||
- Hiwatch: replaced 4 hardcoded patterns with 8 universal patterns (including ISAPI variants)
|
||||
- Universal patterns now tested first for faster discovery, hardcoded patterns kept as fallback
|
||||
- Improved stream discovery performance with intelligent pattern ordering
|
||||
|
||||
### Technical
|
||||
- Added support for `[CHANNEL+1]`, `[channel+1]`, `{CHANNEL+1}`, `{channel+1}` placeholders in URL builder
|
||||
- Modified 16 files: +2448 additions, -1954 deletions
|
||||
|
||||
## [0.1.0] - 2025-11-06
|
||||
|
||||
### Added
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ import (
|
||||
|
||||
const (
|
||||
// Version is the application version
|
||||
Version = "1.0.4"
|
||||
Version = "1.0.7"
|
||||
|
||||
// Banner is the application banner
|
||||
Banner = `
|
||||
|
||||
+64
-28
@@ -4,6 +4,42 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"3628-675",
|
||||
@@ -313,15 +349,6 @@
|
||||
"port": 0,
|
||||
"url": ""
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"IPC-300"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"IPC-340HD",
|
||||
@@ -465,15 +492,6 @@
|
||||
"port": 0,
|
||||
"url": "snapshot.jpg"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"IPC-740"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"IP-CAM",
|
||||
@@ -631,16 +649,6 @@
|
||||
"port": 80,
|
||||
"url": "/videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=320x240"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"PX3615",
|
||||
"SK7008-T1F1"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/channels/401"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"PX-3615-675"
|
||||
@@ -722,6 +730,34 @@
|
||||
"protocol": "http",
|
||||
"port": 82,
|
||||
"url": "/cgi/mjpg/mjpg.cgi"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"IPC-300"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"IPC-740"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"PX3615",
|
||||
"SK7008-T1F1"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/channels/401"
|
||||
}
|
||||
]
|
||||
}
|
||||
+61
-25
@@ -4,6 +4,42 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"10550",
|
||||
@@ -320,31 +356,6 @@
|
||||
"port": 554,
|
||||
"url": "/s2"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"IPCA53000",
|
||||
"IPCB42510B",
|
||||
"IPCB44510A",
|
||||
"IPCB64515B"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"IPCB42550",
|
||||
"IPCB78520",
|
||||
"NVR10030",
|
||||
"TVIP41500",
|
||||
"TVIP52500"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"IPCB54611B",
|
||||
@@ -635,6 +646,31 @@
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/mpeg4/media.amp?resolution=640x480"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"IPCA53000",
|
||||
"IPCB42510B",
|
||||
"IPCB44510A",
|
||||
"IPCB64515B"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"IPCB42550",
|
||||
"IPCB78520",
|
||||
"NVR10030",
|
||||
"TVIP41500",
|
||||
"TVIP52500"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/101"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -4,6 +4,24 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"WIFI-5MP-30"
|
||||
|
||||
@@ -4,6 +4,24 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"mega216"
|
||||
|
||||
+127
-91
@@ -4,6 +4,42 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"NVR",
|
||||
@@ -220,55 +256,6 @@
|
||||
"port": 0,
|
||||
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=[CHANNEL]"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"141CS",
|
||||
"151DB",
|
||||
"151de",
|
||||
"151dj",
|
||||
"151DM",
|
||||
"191BS",
|
||||
"2MP",
|
||||
"4MP Bullet",
|
||||
"4MP DOME",
|
||||
"720P",
|
||||
"AC500",
|
||||
"AK-N48PIA0-68DT",
|
||||
"c500",
|
||||
"C800",
|
||||
"DE81GB",
|
||||
"DN41R",
|
||||
"DN81R",
|
||||
"DVR",
|
||||
"DW81KD",
|
||||
"i15dx",
|
||||
"i51dm",
|
||||
"I51DS",
|
||||
"I51DX",
|
||||
"I61BK",
|
||||
"I61DR",
|
||||
"I61FC",
|
||||
"I61G",
|
||||
"I91BD",
|
||||
"I91BF",
|
||||
"I91BM",
|
||||
"I91F",
|
||||
"l51DM",
|
||||
"N481Y",
|
||||
"N48PI",
|
||||
"NC400",
|
||||
"NC800",
|
||||
"NCPT500",
|
||||
"Other",
|
||||
"P01",
|
||||
"POE",
|
||||
"VIEW"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"141CS",
|
||||
@@ -498,39 +485,6 @@
|
||||
"port": 554,
|
||||
"url": "/onvif2"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"191BS",
|
||||
"AC500",
|
||||
"c800",
|
||||
"C800-4k",
|
||||
"I51DX",
|
||||
"I91BF",
|
||||
"NC800"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"191df"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"191df"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"2MP",
|
||||
@@ -659,15 +613,6 @@
|
||||
"port": 80,
|
||||
"url": "/cgi-bin/snapshot.cgi?chn=4&u=[USERNAME]&p=[PASSWORD]"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/201"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"h264",
|
||||
@@ -851,6 +796,97 @@
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/h264/ch1/main/av_stream"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"141CS",
|
||||
"151DB",
|
||||
"151de",
|
||||
"151dj",
|
||||
"151DM",
|
||||
"191BS",
|
||||
"2MP",
|
||||
"4MP Bullet",
|
||||
"4MP DOME",
|
||||
"720P",
|
||||
"AC500",
|
||||
"AK-N48PIA0-68DT",
|
||||
"c500",
|
||||
"C800",
|
||||
"DE81GB",
|
||||
"DN41R",
|
||||
"DN81R",
|
||||
"DVR",
|
||||
"DW81KD",
|
||||
"i15dx",
|
||||
"i51dm",
|
||||
"I51DS",
|
||||
"I51DX",
|
||||
"I61BK",
|
||||
"I61DR",
|
||||
"I61FC",
|
||||
"I61G",
|
||||
"I91BD",
|
||||
"I91BF",
|
||||
"I91BM",
|
||||
"I91F",
|
||||
"l51DM",
|
||||
"N481Y",
|
||||
"N48PI",
|
||||
"NC400",
|
||||
"NC800",
|
||||
"NCPT500",
|
||||
"Other",
|
||||
"P01",
|
||||
"POE",
|
||||
"VIEW"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"191BS",
|
||||
"AC500",
|
||||
"c800",
|
||||
"C800-4k",
|
||||
"I51DX",
|
||||
"I91BF",
|
||||
"NC800"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"191df"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"191df"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/201"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -4,6 +4,24 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"Other"
|
||||
|
||||
@@ -4,6 +4,42 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 8554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"Outdoor Smart Home Camera",
|
||||
|
||||
+1097
-1052
File diff suppressed because it is too large
Load Diff
+170
-88
@@ -5,35 +5,117 @@
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": ["ALL"],
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": ["ALL"],
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]02"
|
||||
},
|
||||
{
|
||||
"models": ["ALL"],
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/ISAPI/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/ISAPI/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": ["ALL"],
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/ISAPI/Streaming/Channels/[CHANNEL+1]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/ISAPI/Streaming/Channels/[CHANNEL]02"
|
||||
},
|
||||
{
|
||||
"models": ["ALL"],
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/ISAPI/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/ISAPI/Streaming/Channels/[CHANNEL]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
@@ -82,69 +164,6 @@
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/1"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL",
|
||||
"B220",
|
||||
"C6T",
|
||||
"D110",
|
||||
"DS-H216Q",
|
||||
"DS-I102",
|
||||
"DS-I113",
|
||||
"DS-I114",
|
||||
"DS-I114W",
|
||||
"DS-i126",
|
||||
"ds-i200",
|
||||
"DS-I200(D)",
|
||||
"ds-i203",
|
||||
"DS-I213",
|
||||
"ds-i214",
|
||||
"DS-I214(B)",
|
||||
"ds-i214w(b)",
|
||||
"ds-i223",
|
||||
"DS-I400(C)",
|
||||
"ds-l122",
|
||||
"ds-n241w",
|
||||
"i100",
|
||||
"i110",
|
||||
"I114",
|
||||
"i114w",
|
||||
"I120",
|
||||
"IPC-B120-I",
|
||||
"IPC-B140",
|
||||
"IPC-B622-G2/ZS",
|
||||
"IPC-D082-G2/S",
|
||||
"IPC-D120",
|
||||
"IPC-T640-Z",
|
||||
"l110",
|
||||
"Other",
|
||||
"VDP-D2201",
|
||||
"VDP-D2211W(B)",
|
||||
"watch"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL",
|
||||
"DS-I102",
|
||||
"ds-i200",
|
||||
"Ds-i203",
|
||||
"DS-I214(B)",
|
||||
"DS-I214W(B)",
|
||||
"DS-I253",
|
||||
"ds-i458",
|
||||
"HiWatch DS-N208(C)",
|
||||
"i450s"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/ISAPI/Streaming/Channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DC-I200",
|
||||
@@ -256,16 +275,6 @@
|
||||
"port": 554,
|
||||
"url": "/h264_stream"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ds-i200",
|
||||
"VDP-D2201"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 555,
|
||||
"url": "/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"Ds-i203"
|
||||
@@ -275,16 +284,6 @@
|
||||
"port": 8000,
|
||||
"url": "/"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DS-I214(B)",
|
||||
"DS-I405"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/ISAPI/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DS-I220",
|
||||
@@ -345,6 +344,89 @@
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/onvif1"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL",
|
||||
"B220",
|
||||
"C6T",
|
||||
"D110",
|
||||
"DS-H216Q",
|
||||
"DS-I102",
|
||||
"DS-I113",
|
||||
"DS-I114",
|
||||
"DS-I114W",
|
||||
"DS-i126",
|
||||
"ds-i200",
|
||||
"DS-I200(D)",
|
||||
"ds-i203",
|
||||
"DS-I213",
|
||||
"ds-i214",
|
||||
"DS-I214(B)",
|
||||
"ds-i214w(b)",
|
||||
"ds-i223",
|
||||
"DS-I400(C)",
|
||||
"ds-l122",
|
||||
"ds-n241w",
|
||||
"i100",
|
||||
"i110",
|
||||
"I114",
|
||||
"i114w",
|
||||
"I120",
|
||||
"IPC-B120-I",
|
||||
"IPC-B140",
|
||||
"IPC-B622-G2/ZS",
|
||||
"IPC-D082-G2/S",
|
||||
"IPC-D120",
|
||||
"IPC-T640-Z",
|
||||
"l110",
|
||||
"Other",
|
||||
"VDP-D2201",
|
||||
"VDP-D2211W(B)",
|
||||
"watch"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL",
|
||||
"DS-I102",
|
||||
"ds-i200",
|
||||
"Ds-i203",
|
||||
"DS-I214(B)",
|
||||
"DS-I214W(B)",
|
||||
"DS-I253",
|
||||
"ds-i458",
|
||||
"HiWatch DS-N208(C)",
|
||||
"i450s"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/ISAPI/Streaming/Channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ds-i200",
|
||||
"VDP-D2201"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 555,
|
||||
"url": "/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DS-I214(B)",
|
||||
"DS-I405"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/ISAPI/Streaming/Channels/102"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -4,6 +4,24 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"0010/0020",
|
||||
@@ -647,15 +665,6 @@
|
||||
"port": 0,
|
||||
"url": "cam[CHANNEL]/h264"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"FCS-3084"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"FCS-4051",
|
||||
@@ -770,6 +779,15 @@
|
||||
"protocol": "http",
|
||||
"port": 80,
|
||||
"url": "/cgi-bin/video.jpg"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"FCS-3084"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/102"
|
||||
}
|
||||
]
|
||||
}
|
||||
+36
-18
@@ -4,6 +4,24 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"0v600-365-kd",
|
||||
@@ -153,24 +171,6 @@
|
||||
"port": 0,
|
||||
"url": "snapshot.jpg?account=[USERNAME]&password=[PASSWORD]"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"BTD2",
|
||||
"CAM2",
|
||||
"DVR-FTD4-8",
|
||||
"DVR-THD30B",
|
||||
"FTD4",
|
||||
"Other",
|
||||
"WM-CAM-WAWNP2L",
|
||||
"wmvr-wnip2",
|
||||
"WNIP2-CM",
|
||||
"WNIP-2lta-bs"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/channels/301"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"CAM-1",
|
||||
@@ -375,6 +375,24 @@
|
||||
"protocol": "http",
|
||||
"port": 80,
|
||||
"url": "/cgi-bin/snapshot.cgi?chn=0&u=[USERNAME]&p=[PASSWORD]"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"BTD2",
|
||||
"CAM2",
|
||||
"DVR-FTD4-8",
|
||||
"DVR-THD30B",
|
||||
"FTD4",
|
||||
"Other",
|
||||
"WM-CAM-WAWNP2L",
|
||||
"wmvr-wnip2",
|
||||
"WNIP2-CM",
|
||||
"WNIP-2lta-bs"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/channels/301"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -4,6 +4,24 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 10554,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 10554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"801",
|
||||
|
||||
+128
-92
@@ -4,6 +4,42 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/[CHANNEL]02"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"005FTCD",
|
||||
@@ -588,58 +624,6 @@
|
||||
"port": 554,
|
||||
"url": "/ch05/1"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"7-12",
|
||||
"8ch 3MP NVR",
|
||||
"dv8-3425",
|
||||
"DVR w/ Web Port",
|
||||
"DVR W/ WEB PORT",
|
||||
"DVR4 4350",
|
||||
"DVR8",
|
||||
"DVR8-4900",
|
||||
"DVR8-8050",
|
||||
"DVR8-8075",
|
||||
"HDR8050",
|
||||
"lv-9808",
|
||||
"NHD-850CAM",
|
||||
"NHH-880CAM",
|
||||
"nvr16-7090",
|
||||
"NVR-7200",
|
||||
"Other",
|
||||
"SWIFI-FLOCAM2",
|
||||
"swifi-spotcam",
|
||||
"SWIFI-XTRCAM",
|
||||
"SWWHD-OUTCAM",
|
||||
"T855"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"880",
|
||||
"DVR4 4350",
|
||||
"DVR8-1500",
|
||||
"DVR8-1525",
|
||||
"DVR8-4500",
|
||||
"DVR8-4900",
|
||||
"HDR8050",
|
||||
"lv-9808",
|
||||
"NHD-850CAM",
|
||||
"nvr16-7090",
|
||||
"NVR-7200",
|
||||
"Other",
|
||||
"SPOTCAM",
|
||||
"WIFI-PT"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"887"
|
||||
@@ -874,37 +858,6 @@
|
||||
"port": 0,
|
||||
"url": "/Streaming/Unicast/channels/401"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR W/ WEB PORT",
|
||||
"DVR4 4350",
|
||||
"DVR8-8075",
|
||||
"lv-9808",
|
||||
"Other"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR-1500"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/701"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR-1500"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/601"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR4",
|
||||
@@ -942,15 +895,6 @@
|
||||
"port": 80,
|
||||
"url": "/?action=stream"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR8-4500"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/301"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR8-4500",
|
||||
@@ -1314,6 +1258,98 @@
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/2"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"7-12",
|
||||
"8ch 3MP NVR",
|
||||
"dv8-3425",
|
||||
"DVR w/ Web Port",
|
||||
"DVR W/ WEB PORT",
|
||||
"DVR4 4350",
|
||||
"DVR8",
|
||||
"DVR8-4900",
|
||||
"DVR8-8050",
|
||||
"DVR8-8075",
|
||||
"HDR8050",
|
||||
"lv-9808",
|
||||
"NHD-850CAM",
|
||||
"NHH-880CAM",
|
||||
"nvr16-7090",
|
||||
"NVR-7200",
|
||||
"Other",
|
||||
"SWIFI-FLOCAM2",
|
||||
"swifi-spotcam",
|
||||
"SWIFI-XTRCAM",
|
||||
"SWWHD-OUTCAM",
|
||||
"T855"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"880",
|
||||
"DVR4 4350",
|
||||
"DVR8-1500",
|
||||
"DVR8-1525",
|
||||
"DVR8-4500",
|
||||
"DVR8-4900",
|
||||
"HDR8050",
|
||||
"lv-9808",
|
||||
"NHD-850CAM",
|
||||
"nvr16-7090",
|
||||
"NVR-7200",
|
||||
"Other",
|
||||
"SPOTCAM",
|
||||
"WIFI-PT"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/Channels/102"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR W/ WEB PORT",
|
||||
"DVR4 4350",
|
||||
"DVR8-8075",
|
||||
"lv-9808",
|
||||
"Other"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 0,
|
||||
"url": "/Streaming/channels/101"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR-1500"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/701"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR-1500"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/601"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"DVR8-4500"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/301"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -4,6 +4,24 @@
|
||||
"last_updated": "2025-10-17",
|
||||
"source": "ispyconnect.com",
|
||||
"entries": [
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"ALL"
|
||||
],
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"url": "/Streaming/Channels/[CHANNEL]01"
|
||||
},
|
||||
{
|
||||
"models": [
|
||||
"TBK-BUL8841Z"
|
||||
|
||||
@@ -31,6 +31,54 @@
|
||||
"notes": "Common RTSP sub stream for ONVIF cameras",
|
||||
"model_count": 9998
|
||||
},
|
||||
{
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]01",
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"notes": "Hikvision main stream - 0-based channel input (channel 0 -> 101, 1 -> 201)",
|
||||
"model_count": 9500
|
||||
},
|
||||
{
|
||||
"url": "/Streaming/Channels/[CHANNEL]01",
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"notes": "Hikvision main stream - 1-based channel input (channel 1 -> 101, 2 -> 201)",
|
||||
"model_count": 9490
|
||||
},
|
||||
{
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]02",
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"notes": "Hikvision sub stream - 0-based channel input (channel 0 -> 102, 1 -> 202)",
|
||||
"model_count": 9480
|
||||
},
|
||||
{
|
||||
"url": "/Streaming/Channels/[CHANNEL]02",
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"notes": "Hikvision sub stream - 1-based channel input (channel 1 -> 102, 2 -> 202)",
|
||||
"model_count": 9470
|
||||
},
|
||||
{
|
||||
"url": "/Streaming/Channels/[CHANNEL+1]03",
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"notes": "Hikvision third stream - 0-based channel input (channel 0 -> 103, 1 -> 203)",
|
||||
"model_count": 9460
|
||||
},
|
||||
{
|
||||
"url": "/Streaming/Channels/[CHANNEL]03",
|
||||
"type": "FFMPEG",
|
||||
"protocol": "rtsp",
|
||||
"port": 554,
|
||||
"notes": "Hikvision third stream - 1-based channel input (channel 1 -> 103, 2 -> 203)",
|
||||
"model_count": 9450
|
||||
},
|
||||
{
|
||||
"url": "/ch2",
|
||||
"type": "FFMPEG",
|
||||
|
||||
@@ -302,11 +302,13 @@ func (s *Scanner) collectStreams(ctx context.Context, req models.StreamDiscovery
|
||||
"model", req.Model,
|
||||
"limit", req.ModelLimit)
|
||||
|
||||
// Search for similar models
|
||||
cameras, err := s.searchEngine.SearchByModel(req.Model, 0.8, req.ModelLimit)
|
||||
// Search for cameras using intelligent brand+model search
|
||||
searchResp, err := s.searchEngine.Search(req.Model, req.ModelLimit)
|
||||
if err != nil {
|
||||
s.logger.Error("model search failed", err)
|
||||
} else {
|
||||
cameras := searchResp.Cameras
|
||||
|
||||
// Collect entries from all matching cameras
|
||||
var entries []models.CameraEntry
|
||||
for _, camera := range cameras {
|
||||
|
||||
@@ -174,34 +174,38 @@ func (b *Builder) replacePlaceholders(urlPath string, ctx BuildContext) string {
|
||||
|
||||
// Common placeholders
|
||||
replacements := map[string]string{
|
||||
"[CHANNEL]": strconv.Itoa(ctx.Channel),
|
||||
"[channel]": strconv.Itoa(ctx.Channel),
|
||||
"{channel}": strconv.Itoa(ctx.Channel), // BUBBLE protocol uses {channel}
|
||||
"{CHANNEL}": strconv.Itoa(ctx.Channel),
|
||||
"[WIDTH]": strconv.Itoa(ctx.Width),
|
||||
"[width]": strconv.Itoa(ctx.Width),
|
||||
"[HEIGHT]": strconv.Itoa(ctx.Height),
|
||||
"[height]": strconv.Itoa(ctx.Height),
|
||||
"[USERNAME]": ctx.Username,
|
||||
"[username]": ctx.Username,
|
||||
"[PASSWORD]": ctx.Password,
|
||||
"[password]": ctx.Password,
|
||||
"[PASWORD]": ctx.Password, // Handle typo in database
|
||||
"[pasword]": ctx.Password,
|
||||
"[USER]": ctx.Username,
|
||||
"[user]": ctx.Username,
|
||||
"[PASS]": ctx.Password,
|
||||
"[pass]": ctx.Password,
|
||||
"[PWD]": ctx.Password,
|
||||
"[pwd]": ctx.Password,
|
||||
"[IP]": ctx.IP,
|
||||
"[ip]": ctx.IP,
|
||||
"[PORT]": strconv.Itoa(ctx.Port),
|
||||
"[port]": strconv.Itoa(ctx.Port),
|
||||
"[AUTH]": auth, // base64(username:password) for basic auth
|
||||
"[auth]": auth,
|
||||
"[TOKEN]": "", // Empty for now
|
||||
"[token]": "",
|
||||
"[CHANNEL]": strconv.Itoa(ctx.Channel),
|
||||
"[channel]": strconv.Itoa(ctx.Channel),
|
||||
"[CHANNEL+1]": strconv.Itoa(ctx.Channel + 1), // For Hikvision-style channels (101, 201, 301...)
|
||||
"[channel+1]": strconv.Itoa(ctx.Channel + 1),
|
||||
"{CHANNEL}": strconv.Itoa(ctx.Channel), // BUBBLE protocol uses {channel}
|
||||
"{channel}": strconv.Itoa(ctx.Channel),
|
||||
"{CHANNEL+1}": strconv.Itoa(ctx.Channel + 1),
|
||||
"{channel+1}": strconv.Itoa(ctx.Channel + 1),
|
||||
"[WIDTH]": strconv.Itoa(ctx.Width),
|
||||
"[width]": strconv.Itoa(ctx.Width),
|
||||
"[HEIGHT]": strconv.Itoa(ctx.Height),
|
||||
"[height]": strconv.Itoa(ctx.Height),
|
||||
"[USERNAME]": ctx.Username,
|
||||
"[username]": ctx.Username,
|
||||
"[PASSWORD]": ctx.Password,
|
||||
"[password]": ctx.Password,
|
||||
"[PASWORD]": ctx.Password, // Handle typo in database
|
||||
"[pasword]": ctx.Password,
|
||||
"[USER]": ctx.Username,
|
||||
"[user]": ctx.Username,
|
||||
"[PASS]": ctx.Password,
|
||||
"[pass]": ctx.Password,
|
||||
"[PWD]": ctx.Password,
|
||||
"[pwd]": ctx.Password,
|
||||
"[IP]": ctx.IP,
|
||||
"[ip]": ctx.IP,
|
||||
"[PORT]": strconv.Itoa(ctx.Port),
|
||||
"[port]": strconv.Itoa(ctx.Port),
|
||||
"[AUTH]": auth, // base64(username:password) for basic auth
|
||||
"[auth]": auth,
|
||||
"[TOKEN]": "", // Empty for now
|
||||
"[token]": "",
|
||||
}
|
||||
|
||||
// Replace all placeholders
|
||||
|
||||
Reference in New Issue
Block a user