add channels filter

add hardcoded discovery science channel
This commit is contained in:
Vova
2024-05-07 14:43:52 +03:00
parent 8aa7b0a261
commit bcc2ba2790
6 changed files with 40 additions and 15 deletions
+1 -1
View File
@@ -64,7 +64,7 @@
<TextBlock FontSize="15" Foreground="White" Text="Ch" HorizontalAlignment="Center" VerticalAlignment="Center" />
<Button Grid.RowSpan="2" Height="70" Width="50" Margin="10,0,10,0" Style="{DynamicResource ButtonUp}" Command="{Binding NextCommand}" />
</StackPanel>
<Grid Grid.Column="1" x:Name="programInfo" Visibility="{Binding IsProgramInfoVisible,Converter={StaticResource BooleanToVisibilityConverterKey}}">
<Grid Grid.Column="1" x:Name="programInfo" Visibility="{Binding IsProgramInfoVisible,Converter={StaticResource BooleanToVisibilityConverterKey}}" Background="#0F000000">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
+14 -4
View File
@@ -1,4 +1,5 @@
using System.Net.Http;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text.RegularExpressions;
using System.Xml;
@@ -114,8 +115,16 @@ namespace TV_Player
public static async Task<(List<M3UInfo> programList, string programGuide)> DownloadM3UFromWebAsync(string url)
{
var fileData=await ReadFile(url);
// Parse M3U content
string fileData;
if (Uri.IsWellFormedUriString(url,UriKind.Absolute))
{
fileData = await ReadFile(url);
}
else
{
fileData= File.ReadAllText(url);
}
return ParseM3UFromString(fileData);
}
private static string[] SplitStringBeforeSeparator(string input, string separator)
@@ -170,7 +179,8 @@ namespace TV_Player
private static bool TryParseM3ULine(string m3uLine, out M3UInfo? info)
{
info = null;
string pattern = @"#EXTINF:\d+ CUID=""(?<CUID>.*?)"" number=""(?<Number>.*?)"" tvg-id=""(?<TvgID>.*?)"" tvg-name=""(?<TvgName>.*?)"".*?tvg-logo=""(?<Logo>.*?)"" group-title=""(?<GroupTitle>.*?)""[^,]*,(?<Name>.*)[^\r](?<URL>.*)$";
//string pattern = @"#EXTINF:\d+ CUID=""(?<CUID>.*?)"" number=""(?<Number>.*?)"" tvg-id=""(?<TvgID>.*?)"" tvg-name=""(?<TvgName>.*?)"".*?tvg-logo=""(?<Logo>.*?)"" group-title=""(?<GroupTitle>.*?)""[^,]*,(?<Name>.*)[^\r](?<URL>.*)$";
string pattern = @"#EXTINF:(?:-?\d+)\s+?(?:CUID=""(?<CUID>.*?)""\s+)?(?:number=""(?<Number>.*?)""\s+)?(?:tvg-id=""(?<TvgID>.*?)""\s+)?(?:tvg-name=""(?<TvgName>.*?)""\s+)?(?:tvg-logo=""(?<Logo>.*?)""\s+)?(?:group-title=""(?<GroupTitle>.*?)"")[^,]*,(?<Name>.*)[^\r](?<URL>.*)$";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
Match match = regex.Match(m3uLine);
+12 -1
View File
@@ -19,7 +19,18 @@ namespace TV_Player
{
//string m3uLink = "http://pl.da-tv.vip/a71e77fa/835b3216/tv.m3u";
var result = await M3UParser.DownloadM3UFromWebAsync(m3uLink);
// For how hardcoded add custom channel
result.programList.Add(new M3UInfo()
{
GroupTitle = "Познавательные",
Name = "Discovery science",
Logo = "http://ip.viks.tv/posts/2018-11/1543603622_discovery_science.png",
Number = Convert.ToString(result.programList.Count+1),
Url= "https://s2.viks.tv/571/index.m3u8?k=1715093638p791i991i86i78S9b9c0d8fefdcO74ff3ed2f4710c95b07"
});;
programsSubject.OnNext(result.programList);
var groupping = result.programList.GroupBy(item => item.GroupTitle)
@@ -7,6 +7,7 @@ namespace TV_Player
public class ProgramsGroupViewModel : ObservableViewModelBase, IDisposable
{
private List<GroupInfo> _programs;
public List<GroupInfo> Programs
{
get => _programs;
@@ -20,7 +21,7 @@ namespace TV_Player
public ProgramsGroupViewModel()
{
ItemSelectedCommand = new RelayCommand(OnItemSelected);
_groupInformationSubscriber = TVPlayerViewModel.Instance.PlaylistData.GroupsInformation.Subscribe(x=>Programs = x);
_groupInformationSubscriber = TVPlayerViewModel.Instance.PlaylistData.GroupsInformation.Subscribe(x => Programs = SettingsModel.HiddenGroups == null ? x : x.Where(g => !SettingsModel.HiddenGroups.Contains(g.Name.ToLower())).ToList());
TVPlayerViewModel.Instance.TopPanelVisible(true, "Группы");
}
+6 -3
View File
@@ -14,7 +14,7 @@ namespace TV_Player.ViewModels
public static string LastScreen { get; set; }
public static GroupInfo Group { get; set; }
public static M3UInfo Program { get; set; }
public static string[] HiddenGroups { get; set; }
public static void SaveSetttings()
{
@@ -26,7 +26,8 @@ namespace TV_Player.ViewModels
StartFullScreen,
LastScreen,
Group,
Program
Program,
HiddenGroups,
};
// Serialize the object to JSON
@@ -47,7 +48,8 @@ namespace TV_Player.ViewModels
Group = default(GroupInfo),
Program = default(M3UInfo),
StartFromLastScreen = default(bool),
StartFullScreen = default(bool)
StartFullScreen = default(bool),
HiddenGroups = default(string[])
};
if (File.Exists(SettingsFilePath))
{
@@ -62,6 +64,7 @@ namespace TV_Player.ViewModels
Program = loadedData.Program;
StartFromLastScreen = loadedData.StartFromLastScreen;
StartFullScreen = loadedData.StartFullScreen;
HiddenGroups = loadedData.HiddenGroups;
}
}
}