#198: Done
This commit is contained in:
@@ -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.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using Windows.ApplicationModel.Core;
|
||||
using Windows.System;
|
||||
using Windows.UI;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
@@ -70,7 +75,8 @@ namespace FoxTube
|
||||
{
|
||||
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 });
|
||||
block.Inlines.Add(link);
|
||||
}
|
||||
@@ -133,5 +139,69 @@ namespace FoxTube
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user