Added video categories link to video page and improved search to display video categories
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using Google.Apis.YouTube.v3.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using static Google.Apis.YouTube.v3.SearchResource.ListRequest;
|
||||
|
||||
@@ -34,11 +35,11 @@ namespace FoxTube
|
||||
case Enumerations.ConversionType.Captions:
|
||||
if (Captions)
|
||||
return VideoCaptionEnum.ClosedCaption;
|
||||
else return null;
|
||||
else return VideoCaptionEnum.Any;
|
||||
case Enumerations.ConversionType.CreativeCommons:
|
||||
if (CreativeCommons)
|
||||
return VideoLicenseEnum.CreativeCommon;
|
||||
else return null;
|
||||
else return VideoLicenseEnum.Any;
|
||||
case Enumerations.ConversionType.Date:
|
||||
switch(Date)
|
||||
{
|
||||
@@ -61,7 +62,7 @@ namespace FoxTube
|
||||
case Enumerations.ConversionType.HD:
|
||||
if (HD)
|
||||
return VideoDefinitionEnum.High;
|
||||
else return null;
|
||||
else return VideoDefinitionEnum.Any;
|
||||
case Enumerations.ConversionType.LiveEvent:
|
||||
if (LiveEvent)
|
||||
return EventTypeEnum.Live;
|
||||
@@ -79,7 +80,7 @@ namespace FoxTube
|
||||
case Enumerations.ConversionType.ThreeD:
|
||||
if (Is3D)
|
||||
return VideoDimensionEnum.Value3d;
|
||||
else return null;
|
||||
else return VideoDimensionEnum.Any;
|
||||
case Enumerations.ConversionType.Type:
|
||||
switch(Type)
|
||||
{
|
||||
@@ -100,6 +101,7 @@ namespace FoxTube
|
||||
|
||||
public string Term { get; private set; }
|
||||
public string Channel { get; private set; }
|
||||
public VideoCategory Category { get; set; }
|
||||
public Filters Filter { get; private set; } = new Filters();
|
||||
|
||||
public SearchParameters(string term)
|
||||
@@ -107,6 +109,13 @@ namespace FoxTube
|
||||
Term = term;
|
||||
}
|
||||
|
||||
public SearchParameters(VideoCategory category)
|
||||
{
|
||||
Category = category;
|
||||
Filter = new Filters();
|
||||
Filter.Type = Filters.Enumerations.Type.Video;
|
||||
}
|
||||
|
||||
public SearchParameters(string term, Filters filters)
|
||||
{
|
||||
Term = term;
|
||||
@@ -119,6 +128,7 @@ namespace FoxTube
|
||||
Channel = channelId;
|
||||
}
|
||||
|
||||
|
||||
public SearchParameters(string term, string channelId, Filters filters)
|
||||
{
|
||||
Term = term;
|
||||
@@ -130,6 +140,7 @@ namespace FoxTube
|
||||
{
|
||||
return $@"Term: {Term}
|
||||
Channel id: {Channel}
|
||||
Category id: {Category}
|
||||
Filters:
|
||||
Order: {Filter.Order}
|
||||
Type: {Filter.Type}
|
||||
@@ -107,7 +107,7 @@
|
||||
<Compile Include="Classes\HistorySet.cs" />
|
||||
<Compile Include="Classes\InboxItem.cs" />
|
||||
<Compile Include="Classes\Methods.cs" />
|
||||
<Compile Include="Classes\SearchPaameters.cs" />
|
||||
<Compile Include="Classes\SearchParameters.cs" />
|
||||
<Compile Include="Classes\SettingsStorage.cs" />
|
||||
<Compile Include="Classes\ManifestGenerator.cs" />
|
||||
<Compile Include="Controls\Advert.xaml.cs">
|
||||
|
||||
@@ -77,12 +77,20 @@ namespace FoxTube
|
||||
{
|
||||
Parameters = arg;
|
||||
request = SecretsVault.Service.Search.List("id,snippet");
|
||||
|
||||
searchTerm.Text = $"{resources.GetString("/Search/header")} '{Parameters.Term}'";
|
||||
if (!string.IsNullOrWhiteSpace(arg.Channel))
|
||||
{
|
||||
request.ChannelId = arg.Channel;
|
||||
(type.Items[2] as ComboBoxItem).Visibility = Visibility.Collapsed;
|
||||
(grid.Children[1] as CommandBar).Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else if (arg.Category != null)
|
||||
{
|
||||
(filters.Children[0] as GridView).Items.Remove(type);
|
||||
searchTerm.Text = $"{resources.GetString("/Search/category")} '{arg.Category.Snippet.Title}'";
|
||||
request.VideoCategoryId = arg.Category.Id;
|
||||
}
|
||||
request.Q = arg.Term;
|
||||
request.SafeSearch = (SearchResource.ListRequest.SafeSearchEnum)SettingsStorage.SafeSearch;
|
||||
|
||||
@@ -101,7 +109,7 @@ namespace FoxTube
|
||||
request.VideoDefinition = (SearchResource.ListRequest.VideoDefinitionEnum)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.HD);
|
||||
request.VideoDimension = (SearchResource.ListRequest.VideoDimensionEnum)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.ThreeD);
|
||||
request.VideoCaption = (SearchResource.ListRequest.VideoCaptionEnum)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.Captions);
|
||||
request.EventType = (SearchResource.ListRequest.EventTypeEnum)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.LiveEvent);
|
||||
request.EventType = (SearchResource.ListRequest.EventTypeEnum?)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.LiveEvent);
|
||||
request.VideoLicense = (SearchResource.ListRequest.VideoLicenseEnum)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.CreativeCommons);
|
||||
}
|
||||
|
||||
@@ -120,7 +128,6 @@ namespace FoxTube
|
||||
features.SelectedItems.Add(features.Items[4]);
|
||||
|
||||
SearchListResponse response = await request.ExecuteAsync();
|
||||
searchTerm.Text = $"{resources.GetString("/Search/header")} '{Parameters.Term}'";
|
||||
resultsCount.Text = $"{resources.GetString("/Search/found")}: {SetResults(response.PageInfo.TotalResults)} {resources.GetString("/Search/items")}";
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(response.NextPageToken))
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
<StackPanel Margin="0,10">
|
||||
<Button FontFamily="Segoe UI, Segoe MDL2 Assets" Content=" Continue from: 00:10:37" Name="left" Click="Left_Click" Visibility="Collapsed"/>
|
||||
<TextBlock IsTextSelectionEnabled="True" Name="title" Text="[Video title]" FontSize="25" TextWrapping="WrapWholeWords" HorizontalTextAlignment="Start"/>
|
||||
<TextBlock Text="Published at: " Name="date"/>
|
||||
<TextBlock Text="Published at: " Name="meta"/>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
|
||||
@@ -14,6 +14,7 @@ using Windows.System;
|
||||
using Windows.UI;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
using Windows.UI.Xaml.Documents;
|
||||
using Windows.UI.Xaml.Media;
|
||||
using Windows.UI.Xaml.Media.Imaging;
|
||||
using Windows.UI.Xaml.Navigation;
|
||||
@@ -258,7 +259,32 @@ namespace FoxTube.Pages
|
||||
{
|
||||
//Setting meta
|
||||
title.Text = item.Snippet.Localized.Title;
|
||||
date.Text = $"{resources.GetString("/VideoPage/publishedAt")}: {item.Snippet.PublishedAt} ({Methods.GetAgo(item.Snippet.PublishedAt.Value)})";
|
||||
meta.Text = "";
|
||||
meta.Inlines.Add(new Run
|
||||
{
|
||||
Text = $"{resources.GetString("/VideoPage/publishedAt")}: {item.Snippet.PublishedAt} ({Methods.GetAgo(item.Snippet.PublishedAt.Value)})"
|
||||
});
|
||||
if(!string.IsNullOrWhiteSpace(item.Snippet.CategoryId))
|
||||
{
|
||||
VideoCategoriesResource.ListRequest request = SecretsVault.Service.VideoCategories.List("snippet,id");
|
||||
request.Id = item.Snippet.CategoryId;
|
||||
request.Hl = SettingsStorage.RelevanceLanguage;
|
||||
VideoCategoryListResponse response = await request.ExecuteAsync();
|
||||
if(response.Items.Count != 0)
|
||||
{
|
||||
meta.Inlines.Add(new Run
|
||||
{
|
||||
Text = $" {resources.GetString("/VideoPage/inCat")} "
|
||||
});
|
||||
Hyperlink hl = new Hyperlink();
|
||||
hl.Inlines.Add(new Run
|
||||
{
|
||||
Text = response.Items[0].Snippet.Title
|
||||
});
|
||||
hl.Click += (s, e) => Methods.MainPage.GoToSearch(new SearchParameters(response.Items[0]));
|
||||
meta.Inlines.Add(hl);
|
||||
}
|
||||
}
|
||||
description.FormatText(item.Snippet.Localized.Description);
|
||||
|
||||
//Setting channel button
|
||||
|
||||
@@ -129,6 +129,9 @@
|
||||
<data name="apply.Content" xml:space="preserve">
|
||||
<value>Apply</value>
|
||||
</data>
|
||||
<data name="category" xml:space="preserve">
|
||||
<value>Collection from</value>
|
||||
</data>
|
||||
<data name="cc.Text" xml:space="preserve">
|
||||
<value>Creative Commons</value>
|
||||
</data>
|
||||
|
||||
@@ -309,4 +309,7 @@
|
||||
<data name="report.Label" xml:space="preserve">
|
||||
<value>Report this video</value>
|
||||
</data>
|
||||
<data name="inCat" xml:space="preserve">
|
||||
<value>in</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -129,6 +129,9 @@
|
||||
<data name="apply.Content" xml:space="preserve">
|
||||
<value>Применить</value>
|
||||
</data>
|
||||
<data name="category" xml:space="preserve">
|
||||
<value>Коллекция категории</value>
|
||||
</data>
|
||||
<data name="cc.Text" xml:space="preserve">
|
||||
<value>Лицензия Creative Commons</value>
|
||||
</data>
|
||||
|
||||
@@ -309,4 +309,7 @@
|
||||
<data name="report.Label" xml:space="preserve">
|
||||
<value>Пожаловаться на видео</value>
|
||||
</data>
|
||||
<data name="inCat" xml:space="preserve">
|
||||
<value>в категории</value>
|
||||
</data>
|
||||
</root>
|
||||
Reference in New Issue
Block a user