private void ParseM3UTvChannelsFile(string m3uLine) { if (m3uLine == "#EXTM3U") { this.IsExtendend = true; } else if (m3uLine.StartsWith("#EXTINF")) { this._currentTvChannel = this.ExtractExtendedChannelInformation(m3uLine); } else { var m3uLineArray = m3uLine.Split('|'); if (m3uLineArray.Length == 1) { this._currentTvChannel.Path = m3uLine; } else { this._currentTvChannel.Path = m3uLineArray[0].Trim(); } this._channels.Add(this._currentTvChannel); } }
private TvChannel ExtractExtendedChannelInformation(string line) { var auxInformation = line.Substring(11, line.Length - 11); var channel = new TvChannel(); var tvgId_Index = auxInformation.IndexOf("tvg-id"); var tvgName_Index = auxInformation.IndexOf("tvg-name"); var tvgLogo_Index = auxInformation.IndexOf("tvg-logo"); var groupTitle_Index = auxInformation.IndexOf("group-title"); var tvgId = auxInformation.Substring(tvgId_Index, tvgId_Index + tvgName_Index).Trim(); channel.Id = this.ExtractAndSanitizeValue(tvgId); var tvgName = auxInformation.Substring(tvgName_Index, tvgLogo_Index - tvgName_Index).Trim(); var tvgNameArray = tvgName.Split(':'); if (tvgNameArray.Length == 1) { channel.Name = this.ExtractAndSanitizeValue(tvgName); } else { channel.Name = tvgNameArray[0].Trim(); channel.VideoParameters = tvgNameArray[1].Trim(); } var tvgLogo = auxInformation.Substring(tvgLogo_Index, groupTitle_Index - tvgLogo_Index).Trim(); channel.Logo = this.ExtractAndSanitizeValue(tvgLogo); var groupTitle = auxInformation.Substring(groupTitle_Index, auxInformation.Length - groupTitle_Index).Split(',')[0].Trim(); channel.GroupTitle = this.ExtractAndSanitizeValue(groupTitle); return(channel); }