133 lines
3.5 KiB
Dart
133 lines
3.5 KiB
Dart
import 'search_client.dart';
|
|
|
|
class SearchFilter {
|
|
/// The value fo the 'sp' argument.
|
|
final String value;
|
|
|
|
const SearchFilter(this.value);
|
|
}
|
|
|
|
/// Video filters to be used with [SearchClient.getVideos]
|
|
class Filters {
|
|
const Filters._();
|
|
|
|
/// Features filters.
|
|
FeatureFilters get features => const FeatureFilters._();
|
|
|
|
/// Upload date filters.
|
|
UploadDateFilter get uploadDate => const UploadDateFilter._();
|
|
|
|
/// Types filters.
|
|
TypeFilters get types => const TypeFilters._();
|
|
|
|
/// Duration filters.
|
|
DurationFilters get duration => const DurationFilters._();
|
|
|
|
/// Videos sorting.
|
|
SortFilters get sort => const SortFilters._();
|
|
}
|
|
|
|
/// Video filters to be used with [SearchClient.getVideos]
|
|
const filters = Filters._();
|
|
|
|
class FeatureFilters {
|
|
const FeatureFilters._();
|
|
|
|
/// Live video.
|
|
SearchFilter get live => const SearchFilter('EgJAAQ%253D%253D');
|
|
|
|
/// 4K video.
|
|
SearchFilter get v4k => const SearchFilter('EgJwAQ%253D%253D');
|
|
|
|
/// HD video.
|
|
SearchFilter get hd => const SearchFilter('EgIgAQ%253D%253D');
|
|
|
|
/// Subtitled video.
|
|
SearchFilter get subTitles => const SearchFilter('EgIoAQ%253D%253D');
|
|
|
|
/// Creative comments video.
|
|
SearchFilter get creativeCommons => const SearchFilter('EgIwAQ%253D%253D');
|
|
|
|
/// 360° video.
|
|
SearchFilter get v360 => const SearchFilter('EgJ4AQ%253D%253D');
|
|
|
|
/// VR 180° video.
|
|
SearchFilter get vr180 => const SearchFilter('EgPQAQE%253D');
|
|
|
|
/// 3D video.
|
|
SearchFilter get v3D => const SearchFilter('EgI4AQ%253D%253D');
|
|
|
|
/// HDR video.
|
|
SearchFilter get hdr => const SearchFilter('EgPIAQE%253D');
|
|
|
|
/// Video with location.
|
|
SearchFilter get location => const SearchFilter('EgO4AQE%253D');
|
|
|
|
/// Purchased video.
|
|
SearchFilter get purchased => const SearchFilter('EgJIAQ%253D%253D');
|
|
}
|
|
|
|
class UploadDateFilter {
|
|
const UploadDateFilter._();
|
|
|
|
/// Videos uploaded in the last hour.
|
|
SearchFilter get lastHour => const SearchFilter('EgIIAQ%253D%253D');
|
|
|
|
/// Videos uploaded today.
|
|
SearchFilter get today => const SearchFilter('EgIIAg%253D%253D');
|
|
|
|
/// Videos uploaded in the last week.
|
|
SearchFilter get lastWeek => const SearchFilter('EgIIAw%253D%253D');
|
|
|
|
/// Videos uploaded in the last month.
|
|
SearchFilter get lastMonth => const SearchFilter('EgIIBA%253D%253D');
|
|
|
|
/// Videos uploaded in the last year.
|
|
SearchFilter get lastYear => const SearchFilter('EgIIBQ%253D%253D');
|
|
}
|
|
|
|
class TypeFilters {
|
|
const TypeFilters._();
|
|
|
|
/// Videos.
|
|
SearchFilter get video => const SearchFilter('EgIQAQ%253D%253D');
|
|
|
|
/// Channels.
|
|
SearchFilter get channel => const SearchFilter('EgIQAg%253D%253D');
|
|
|
|
/// Playlists.
|
|
SearchFilter get playlist => const SearchFilter('EgIQAw%253D%253D');
|
|
|
|
/// Movies.
|
|
SearchFilter get movie => const SearchFilter('EgIQBA%253D%253D');
|
|
|
|
/// Shows.
|
|
SearchFilter get show => const SearchFilter('EgIQBQ%253D%253D');
|
|
}
|
|
|
|
class DurationFilters {
|
|
const DurationFilters._();
|
|
|
|
/// Short videos, < 4 minutes.
|
|
SearchFilter get short => const SearchFilter('EgIYAQ%253D%253D');
|
|
|
|
/// Long videos, > 20 minutes.
|
|
SearchFilter get long => const SearchFilter('EgIYAg%253D%253D');
|
|
}
|
|
|
|
class SortFilters {
|
|
const SortFilters._();
|
|
|
|
/// Sort by relevance (default).
|
|
SearchFilter get relevance => const SearchFilter('CAASAhAB');
|
|
|
|
/// Sort by upload date (default).
|
|
SearchFilter get uploadDate => const SearchFilter('CAI%253D');
|
|
|
|
/// Sort by view count (default).
|
|
SearchFilter get viewCount => const SearchFilter('CAM%253D');
|
|
|
|
/// Sort by rating (default).
|
|
SearchFilter get rating => const SearchFilter('CAE%253D');
|
|
}
|