MCPcopy Create free account
hub / github.com/Threadfin/Threadfin / createXEPGMapping

Function createXEPGMapping

src/xepg.go:225–346  ·  view source on GitHub ↗

Mapping Menü für die XMLTV Dateien erstellen

()

Source from the content-addressed store, hash-verified

223
224// Mapping Menü für die XMLTV Dateien erstellen
225func 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")))

Callers 1

buildXEPGFunction · 0.85

Calls 8

getLocalProviderFilesFunction · 0.85
showInfoFunction · 0.85
getProviderParameterFunction · 0.85
getLocalXMLTVFunction · 0.85
ShowErrorFunction · 0.85
showDebugFunction · 0.85
showWarningFunction · 0.85
getFilenameFromPathFunction · 0.70

Tested by

no test coverage detected