From 7c807cd468c7bae7663dfbc615f73cfeb11692d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 12:18:53 +0200 Subject: [PATCH 01/13] Added some channel aliases --- Data/channels.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Data/channels.xml b/Data/channels.xml index e5d880b..b51bb54 100644 --- a/Data/channels.xml +++ b/Data/channels.xml @@ -1481,6 +1481,9 @@ RO local-transilvania https://raw.githubusercontent.com/hmlendea/tv-logos/master/logos/hd365.png + + HD 365 + HDNetAction.ro @@ -1835,6 +1838,7 @@ unknown -----ROMANIA------ + *** ROMANIA - github.com/Free-IPTV iptvcat.com RO: iptvcat.com From 76307430b3b8f53c07c3853c5a733e25d3719bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 12:20:08 +0200 Subject: [PATCH 02/13] Added a channel --- Data/channels.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Data/channels.xml b/Data/channels.xml index b51bb54..c47baaf 100644 --- a/Data/channels.xml +++ b/Data/channels.xml @@ -611,6 +611,12 @@ RO: Cartoon + + CBNFamily.ro + CBN Family + RO + unknown + CBSReality.ro CBS Reality From c1976760f6e25be0d960fdbd63ba0cb15becc959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 12:54:52 +0200 Subject: [PATCH 03/13] Added some extra variants for existing providers --- Data/providers.xml | 217 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 167 insertions(+), 50 deletions(-) diff --git a/Data/providers.xml b/Data/providers.xml index e974d5e..594fc11 100644 --- a/Data/providers.xml +++ b/Data/providers.xml @@ -311,6 +311,33 @@ https://bestfreeiptv.com/dl/ro-bestfreeiptv-{0:yyyy-MM-dd}_4.m3u RO + + + bestfreeiptv-backup5 + false + 515 + Best Free IPTV Backup 5 + https://bestfreeiptv.com/dl/ro-bestfreeiptv-{0:yyyy-MM-dd}_5.m3u + RO + + + + bestfreeiptv-backup6 + false + 516 + Best Free IPTV Backup 6 + https://bestfreeiptv.com/dl/ro-bestfreeiptv-{0:yyyy-MM-dd}_6.m3u + RO + + + + bestfreeiptv-backup7 + false + 517 + Best Free IPTV Backup 7 + https://bestfreeiptv.com/dl/ro-bestfreeiptv-{0:yyyy-MM-dd}_7.m3u + RO + freeiptvplaylist @@ -423,180 +450,252 @@ iptvsource-main true - 570 + 550 IPTVsource https://www.iptvsource.com/dl/ro_{0:ddMMyy}_iptvsource_com.m3u RO + + iptvsource-main-alt + true + 550 + IPTVsource (Alternative) + https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com.m3u + RO + + iptvsource-backup1 true - 571 + 551 IPTVsource Backup 1 https://www.iptvsource.com/dl/ro_{0:ddMMyy}_iptvsource_com2.m3u RO + + iptvsource-backup1-alt + true + 551 + IPTVsource Backup 1 (Alternative) + https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com2.m3u + RO + + iptvsource-backup2 true - 572 + 552 IPTVsource Backup 2 https://www.iptvsource.com/dl/ro_{0:ddMMyy}_iptvsource_com3.m3u RO + + iptvsource-backup2-alt + true + 552 + IPTVsource Backup 2 (Alternative) + https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com3.m3u + RO + + iptvsource-backup3 true - 573 + 553 IPTVsource Backup 3 https://www.iptvsource.com/dl/ro_{0:ddMMyy}_iptvsource_com4.m3u RO + + iptvsource-backup3-alt + true + 553 + IPTVsource Backup 3 (Alternative) + https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com4.m3u + RO + + iptvsource-backup4 true - 574 + 554 IPTVsource Backup 4 https://www.iptvsource.com/dl/ro_{0:ddMMyy}_iptvsource_com5.m3u RO - iptvsource-main-alt + iptvsource-backup4-alt true - 570 - IPTVsource (Alternative) - https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com.m3u + 554 + IPTVsource Backup 4 (Alternative) + https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com5.m3u RO - iptvsource-backup1-alt + iptvsource-backup5 true - 571 - IPTVsource Backup 1 (Alternative) - https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com2.m3u + 555 + IPTVsource Backup 5 + https://www.iptvsource.com/dl/ro_{0:ddMMyy}_iptvsource_com6.m3u RO - iptvsource-backup2-alt + iptvsource-backup5-alt true - 572 - IPTVsource Backup 2 (Alternative) - https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com3.m3u + 555 + IPTVsource Backup 5 (Alternative) + https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com6.m3u RO - iptvsource-backup3-alt + iptvsource-backup6 true - 573 - IPTVsource Backup 3 (Alternative) - https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com4.m3u + 556 + IPTVsource Backup 6 + https://www.iptvsource.com/dl/ro_{0:ddMMyy}_iptvsource_com7.m3u RO - iptvsource-backup4-alt + iptvsource-backup6-alt true - 574 - IPTVsource Backup 4 (Alternative) - https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com5.m3u + 556 + IPTVsource Backup 6 (Alternative) + https://www.iptvsource.com/lists/ro_{0:ddMMyy}_iptvsource_com7.m3u RO gratisiptv-list1 true - 580 + 560 Gratis IPTV List 1 https://gratisiptv.com/dl/ro-gratisiptvm3u-{0:yyyy-MM-dd}-1.m3u RO + + gratisiptv-list1-alt + true + 560 + Gratis IPTV List 1 (Alternative) + https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-1.m3u + RO + + gratisiptv-list2 true - 581 + 561 Gratis IPTV List 2 https://gratisiptv.com/dl/ro-gratisiptvm3u-{0:yyyy-MM-dd}-2.m3u RO + + gratisiptv-list2-alt + true + 561 + Gratis IPTV List 2 (Alternative) + https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-2.m3u + RO + + gratisiptv-list3 true - 582 + 562 Gratis IPTV List 3 https://gratisiptv.com/dl/ro-gratisiptvm3u-{0:yyyy-MM-dd}-3.m3u RO + + gratisiptv-list3-alt + true + 562 + Gratis IPTV List 3 (Alternative) + https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-3.m3u + RO + + gratisiptv-list4 true - 583 + 563 Gratis IPTV List 4 https://gratisiptv.com/dl/ro-gratisiptvm3u-{0:yyyy-MM-dd}-4.m3u RO + + gratisiptv-list4-alt + true + 563 + Gratis IPTV List 4 (Alternative) + https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-4.m3u + RO + + gratisiptv-list5 true - 584 + 564 Gratis IPTV List 5 https://gratisiptv.com/dl/ro-gratisiptvm3u-{0:yyyy-MM-dd}-5.m3u RO - gratisiptv-list1-alt + gratisiptv-list5-alt true - 585 - Gratis IPTV List 1 (Alternative) - https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-1.m3u + 564 + Gratis IPTV List 5 (Alternative) + https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-5.m3u RO - gratisiptv-list2-alt + gratisiptv-list6 true - 586 - Gratis IPTV List 2 (Alternative) - https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-2.m3u + 565 + Gratis IPTV List 6 + https://gratisiptv.com/dl/ro-gratisiptvm3u-{0:yyyy-MM-dd}-6.m3u RO - gratisiptv-list3-alt + gratisiptv-list6-alt true - 587 - Gratis IPTV List 3 (Alternative) - https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-3.m3u + 565 + Gratis IPTV List 6 (Alternative) + https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-6.m3u RO - gratisiptv-list4-alt + gratisiptv-list7 true - 588 - Gratis IPTV List 4 (Alternative) - https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-4.m3u + 566 + Gratis IPTV List 7 + https://gratisiptv.com/dl/ro-gratisiptvm3u-{0:yyyy-MM-dd}-7.m3u RO - gratisiptv-list5-alt + gratisiptv-list7-alt true - 589 - Gratis IPTV List 5 (Alternative) - https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-5.m3u + 566 + Gratis IPTV List 7 (Alternative) + https://gratisiptv.com/m3u/ro-gratisiptvm3u-{0:yyyy-MM-dd}-7.m3u RO @@ -699,6 +798,15 @@ RO + + freetuxtv-ro-alt + true + 680 + Free Tux TV Romania (Alternative) + https://database.freetuxtv.net/WebStreamExport/index?format=m3u&status=2&country=ro&isp=all + RO + + freetuxtv-md true @@ -708,6 +816,15 @@ MD + + freetuxtv-md-alt + true + 680 + Free Tux TV Moldova (Alternative) + https://database.freetuxtv.net/WebStreamExport/index?format=m3u&status=2&country=md&isp=all + RO + + github-yonni55555-ro true From 35b3a248a260102b885f526078cc8d22543741f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 12:55:11 +0200 Subject: [PATCH 04/13] Removed some defunct providers --- Data/providers.xml | 36 ------------------------------------ 1 file changed, 36 deletions(-) diff --git a/Data/providers.xml b/Data/providers.xml index 594fc11..dc85b80 100644 --- a/Data/providers.xml +++ b/Data/providers.xml @@ -699,24 +699,6 @@ RO - - iptvresources-main - true - 590 - iPTV Resources - https://iptvresources.com/iptv/ro-iptv-{0:yyyy-MM-dd}.m3u - RO - - - - iptvresources-backup - true - 591 - iPTV Resources Backup - https://iptvresources.com/iptv/ro-iptv-{0:yyyy-MM-dd}-1.m3u - RO - - freeiptvserver true @@ -771,24 +753,6 @@ RO - - m3uplaylist-list1 - true - 650 - M3U Playlist List 1 - http://m3uplaylist.com/m3u-files/romania_iptv_{0:dd-MM-yyyy}_m3uplaylist_com_S1.m3u - RO - - - - m3uplaylist-list2 - true - 660 - M3U Playlist List 2 - http://m3uplaylist.com/m3u-files/romania_iptv_m3uplaylist_com.m3u - RO - - freetuxtv-ro true From 1372deb44d9920b307c650eb48e5ae12f1dc36e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 12:55:53 +0200 Subject: [PATCH 05/13] Syntax fix --- Data/providers.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Data/providers.xml b/Data/providers.xml index dc85b80..aa25d5b 100644 --- a/Data/providers.xml +++ b/Data/providers.xml @@ -767,7 +767,7 @@ true 680 Free Tux TV Romania (Alternative) - https://database.freetuxtv.net/WebStreamExport/index?format=m3u&status=2&country=ro&isp=all + https://database.freetuxtv.net/WebStreamExport/index?format=m3u&status=2&country=ro&isp=all RO @@ -785,7 +785,7 @@ true 680 Free Tux TV Moldova (Alternative) - https://database.freetuxtv.net/WebStreamExport/index?format=m3u&status=2&country=md&isp=all + https://database.freetuxtv.net/WebStreamExport/index?format=m3u&status=2&country=md&isp=all RO From ec9c1e34cc8597be83f92aecd38cbd1193ec8033 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 13:00:30 +0200 Subject: [PATCH 06/13] Upgraded the UT project to .NET 5.0 --- UnitTests/IptvPlaylistAggregator.UnitTests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnitTests/IptvPlaylistAggregator.UnitTests.csproj b/UnitTests/IptvPlaylistAggregator.UnitTests.csproj index d7c2d8a..b4392e0 100644 --- a/UnitTests/IptvPlaylistAggregator.UnitTests.csproj +++ b/UnitTests/IptvPlaylistAggregator.UnitTests.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1 + net5.0 IptvPlaylistAggregator.UnitTests From b86bdd1a724c82713f7675b622d6817befac11e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 13:02:30 +0200 Subject: [PATCH 07/13] Updated dependencies --- IptvPlaylistAggregator.csproj | 2 +- UnitTests/IptvPlaylistAggregator.UnitTests.csproj | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/IptvPlaylistAggregator.csproj b/IptvPlaylistAggregator.csproj index 2c971c9..de2434d 100644 --- a/IptvPlaylistAggregator.csproj +++ b/IptvPlaylistAggregator.csproj @@ -24,7 +24,7 @@ - + diff --git a/UnitTests/IptvPlaylistAggregator.UnitTests.csproj b/UnitTests/IptvPlaylistAggregator.UnitTests.csproj index b4392e0..cde350f 100644 --- a/UnitTests/IptvPlaylistAggregator.UnitTests.csproj +++ b/UnitTests/IptvPlaylistAggregator.UnitTests.csproj @@ -6,10 +6,10 @@ - - - - + + + + From 2befc2771d535536147543fb1c79596efe53bce2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 13:12:41 +0200 Subject: [PATCH 08/13] Improved channel matching rules --- Service/ChannelMatcher.cs | 8 +++++--- UnitTests/Service/ChannelMatcherTests.cs | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Service/ChannelMatcher.cs b/Service/ChannelMatcher.cs index c2f7268..a030c66 100644 --- a/Service/ChannelMatcher.cs +++ b/Service/ChannelMatcher.cs @@ -18,14 +18,16 @@ public sealed class ChannelMatcher : IChannelMatcher static readonly IDictionary TextReplacements = new Dictionary { - { "[\\(\\[]]*([Aa]uto|[Bb]|[Bb]ackup|[Ll]ive [Oo]n [Mm]atches|[Mm]ulti-*[Aa]udio|[Mm]ulti-*[Ss]ub|[Nn]ew!*|[Oo]n-[Dd]emand)[\\)\\]]*", "" }, + { "[\\(\\[]]*([Aa]uto|[Bb]|[Bb]ackup|[Ll]ive [Oo]n [Mm]atches|[Mm]atch[ -]*[Tt]ime|[Mm]ulti-*[Aa]udio|[Mm]ulti-*[Ss]ub|[Nn]ew!*|[Oo]n-[Dd]emand)[\\)\\]]*", "" }, { "(.)[ \\.:_\\-\\|\\[\\(\\]\\)\"]+(Ultra|Full|[FU])*[_-]*[HMS][DQ]", "$1" }, { "4[Kk]\\+", "" }, + + { "^(.+)\\s+VIP\\s+([A-Z][A-Z])\\s*$", "$2: $1" }, { "RO\\(L\\) *[\\|\\[\\(\\]\\)\".:-]", "RO:" }, { "^( *[\\|\\[\\(\\]\\)\".:-]* *([A-Z][A-Z]) *[\\|\\[\\(\\]\\)\".:-] *)+", "$2:" }, - { "^ *([A-Z][A-Z]): *(.*) \\(*\\1\\)*$", "$1: $2" }, + { "^\\s*([A-Z][A-Z]): *(.*) \\(*\\1\\)*$", "$1: $2" }, { "Moldavia", "Moldova" }, { "RUMANIA", "Romania" }, @@ -47,7 +49,7 @@ public sealed class ChannelMatcher : IChannelMatcher { " HEVC$", "" }, { " HEVC ", "" }, - { "^ *RO ", "RO: " }, + { "^\\s*RO ", "RO: " }, { " \\(*ROM\\)*$", "" }, { " *[\\|\\()]*ROM*[\\|\\):]", "RO:" }, { "^Romania[n]*:", "RO:" }, diff --git a/UnitTests/Service/ChannelMatcherTests.cs b/UnitTests/Service/ChannelMatcherTests.cs index e65db46..d94e08b 100644 --- a/UnitTests/Service/ChannelMatcherTests.cs +++ b/UnitTests/Service/ChannelMatcherTests.cs @@ -141,11 +141,14 @@ public void ChannelNamesDoNotMatch_WithoutAliasWithoutCountry( [TestCase("|RO| Ardeal TV", "RO", "ARDEALTV")] [TestCase("|ROM|: Cromtel", "RO", "CROMTEL")] [TestCase("|UK| CHELSEA TV (Live On Matches) HD", "UK", "UKCHELSEATV")] + [TestCase("Bollywood VIP RO", "RO", "BOLLYWOOD")] [TestCase("Canal Regional (Moldova)", "MD", "MDCANALREGIONAL")] + [TestCase("iConcert FHD RO", "RO", "ICONCERT")] [TestCase("MD: MD: Diaspora Media", "MD", "MDDIASPORAMEDIA")] [TestCase("RO | Travel", "RO", "TRAVEL")] [TestCase("RO: Travel", "RO", "TRAVEL")] [TestCase("RO(L): TELEKOM SPORT 1 FHD", "RO", "TELEKOMSPORT1")] + [TestCase("Telekom Sport 5 FHD [Match Time] RO", "RO", "TELEKOMSPORT5")] [TestCase("Travel Mix", "RO", "TRAVELMIX")] [TestCase("TV Paprika", "RO", "TVPAPRIKA")] [TestCase("TV8", "MD", "MDTV8")] From 463d3d49b302cf50ad54a6f4bcc379dd664bf06c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 13:38:00 +0200 Subject: [PATCH 09/13] Improved channel matching --- Service/ChannelMatcher.cs | 16 ++++++++++------ UnitTests/Service/ChannelMatcherTests.cs | 7 ++++++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Service/ChannelMatcher.cs b/Service/ChannelMatcher.cs index a030c66..8e8733d 100644 --- a/Service/ChannelMatcher.cs +++ b/Service/ChannelMatcher.cs @@ -18,6 +18,10 @@ public sealed class ChannelMatcher : IChannelMatcher static readonly IDictionary TextReplacements = new Dictionary { + { "^\\s+", "" }, + { "\\s+$", "" }, + { "&", "&" }, + { "[\\(\\[]]*([Aa]uto|[Bb]|[Bb]ackup|[Ll]ive [Oo]n [Mm]atches|[Mm]atch[ -]*[Tt]ime|[Mm]ulti-*[Aa]udio|[Mm]ulti-*[Ss]ub|[Nn]ew!*|[Oo]n-[Dd]emand)[\\)\\]]*", "" }, { "(.)[ \\.:_\\-\\|\\[\\(\\]\\)\"]+(Ultra|Full|[FU])*[_-]*[HMS][DQ]", "$1" }, { "4[Kk]\\+", "" }, @@ -26,8 +30,8 @@ public sealed class ChannelMatcher : IChannelMatcher { "RO\\(L\\) *[\\|\\[\\(\\]\\)\".:-]", "RO:" }, - { "^( *[\\|\\[\\(\\]\\)\".:-]* *([A-Z][A-Z]) *[\\|\\[\\(\\]\\)\".:-] *)+", "$2:" }, - { "^\\s*([A-Z][A-Z]): *(.*) \\(*\\1\\)*$", "$1: $2" }, + { "^([\\|\\[\\(\\]\\)\".:-]* *([A-Z][A-Z]) *[\\|\\[\\(\\]\\)\".:-] *)+", "$2:" }, + { "^([A-Z][A-Z]): *(.*) \\(*\\1\\)*$", "$1: $2" }, { "Moldavia", "Moldova" }, { "RUMANIA", "Romania" }, @@ -49,13 +53,13 @@ public sealed class ChannelMatcher : IChannelMatcher { " HEVC$", "" }, { " HEVC ", "" }, - { "^\\s*RO ", "RO: " }, + { "^RO ", "RO: " }, { " \\(*ROM\\)*$", "" }, { " *[\\|\\()]*ROM*[\\|\\):]", "RO:" }, { "^Romania[n]*:", "RO:" }, - { "^ *[\\|]*VIP *([A-Z][A-Z]):", "$1:" }, + { "^[\\|]*VIP *([A-Z][A-Z]):", "$1:" }, - { "^ *([A-Z][A-Z]: *)*", "$1" }, + { "^([A-Z][A-Z]: *)*", "$1" }, { "^(RO: *)*", "" }, }; @@ -97,7 +101,7 @@ public bool DoesMatch(ChannelName name1, string name2, string country2) name1.Aliases.Any(name1alias => DoChannelNamesMatch(name1alias, name1.Country, name2, country2)); bool DoChannelNamesMatch(string name1, string country1, string name2, string country2) - => NormaliseName(name1, country1).Equals(NormaliseName(name2, country2)); + => name1.Equals(name2) || NormaliseName(name1, country1).Equals(NormaliseName(name2, country2)); string StripChannelName(string name) { diff --git a/UnitTests/Service/ChannelMatcherTests.cs b/UnitTests/Service/ChannelMatcherTests.cs index d94e08b..4a508d2 100644 --- a/UnitTests/Service/ChannelMatcherTests.cs +++ b/UnitTests/Service/ChannelMatcherTests.cs @@ -39,10 +39,11 @@ public void ChannelNamesDoMatch_WithAliasWithCountry( Assert.IsTrue(channelMatcher.DoesMatch(channelName, providerName, providerCountry)); } + [TestCase("Agro TV", "RO: Agro", "Agro RO")] [TestCase("Agro TV", "RO: Agro", "Agro RO")] [TestCase("Antena 1", "RO: Antenna", "RO: Antenna HD")] [TestCase("Ardeal TV", "RO: Ardeal TV", "|RO| Ardeal TV")] - [TestCase("Bollywood TV", "RO: BO TV", "BO TV")] + [TestCase("Bollywood Classic", "RO: Bollywood Classic TV", "Bollywood Classic TV VIP RO")] [TestCase("Cartoon Network", "RO: Cartoon Network", "VIP|RO|: Cartoon Network")] [TestCase("CineMAX 1", "RO: CineMAX", "CineMAX RO")] [TestCase("Digi Sport 2", "RO: Digi Sport 2", "RO: DIGI Sport 2")] @@ -92,6 +93,7 @@ public void ChannelNamesDoMatch_WithAliasWithoutCountry( [TestCase("MTV Europe", "RO: MTV Europe")] [TestCase("Pro TV", "PRO TV ULTRA_HD")] [TestCase("Realitatea Plus", "Realitatea Plus")] + [TestCase("TVR 1", "TVR1 [B] RO")] [TestCase("TVR", "RO: TVR HD (1080P)")] [TestCase("U TV", "UTV")] [TestCase("Vivid TV", "Vivid TV HD(18+)")] @@ -141,8 +143,10 @@ public void ChannelNamesDoNotMatch_WithoutAliasWithoutCountry( [TestCase("|RO| Ardeal TV", "RO", "ARDEALTV")] [TestCase("|ROM|: Cromtel", "RO", "CROMTEL")] [TestCase("|UK| CHELSEA TV (Live On Matches) HD", "UK", "UKCHELSEATV")] + [TestCase("Alfa & Omega RO", "RO", "ALFAOMEGA")] [TestCase("Bollywood VIP RO", "RO", "BOLLYWOOD")] [TestCase("Canal Regional (Moldova)", "MD", "MDCANALREGIONAL")] + [TestCase("Crime & Investigation RO", "RO", "CRIMEINVESTIGATION")] [TestCase("iConcert FHD RO", "RO", "ICONCERT")] [TestCase("MD: MD: Diaspora Media", "MD", "MDDIASPORAMEDIA")] [TestCase("RO | Travel", "RO", "TRAVEL")] @@ -155,6 +159,7 @@ public void ChannelNamesDoNotMatch_WithoutAliasWithoutCountry( [TestCase("TVC21", "MD", "MDTVC21")] [TestCase("TVR Moldova", "MD", "MDTVR")] [TestCase("TVR Târgu Mureș", "RO", "TVRTARGUMURES")] + [TestCase("TVR1 [B] RO", "RO", "TVR1")] [TestCase("VP HD", "RO", "VP")] [TestCase("VSV De Niro", "RO", "VSVDENIRO")] [Test] From 350b6a4ccca590f23334a5dbad4d3ac303a2847c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 13:41:21 +0200 Subject: [PATCH 10/13] Added a chanel and an aliias --- Data/channels.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Data/channels.xml b/Data/channels.xml index c47baaf..8647c6d 100644 --- a/Data/channels.xml +++ b/Data/channels.xml @@ -510,6 +510,7 @@ https://raw.githubusercontent.com/hmlendea/tv-logos/master/logos/bollywood_classic.png RO: BO Clasic + RO: Bollywood Classic TV RO: Bollywood Classic @@ -2236,6 +2237,13 @@ MD: Cimișlia TV + + Medika.ro + Medika + RO + unknown + https://raw.githubusercontent.com/hmlendea/tv-logos/master/logos/medika.png + Megamax.ro MegaMax From 6932d260de2bc69db1d1f01b12518545e67ca356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 13:44:21 +0200 Subject: [PATCH 11/13] Uploaded the cover image --- .github/cover.png | Bin 0 -> 20143 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/cover.png diff --git a/.github/cover.png b/.github/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..421d00d26694f7021ef725514978d8ba291b8155 GIT binary patch literal 20143 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 literal 0 HcmV?d00001 From ff08ec78d23418705463b2c8d80dcd88700025be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 13:45:44 +0200 Subject: [PATCH 12/13] Updated the packaging script --- package.sh | 52 ++++++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/package.sh b/package.sh index 4d3ba5f..2d4dce5 100644 --- a/package.sh +++ b/package.sh @@ -1,55 +1,59 @@ #!/bin/bash - APP_NAME=$(git remote -v | tail -1 | sed 's|.*/\([^/]*\)\.git.*|\1|') -VERSION="$1" +VERSION="${1}" RELEASE_DIR_RELATIVE="bin/Release" PUBLISH_DIR_RELATIVE="${RELEASE_DIR_RELATIVE}/publish-script-output" -RELEASE_DIR="$(pwd)/$RELEASE_DIR_RELATIVE" -PUBLISH_DIR="$(pwd)/$PUBLISH_DIR_RELATIVE" +RELEASE_DIR="$(pwd)/${RELEASE_DIR_RELATIVE}" +PUBLISH_DIR="$(pwd)/${PUBLISH_DIR_RELATIVE}" -if [ -z "$VERSION" ]; then +if [ -z "${VERSION}" ]; then echo "ERROR: Please specify a version" exit 1 fi function package { - ARCH="$1" - - OUTPUT_DIR="$PUBLISH_DIR/$ARCH" - OUTPUT_FILE="$RELEASE_DIR/${APP_NAME}_${VERSION}_${ARCH}.zip" + local ARCH="${1}" + local OUTPUT_DIR="${PUBLISH_DIR}/${ARCH}" + local OUTPUT_FILE="${RELEASE_DIR}/${APP_NAME}_${VERSION}_${ARCH}.zip" - echo "Packaging \"$OUTPUT_DIR\" to \"$OUTPUT_FILE\"" + echo "Packaging \"${OUTPUT_DIR}\" to \"${OUTPUT_FILE}\"" - if [ -f "$OUTPUT_FILE" ]; then - rm "$OUTPUT_FILE" - fi + [ -f "${OUTPUT_FILE}" ] && rm "${OUTPUT_FILE}" - cd "$OUTPUT_DIR" - zip -q -9 -r "$OUTPUT_FILE" . - cd - + cd "${OUTPUT_DIR}" || exit + zip -q -9 -r "${OUTPUT_FILE}" . + cd - || exit } function dotnet-pub { - ARCH="$1" - OUTPUT_DIR="$PUBLISH_DIR_RELATIVE/$ARCH" - - dotnet publish -c Release -r "$ARCH" -o "$OUTPUT_DIR" --self-contained=true /p:TrimUnusedDependencies=true /p:LinkDuringPublish=true + local ARCH="${1}" + local OUTPUT_DIR="${PUBLISH_DIR_RELATIVE}/${ARCH}" + + dotnet publish \ + --configuration Release \ + --runtime "${ARCH}" \ + --output "${OUTPUT_DIR}" \ + --self-contained true \ + /p:TrimUnusedDependencies=true \ + /p:LinkDuringPublish=true } function cleanup { echo "Cleaning build output" - rm -rf "$PUBLISH_DIR" + rm -rf "${PUBLISH_DIR}" } function build-release { - dotnet-pub $1 - package $1 + local ARCH="${1}" + + dotnet-pub "${ARCH}" + package "${ARCH}" } build-release linux-arm build-release linux-arm64 build-release linux-x64 -build-release win-x64 build-release osx-x64 +build-release win-x64 cleanup From b0319fa8e9a3dbbef815ac064b9f25a0521564b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hora=C8=9Biu=20Mlendea?= Date: Fri, 12 Nov 2021 13:48:30 +0200 Subject: [PATCH 13/13] Created a VS Code settings file --- .vscode/settings.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..de2ecf1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "workbench.colorCustomizations": { + "statusBar.background": "#047b81", + "statusBar.foreground": "#e7e7e7", + "statusBarItem.hoverBackground": "#06aab2", + "statusBarItem.remoteBackground": "#047b81", + "statusBarItem.remoteForeground": "#e7e7e7", + "tab.activeBorder": "#06aab2" + }, + "peacock.color": "#047b81" +} \ No newline at end of file