Archived
1
0
This repository has been archived on 2026-04-22. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
FoxTube/FoxTube/Classes/SearchPaameters.cs
T
2019-02-09 19:50:15 +03:00

150 lines
5.8 KiB
C#

using System;
using System.Collections.Generic;
using static Google.Apis.YouTube.v3.SearchResource.ListRequest;
namespace FoxTube
{
public delegate void Event();
public delegate void ObjectEventHandler(object sender = null, params object[] args);
public class SearchParameters
{
public class Filters
{
public static class Enumerations
{
public enum Order { Relevance, Date, Views, Rating, Title }
public enum Type { All, Video, Channel, Playlist }
public enum Date { Any, Hour, Today, Week, Month, Year }
public enum Duration { Any, Long, Medium, Short }
public enum ConversionType { Order, Type, Date, Duration, HD, ThreeD, Captions, LiveEvent, CreativeCommons }
}
public Enumerations.Order Order { get; set; } = Enumerations.Order.Relevance;
public Enumerations.Date Date { get; set; } = Enumerations.Date.Any;
public Enumerations.Type Type { get; set; } = Enumerations.Type.All;
public Enumerations.Duration Duration { get; set; } = Enumerations.Duration.Any;
public bool HD { get; set; } = false;
public bool Is3D { get; set; } = false;
public bool Captions { get; set; } = false;
public bool LiveEvent { get; set; } = false;
public bool CreativeCommons { get; set; } = false;
public object GetParameter(Enumerations.ConversionType type)
{
switch(type)
{
case Enumerations.ConversionType.Captions:
if (Captions)
return VideoCaptionEnum.ClosedCaption;
else return null;
case Enumerations.ConversionType.CreativeCommons:
if (CreativeCommons)
return VideoLicenseEnum.CreativeCommon;
else return null;
case Enumerations.ConversionType.Date:
switch(Date)
{
case Enumerations.Date.Any:
return null;
case Enumerations.Date.Hour:
return DateTime.Now.Subtract(TimeSpan.FromHours(1));
case Enumerations.Date.Today:
return DateTime.Now.Subtract(TimeSpan.FromDays(1));
case Enumerations.Date.Week:
return DateTime.Now.Subtract(TimeSpan.FromDays(7));
case Enumerations.Date.Month:
return DateTime.Now.Subtract(TimeSpan.FromDays(31));
case Enumerations.Date.Year:
return DateTime.Now.Subtract(TimeSpan.FromDays(365));
}
break;
case Enumerations.ConversionType.Duration:
return (VideoDurationEnum)Duration;
case Enumerations.ConversionType.HD:
if (HD)
return VideoDefinitionEnum.High;
else return null;
case Enumerations.ConversionType.LiveEvent:
if (LiveEvent)
return EventTypeEnum.Live;
else return null;
case Enumerations.ConversionType.Order:
Dictionary<int, int> d = new Dictionary<int, int>()
{
{ 0, 2 },
{ 1, 0 },
{ 2, 5 },
{ 3, 1 },
{ 4, 3 }
};
return (OrderEnum)d[(int)Order];
case Enumerations.ConversionType.ThreeD:
if (Is3D)
return VideoDimensionEnum.Value3d;
else return null;
case Enumerations.ConversionType.Type:
switch(Type)
{
case Enumerations.Type.All:
return "video,channel,playlist";
case Enumerations.Type.Channel:
return "channel";
case Enumerations.Type.Playlist:
return "playlist";
case Enumerations.Type.Video:
return "video";
}
break;
}
return null;
}
}
public string Term { get; private set; }
public string Channel { get; private set; }
public Filters Filter { get; private set; } = new Filters();
public SearchParameters(string term)
{
Term = term;
}
public SearchParameters(string term, Filters filters)
{
Term = term;
Filter = filters;
}
public SearchParameters(string term, string channelId)
{
Term = term;
Channel = channelId;
}
public SearchParameters(string term, string channelId, Filters filters)
{
Term = term;
Channel = channelId;
Filter = filters;
}
public override string ToString()
{
return $@"Term: {Term}
Channel id: {Channel}
Filters:
Order: {Filter.Order}
Type: {Filter.Type}
Date: {Filter.Date}
Duration: {Filter.Duration}
HD: {Filter.HD}
3D: {Filter.Is3D}
Event type: {Filter.LiveEvent}
CC: {Filter.Captions}
License: {Filter.CreativeCommons}";
}
}
}