Archived
1
0
This commit is contained in:
Michael Gordeev
2018-09-14 19:24:46 +03:00
parent 35ddf4a012
commit 9e0f2d89e7
3 changed files with 36 additions and 21 deletions
+7
View File
@@ -22,5 +22,12 @@ namespace FoxTube.Classes
Duration = TimeSpan.FromMilliseconds(duration);
Text = text;
}
public Caption(double startTime, double duration, string text)
{
Start = TimeSpan.FromSeconds(startTime);
Duration = TimeSpan.FromSeconds(duration);
Text = text;
}
}
}
+15 -12
View File
@@ -58,24 +58,27 @@ namespace FoxTube.Controls
}
}
public void Initialize(string source)
public void Initialize(string source, bool isAutoGenerated = false)
{
XmlDocument doc = new XmlDocument();
doc.Load(source);
foreach (XmlElement i in doc["timedtext"]["body"].ChildNodes)
captions.Add(new Caption(int.Parse(i.GetAttribute("t")), int.Parse(i.GetAttribute("d")), i.InnerText));
if (!isAutoGenerated)
foreach (XmlElement i in doc["timedtext"]["body"].ChildNodes)
captions.Add(new Caption(int.Parse(i.GetAttribute("t")), int.Parse(i.GetAttribute("d")), i.InnerText));
else
foreach (XmlElement i in doc["transcript"].ChildNodes)
captions.Add(new Caption(double.Parse(i.GetAttribute("start")), double.Parse(i.GetAttribute("dur")), i.InnerText.Replace("<font color=\"#E5E5E5\">", "").Replace("<font color=\"#CCCCCC\">", "").Replace("</font>", "").Replace("&#39;", "'")));
if(!isClosed)
captions.ForEach((x) =>
captions.ForEach((x) =>
{
if (Player.Position > x.Start && Player.Position < x.End)
{
if(Player.Position > x.Start && Player.Position < x.End)
{
currentCaption = x;
text.Text = currentCaption.Text;
Visibility = Visibility.Visible;
}
});
currentCaption = x;
text.Text = currentCaption.Text;
Visibility = Visibility.Visible;
}
});
timer.Start();
}
+14 -9
View File
@@ -30,11 +30,13 @@ using Windows.ApplicationModel.Core;
using Windows.UI;
using Windows.Graphics.Display;
using Windows.Media.Casting;
using MyToolkit.Multimedia;
using YoutubeExplode.Models.MediaStreams;
using YoutubeExplode;
using YoutubeExplode.Models.ClosedCaptions;
using System.Globalization;
using FoxTube.Controls;
using Windows.System;
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
@@ -152,11 +154,13 @@ namespace FoxTube
//Loading captions
ccInfo = await client.GetVideoClosedCaptionTrackInfosAsync(item.Id);
foreach (ClosedCaptionTrackInfo cc in ccInfo)
{
subsLang.Items.Add(new ComboBoxItem()
{
Content = string.Format("{1}{0}", CultureInfo.GetCultureInfo(cc.Language.Code).DisplayName, cc.IsAutoGenerated ? " (Auto-generated)" : ""),
Content = string.Format("{0}{1}", CultureInfo.GetCultureInfo(cc.Language.Code).DisplayName, cc.IsAutoGenerated ? " (Auto-generated)" : ""),
Tag = cc
});
}
if(ccInfo.Count > 0)
subsLang.SelectedIndex = 0;
else
@@ -393,8 +397,10 @@ namespace FoxTube
{
if (subsSwitch.IsOn)
{
captions.Initialize(ccInfo[subsLang.SelectedIndex].Url);
if (ccInfo[subsLang.SelectedIndex].IsAutoGenerated)
captions.Initialize(ccInfo[subsLang.SelectedIndex].Url.Replace("format=3", "format=0"), true);
else
captions.Initialize(ccInfo[subsLang.SelectedIndex].Url);
}
else
captions.Close();
@@ -703,15 +709,15 @@ namespace FoxTube
{
switch(e.Key)
{
case Windows.System.VirtualKey.Escape:
case Windows.System.VirtualKey.F11:
case VirtualKey.Escape:
case VirtualKey.F11:
if (fullScreen)
fullscreen_Click(this, null);
break;
case Windows.System.VirtualKey.Space:
case VirtualKey.Space:
play_Click(this, null);
break;
case Windows.System.VirtualKey.Left:
case VirtualKey.Left:
back10_Click(this, null);
break;
case Windows.System.VirtualKey.Right:
@@ -722,8 +728,7 @@ namespace FoxTube
private void subsLang_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (subsSwitch.IsOn)
captions.Initialize(ccInfo[subsLang.SelectedIndex].Url);
LoadTrack();
}
}
}