Mapping Menü für die XMLTV Dateien erstellen
()
| 223 | |
| 224 | // Mapping Menü für die XMLTV Dateien erstellen |
| 225 | func createXEPGMapping() { |
| 226 | Data.XMLTV.Files = getLocalProviderFiles("xmltv") |
| 227 | Data.XMLTV.Mapping = make(map[string]interface{}) |
| 228 | |
| 229 | var tmpMap = make(map[string]interface{}) |
| 230 | |
| 231 | var friendlyDisplayName = func(channel Channel) (displayName string) { |
| 232 | var dn = channel.DisplayName |
| 233 | if len(dn) > 0 { |
| 234 | switch len(dn) { |
| 235 | case 1: |
| 236 | displayName = dn[0].Value |
| 237 | default: |
| 238 | displayName = fmt.Sprintf("%s (%s)", dn[0].Value, dn[1].Value) |
| 239 | } |
| 240 | } |
| 241 | |
| 242 | return |
| 243 | } |
| 244 | |
| 245 | if len(Data.XMLTV.Files) > 0 { |
| 246 | |
| 247 | for i := len(Data.XMLTV.Files) - 1; i >= 0; i-- { |
| 248 | |
| 249 | var file = Data.XMLTV.Files[i] |
| 250 | |
| 251 | var err error |
| 252 | var fileID = strings.TrimSuffix(getFilenameFromPath(file), path.Ext(getFilenameFromPath(file))) |
| 253 | showInfo("XEPG:" + "Parse XMLTV file: " + getProviderParameter(fileID, "xmltv", "name")) |
| 254 | |
| 255 | // Check file size for progress reporting |
| 256 | fileInfo, err := os.Stat(file) |
| 257 | if err == nil { |
| 258 | fileSizeMB := float64(fileInfo.Size()) / (1024 * 1024) |
| 259 | if fileSizeMB > 50 { |
| 260 | showInfo(fmt.Sprintf("XEPG: Large XML file detected (%.1f MB), this may take a while...", fileSizeMB)) |
| 261 | } |
| 262 | } |
| 263 | |
| 264 | //xmltv, err = getLocalXMLTV(file) |
| 265 | var xmltv XMLTV |
| 266 | err = getLocalXMLTV(file, &xmltv) |
| 267 | if err != nil { |
| 268 | Data.XMLTV.Files = append(Data.XMLTV.Files, Data.XMLTV.Files[i+1:]...) |
| 269 | var errMsg = err.Error() |
| 270 | err = errors.New(getProviderParameter(fileID, "xmltv", "name") + ": " + errMsg) |
| 271 | ShowError(err, 000) |
| 272 | } |
| 273 | |
| 274 | // XML Parsen (Provider Datei) |
| 275 | if err == nil { |
| 276 | var imgc = Data.Cache.Images |
| 277 | // Daten aus der XML Datei in eine temporäre Map schreiben |
| 278 | var xmltvMap = make(map[string]interface{}) |
| 279 | |
| 280 | totalChannels := len(xmltv.Channel) |
| 281 | if totalChannels > 1000 { |
| 282 | showInfo(fmt.Sprintf("XEPG: Processing %d channels from %s", totalChannels, getProviderParameter(fileID, "xmltv", "name"))) |
no test coverage detected