feat: 导出CSV加HLS代理列,按IP排序
This commit is contained in:
parent
7c1fea3620
commit
7b8cf92b87
@ -1675,16 +1675,20 @@ func (u *UI) actionDevicesExportChannels(w http.ResponseWriter, r *http.Request)
|
||||
w.Header().Set("Content-Type", "text/csv; charset=utf-8")
|
||||
w.Header().Set("Content-Disposition", "attachment; filename=video_channels.csv")
|
||||
w.Write([]byte("\xef\xbb\xbf"))
|
||||
w.Write([]byte("设备名,IP,视频源,RTSP地址,HLS地址\n"))
|
||||
w.Write([]byte("设备名,IP,视频源,RTSP地址,HLS地址,HLS代理地址\n"))
|
||||
|
||||
if u.preview == nil {
|
||||
return
|
||||
}
|
||||
units, _ := u.preview.ListRecognitionUnits()
|
||||
type row struct {
|
||||
devName, devIP, devID, unitName, sourceName, rtsp, hls, proxyHLS string
|
||||
}
|
||||
var rows []row
|
||||
for _, unit := range units {
|
||||
// Find which device this unit is assigned to
|
||||
devName := ""
|
||||
devIP := ""
|
||||
devID := ""
|
||||
for _, dev := range devices {
|
||||
if dev == nil {
|
||||
continue
|
||||
@ -1694,6 +1698,7 @@ func (u *UI) actionDevicesExportChannels(w http.ResponseWriter, r *http.Request)
|
||||
if ref == unit.Ref {
|
||||
devName = dev.DisplayName()
|
||||
devIP = dev.IP
|
||||
devID = dev.DeviceID
|
||||
break
|
||||
}
|
||||
}
|
||||
@ -1709,11 +1714,23 @@ func (u *UI) actionDevicesExportChannels(w http.ResponseWriter, r *http.Request)
|
||||
if rtspPort == "" {
|
||||
rtspPort = "8555"
|
||||
}
|
||||
rtsp := fmt.Sprintf("rtsp://%s:%s/live/%s", devIP, rtspPort, unit.Name)
|
||||
hls := fmt.Sprintf("http://%s:9000/hls/%s/index.m3u8", devIP, unit.Name)
|
||||
fmt.Fprintf(w, "%s,%s,%s,%s,%s\n",
|
||||
escapeCSV(devName), escapeCSV(devIP),
|
||||
escapeCSV(unit.VideoSourceRef), escapeCSV(rtsp), escapeCSV(hls))
|
||||
rows = append(rows, row{
|
||||
devName, devIP, devID, unit.Name, unit.VideoSourceRef,
|
||||
fmt.Sprintf("rtsp://%s:%s/live/%s", devIP, rtspPort, unit.Name),
|
||||
fmt.Sprintf("http://%s:9000/hls/%s/index.m3u8", devIP, unit.Name),
|
||||
fmt.Sprintf("http://管理端IP:18080/hls/%s/hls/%s/index.m3u8", devID, unit.Name),
|
||||
})
|
||||
}
|
||||
sort.Slice(rows, func(i, j int) bool {
|
||||
if rows[i].devIP != rows[j].devIP {
|
||||
return rows[i].devIP < rows[j].devIP
|
||||
}
|
||||
return rows[i].unitName < rows[j].unitName
|
||||
})
|
||||
for _, r := range rows {
|
||||
fmt.Fprintf(w, "%s,%s,%s,%s,%s,%s\n",
|
||||
escapeCSV(r.devName), escapeCSV(r.devIP),
|
||||
escapeCSV(r.sourceName), escapeCSV(r.rtsp), escapeCSV(r.hls), escapeCSV(r.proxyHLS))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user