Archived
1
0

Added video categories link to video page and improved search to display video categories

This commit is contained in:
Michael Gordeev
2019-06-23 18:03:04 +03:00
parent bb45734e2d
commit 7a1f918df2
9 changed files with 66 additions and 10 deletions
@@ -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}
+1 -1
View File
@@ -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">
+9 -2
View File
@@ -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))
+1 -1
View File
@@ -66,7 +66,7 @@
<StackPanel Margin="0,10"> <StackPanel Margin="0,10">
<Button FontFamily="Segoe UI, Segoe MDL2 Assets" Content="&#xE122; Continue from: 00:10:37" Name="left" Click="Left_Click" Visibility="Collapsed"/> <Button FontFamily="Segoe UI, Segoe MDL2 Assets" Content="&#xE122; 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"/>
+27 -1
View File
@@ -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
+3
View File
@@ -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>
+3
View File
@@ -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>
+3
View File
@@ -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>
+3
View File
@@ -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>