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