Archived
1
0
This commit is contained in:
Michael Gordeev
2018-10-09 17:51:26 +03:00
parent f642bb5653
commit 7185561c82
2 changed files with 75 additions and 2 deletions
+72 -2
View File
@@ -1,9 +1,14 @@
using MyToolkit.Multimedia; using Google.Apis.YouTube.v3;
using Google.Apis.YouTube.v3.Data;
using MyToolkit.Multimedia;
using System; using System;
using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Web;
using Windows.ApplicationModel.Core; using Windows.ApplicationModel.Core;
using Windows.System;
using Windows.UI; using Windows.UI;
using Windows.UI.Xaml; using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls;
@@ -70,7 +75,8 @@ namespace FoxTube
{ {
try try
{ {
Hyperlink link = new Hyperlink { NavigateUri = new Uri(item), Foreground = new SolidColorBrush(Colors.Red) }; Hyperlink link = new Hyperlink();
link.Click += (s, arg) => { ProcessLink(item); };
link.Inlines.Add(new Run { Text = item }); link.Inlines.Add(new Run { Text = item });
block.Inlines.Add(link); block.Inlines.Add(link);
} }
@@ -133,5 +139,69 @@ namespace FoxTube
return "Unknown"; return "Unknown";
} }
} }
public async static void ProcessLink(string url)
{
try
{
Debug.WriteLine($"Processing link: {url}");
if (url.Contains("youtube.com/") || url.Contains("youtu.be/"))
{
Debug.WriteLine("This is an internal youtube link");
url = url.Replace("https://", "").Replace("http://", "").Replace("wwww.", "").Replace("//", "");
Debug.WriteLine($"Prepared link: {url}");
if (url.Contains("/playlist"))
{
Debug.WriteLine($"This is a playlist link. ID: {HttpUtility.ParseQueryString(url).Get("list")}");
MainPage.GoToPlaylist(HttpUtility.ParseQueryString(url).Get("list"));
}
else if (url.Contains("youtu.be/"))
{
Debug.WriteLine($"This is obfuscated video link. Video ID: {url.Split('/')[1]}");
MainPage.GoToVideo(url.Split('/')[1]);
}
else if (url.Contains("/watch"))
{
Debug.WriteLine($"This is regular video link. Video ID: {HttpUtility.ParseQueryString(url).Get("v")}");
MainPage.GoToVideo(HttpUtility.ParseQueryString(url).Get(0), HttpUtility.ParseQueryString(url).Get("list"));
}
else if (url.Contains("/v/"))
{
Debug.WriteLine($"This is video link. ID: {url.Split('/')[2].Split('?')[0]}");
MainPage.GoToVideo(url.Split('/')[2].Split('?')[0]);
}
else if (url.Contains("/channel/"))
{
Debug.WriteLine($"This is channel link. ID: {url.Split('/')[2]}");
MainPage.GoToChannel(url.Split('/')[2]);
}
else if (url.Contains("/user/"))
{
Debug.WriteLine($"This is channel link with username. Username: {url.Split('/')[2]}");
ChannelsResource.ListRequest request = SecretsVault.Service.Channels.List("id");
Debug.WriteLine(request.ForUsername = url.Split('/')[2]);
request.MaxResults = 1;
MainPage.GoToChannel((await request.ExecuteAsync()).Items[0].Id);
}
else if (url.Contains("/c/"))
{
Debug.WriteLine($"This is channel link with custom url. Custom name: {url.Split('/')[2]}");
SearchResource.ListRequest request = SecretsVault.Service.Search.List("id");
Debug.WriteLine(request.Q = url.Split('/')[2]);
request.MaxResults = 1;
MainPage.GoToChannel((await request.ExecuteAsync()).Items[0].Id.ChannelId);
}
else
throw new Exception();
}
else
throw new Exception();
}
catch
{
await Launcher.LaunchUriAsync(new Uri(url));
}
}
} }
} }
+3
View File
@@ -320,12 +320,14 @@ namespace FoxTube
public void GoToChannel(string id) public void GoToChannel(string id)
{ {
Debug.WriteLine($"Channel id: {id}");
MinimizeAsInitializer(); MinimizeAsInitializer();
content.Navigate(typeof(ChannelPage), id); content.Navigate(typeof(ChannelPage), id);
} }
public async void GoToVideo(string id, string playlistId = null) public async void GoToVideo(string id, string playlistId = null)
{ {
Debug.WriteLine($"Video id: {id}; Playlist id: {playlistId}");
try try
{ {
var connection = NetworkInformation.GetInternetConnectionProfile().GetConnectionCost(); var connection = NetworkInformation.GetInternetConnectionProfile().GetConnectionCost();
@@ -369,6 +371,7 @@ namespace FoxTube
public void GoToPlaylist(string id) public void GoToPlaylist(string id)
{ {
Debug.WriteLine($"Playlist id: {id}");
MinimizeAsInitializer(); MinimizeAsInitializer();
content.Navigate(typeof(PlaylistPage), id); content.Navigate(typeof(PlaylistPage), id);
} }