diff --git a/FoxTube/Classes/Methods.cs b/FoxTube/Classes/Methods.cs index feae342..54c2a08 100644 --- a/FoxTube/Classes/Methods.cs +++ b/FoxTube/Classes/Methods.cs @@ -7,6 +7,7 @@ using System.IO; using System.Linq; using System.Text.RegularExpressions; using System.Web; +using System.Xml; using Windows.ApplicationModel.Core; using Windows.ApplicationModel.DataTransfer; using Windows.Storage; @@ -68,6 +69,26 @@ namespace FoxTube return arr[arr.Length - 1]; } + public static TimeSpan GetDuration(this string str) + { + try + { + return XmlConvert.ToTimeSpan(str); + } + catch (FormatException) + { + TimeSpan time = XmlConvert.ToTimeSpan("PT" + str.Split('T')[1]); + TimeSpan date = TimeSpan.FromDays(int.Parse(str.Split('W')[0].Replace("P", "")) * 7); + date.Add(time); + + return date; + } + catch + { + return TimeSpan.FromMilliseconds(0); + } + } + public static string GetAgo(DateTime dateTime) { TimeSpan span = DateTime.Now - dateTime; diff --git a/FoxTube/Classes/SettingsStorage.cs b/FoxTube/Classes/SettingsStorage.cs index 675b03f..1c7a6a8 100644 --- a/FoxTube/Classes/SettingsStorage.cs +++ b/FoxTube/Classes/SettingsStorage.cs @@ -86,7 +86,7 @@ namespace FoxTube SaveData(); } } - public static string Region + public static string RelevanceLanguage { get { return (string)settings[8]; } set @@ -95,17 +95,16 @@ namespace FoxTube SaveData(); } } - public static int SafeSearch + public static string Region { - get { return Convert.ToInt32(settings[9]); } + get { return (string)settings[9]; } set { settings[9] = value; SaveData(); } } - - public static int Theme + public static int SafeSearch { get { return Convert.ToInt32(settings[10]); } set @@ -114,15 +113,25 @@ namespace FoxTube SaveData(); } } - public static bool HasAccount + + public static int Theme { - get { return (bool)settings[11]; } + get { return Convert.ToInt32(settings[11]); } set { settings[11] = value; SaveData(); } } + public static bool HasAccount + { + get { return (bool)settings[12]; } + set + { + settings[12] = value; + SaveData(); + } + } public static string Version { @@ -175,7 +184,8 @@ namespace FoxTube 100, (new[] { "ua", "ru", "by", "kz", "kg", "md", "lv", "ee" }).Contains(CultureInfo.InstalledUICulture.TwoLetterISOLanguageName) ? "ru-RU" : "en-US", - CultureInfo.CurrentCulture.Name, + (new[] { "ua", "ru", "by", "kz", "kg", "md", "lv", "ee" }).Contains(CultureInfo.InstalledUICulture.TwoLetterISOLanguageName) ? "ru" : "en", + (new[] { "ua", "ru", "by", "kz", "kg", "md", "lv", "ee" }).Contains(CultureInfo.InstalledUICulture.TwoLetterISOLanguageName) ? "ru" : "US", 0, 2, @@ -186,7 +196,15 @@ namespace FoxTube { try { - settings = JsonConvert.DeserializeObject(storage.Values["settings"] as string); + object[] saved = JsonConvert.DeserializeObject(storage.Values["settings"] as string); + if (settings.Length > saved.Length) + { + for (int i = 0; i < saved.Length; i++) + settings[i] = saved[i]; + + SaveData(); + } + else settings = saved; } catch (ArgumentNullException) { } } diff --git a/FoxTube/Controls/VideoCard.xaml.cs b/FoxTube/Controls/VideoCard.xaml.cs index 092c312..27cb2e2 100644 --- a/FoxTube/Controls/VideoCard.xaml.cs +++ b/FoxTube/Controls/VideoCard.xaml.cs @@ -65,10 +65,7 @@ namespace FoxTube.Controls else { views.Text = $"{item.Statistics.ViewCount:0,0} views"; - string dur = string.Empty; - try { XmlConvert.ToTimeSpan(item.ContentDetails.Duration); } - catch { } - info.Text = $"{dur} | {Methods.GetAgo(item.Snippet.PublishedAt.Value)}"; + info.Text = $"{item.ContentDetails.Duration.GetDuration()} | {Methods.GetAgo(item.Snippet.PublishedAt.Value)}"; embed = false; } diff --git a/FoxTube/Pages/Home.xaml.cs b/FoxTube/Pages/Home.xaml.cs index 42574ae..4da57d8 100644 --- a/FoxTube/Pages/Home.xaml.cs +++ b/FoxTube/Pages/Home.xaml.cs @@ -25,12 +25,10 @@ namespace FoxTube string trendToken; Dictionary subsTokens = new Dictionary(); - string reg; public Home() { InitializeComponent(); - reg = CultureInfo.GetCultures(CultureTypes.AllCultures).Find(i => i.IetfLanguageTag == SettingsStorage.Region).IetfLanguageTag.Remove(0, 3); trendGrid = ((trending.Content as ScrollViewer).Content as StackPanel).Children[0] as VideoGrid; trendMore = ((trending.Content as ScrollViewer).Content as StackPanel).Children[1] as ShowMore; @@ -54,7 +52,7 @@ namespace FoxTube request.PageToken = trendToken; request.Chart = VideosResource.ListRequest.ChartEnum.MostPopular; - request.RegionCode = reg; + request.RegionCode = SettingsStorage.Region; VideoListResponse response = await request.ExecuteAsync(); if (!string.IsNullOrWhiteSpace(response.NextPageToken)) @@ -108,7 +106,7 @@ namespace FoxTube request.MaxResults = 48; request.Chart = VideosResource.ListRequest.ChartEnum.MostPopular; - request.RegionCode = reg; + request.RegionCode = SettingsStorage.Region; VideoListResponse response = await request.ExecuteAsync(); if (!string.IsNullOrWhiteSpace(response.NextPageToken)) diff --git a/FoxTube/Pages/Search.xaml.cs b/FoxTube/Pages/Search.xaml.cs index 32842b2..1fa0e11 100644 --- a/FoxTube/Pages/Search.xaml.cs +++ b/FoxTube/Pages/Search.xaml.cs @@ -97,8 +97,8 @@ namespace FoxTube request.Q = arg.Term; request.SafeSearch = (SearchResource.ListRequest.SafeSearchEnum)(int)settings.Values["safeSearch"]; - request.RegionCode = CultureInfo.GetCultures(CultureTypes.AllCultures).Find(i => i.IetfLanguageTag == SettingsStorage.Region).IetfLanguageTag.Remove(0, 3); - request.RelevanceLanguage = CultureInfo.GetCultures(CultureTypes.AllCultures).Find(i => i.IetfLanguageTag == SettingsStorage.Region).TwoLetterISOLanguageName; + request.RegionCode = SettingsStorage.Region; + request.RelevanceLanguage = SettingsStorage.RelevanceLanguage; request.MaxResults = 48; try diff --git a/FoxTube/Pages/SettingsPages/General.xaml b/FoxTube/Pages/SettingsPages/General.xaml index 1f9d57f..4955e99 100644 --- a/FoxTube/Pages/SettingsPages/General.xaml +++ b/FoxTube/Pages/SettingsPages/General.xaml @@ -19,6 +19,7 @@