diff --git a/src/buffer.go b/src/buffer.go index aeb23ff..6c15831 100644 --- a/src/buffer.go +++ b/src/buffer.go @@ -889,8 +889,11 @@ InitBuffer: bufferFile.Close() - stream.Status = true - playlist.Streams[streamID] = stream + if stream.Status == false { + stream.Status = true + playlist.Streams[streamID] = stream + } + tmpSegment++ tmpFile = fmt.Sprintf("%s%d.ts", tmpFolder, tmpSegment) diff --git a/src/data.go b/src/data.go index 852aa55..2c60826 100644 --- a/src/data.go +++ b/src/data.go @@ -397,17 +397,25 @@ func saveFilter(request RequestStruct) (settings SettingsStrcut, err error) { // Filter aktualisieren / löschen for key, value := range data.(map[string]interface{}) { - var oldData = filterMap[dataID].(map[string]interface{}) - oldData[key] = value - // Filter löschen if _, ok := data.(map[string]interface{})["delete"]; ok { - delete(filterMap, dataID) break + } + + if filter, ok := data.(map[string]interface{})["filter"].(string); ok { + + if len(filter) == 0 { + err = errors.New(getErrMsg(1014)) + delete(filterMap, dataID) + return + } } + var oldData = filterMap[dataID].(map[string]interface{}) + oldData[key] = value + } } diff --git a/src/m3u.go b/src/m3u.go index 84066ea..d513ac0 100644 --- a/src/m3u.go +++ b/src/m3u.go @@ -43,6 +43,10 @@ func filterThisStream(s interface{}) (status bool) { for _, filter := range Data.Filter { + if filter.Rule == "" { + continue + } + var group, name, search string var exclude, include string var match = false diff --git a/src/screen.go b/src/screen.go index 8822d09..29acf2c 100644 --- a/src/screen.go +++ b/src/screen.go @@ -245,6 +245,8 @@ func getErrMsg(errCode int) (errMsg string) { errMsg = fmt.Sprintf("Invalid formatting of the time") case 1013: errMsg = fmt.Sprintf("Invalid settings file (settings.json), file must be at least version %s", System.Compatibility) + case 1014: + errMsg = fmt.Sprintf("Invalid filter rule") case 1020: errMsg = fmt.Sprintf("Data could not be saved, invalid keyword") diff --git a/src/xepg.go b/src/xepg.go index 2a19bbb..13a6daf 100644 --- a/src/xepg.go +++ b/src/xepg.go @@ -316,6 +316,12 @@ func createXEPGDatabase() (err error) { } + var xepgChannels = make(map[string]interface{}) + + for k, v := range Data.XEPG.Channels { + xepgChannels[k] = v + } + for _, dsa := range Data.Streams.Active { var channelExists = false // Entscheidet ob ein Kanal neu zu Datenbank hinzugefügt werden soll. @@ -331,7 +337,7 @@ func createXEPGDatabase() (err error) { Data.Cache.Streams.Active = append(Data.Cache.Streams.Active, m3uChannel.Name) // XEPG Datenbank durchlaufen um nach dem Kanal zu suchen. - for xepg, dxc := range Data.XEPG.Channels { + for xepg, dxc := range xepgChannels { var xepgChannel XEPGChannelStruct err = json.Unmarshal([]byte(mapToJSON(dxc)), &xepgChannel) @@ -367,6 +373,7 @@ func createXEPGDatabase() (err error) { //os.Exit(0) switch channelExists { + case true: // Bereits vorhandener Kanal var xepgChannel XEPGChannelStruct