MCPcopy Index your code
hub / github.com/Threadfin/Threadfin / buildM3U

Function buildM3U

src/m3u.go:188–285  ·  view source on GitHub ↗

Threadfin M3U Datei erstellen

(groups []string)

Source from the content-addressed store, hash-verified

186
187// Threadfin M3U Datei erstellen
188func buildM3U(groups []string) (m3u string, err error) {
189
190 var imgc = Data.Cache.Images
191 var m3uChannels = make(map[float64]XEPGChannelStruct)
192 var channelNumbers []float64
193
194 for _, dxc := range Data.XEPG.Channels {
195 var xepgChannel XEPGChannelStruct
196 err := json.Unmarshal([]byte(mapToJSON(dxc)), &xepgChannel)
197 if err == nil {
198 var channelNumber, err = strconv.ParseFloat(strings.TrimSpace(xepgChannel.XChannelID), 64)
199
200 if xepgChannel.TvgName == "" {
201 xepgChannel.TvgName = xepgChannel.Name
202 }
203 if xepgChannel.XActive && !xepgChannel.XHideChannel {
204 if len(groups) > 0 {
205
206 if indexOfString(xepgChannel.XGroupTitle, groups) == -1 {
207 goto Done
208 }
209
210 }
211
212 if err == nil {
213 m3uChannels[channelNumber] = xepgChannel
214 channelNumbers = append(channelNumbers, channelNumber)
215 }
216
217 }
218 }
219
220 Done:
221 }
222
223 // M3U Inhalt erstellen
224 sort.Float64s(channelNumbers)
225
226 var xmltvURL = fmt.Sprintf("%s://%s/xmltv/threadfin.xml", System.ServerProtocol.XML, System.Domain)
227 if Settings.ForceHttps && Settings.HttpsThreadfinDomain != "" {
228 xmltvURL = fmt.Sprintf("https://%s/xmltv/threadfin.xml", Settings.HttpsThreadfinDomain)
229 }
230 m3u = fmt.Sprintf(`#EXTM3U url-tvg="%s" x-tvg-url="%s"`+"\n", xmltvURL, xmltvURL)
231
232 for _, channelNumber := range channelNumbers {
233
234 var channel = m3uChannels[channelNumber]
235
236 group := channel.XGroupTitle
237 if channel.XCategory != "" {
238 group = channel.XCategory
239 }
240
241 if Settings.ForceHttps && Settings.HttpsThreadfinDomain != "" {
242 u, err := url.Parse(channel.URL)
243 if err == nil {
244 u.Scheme = "https"
245 host_split := strings.Split(u.Host, ":")

Callers 2

createM3UFileFunction · 0.85
ThreadfinFunction · 0.85

Calls 4

createStreamingURLFunction · 0.85
writeByteToFileFunction · 0.85
mapToJSONFunction · 0.70
indexOfStringFunction · 0.70

Tested by

no test coverage detected