youtube_explode/lib/src/search/search_query.dart

45 lines
1.3 KiB
Dart
Raw Normal View History

import '../../youtube_explode_dart.dart';
2021-07-21 02:06:02 +02:00
import '../reverse_engineering/pages/search_page.dart';
2020-06-13 22:54:53 +02:00
///
class SearchQuery {
final YoutubeHttpClient _httpClient;
/// Search query
final String searchQuery;
final SearchPage _page;
/// Initializes a SearchQuery
SearchQuery(this._httpClient, this.searchQuery, this._page);
/// Search a video.
static Future<SearchQuery> search(
YoutubeHttpClient httpClient, String searchQuery,
{SearchFilter filter = const SearchFilter('')}) async {
var page = await SearchPage.get(httpClient, searchQuery, filter: filter);
2020-06-13 22:54:53 +02:00
return SearchQuery(httpClient, searchQuery, page);
}
/// Get the data of the next page.
2020-06-16 21:52:03 +02:00
/// Returns null if there is no next page.
2021-03-11 14:20:10 +01:00
Future<SearchQuery?> nextPage() async {
2020-06-13 22:54:53 +02:00
var page = await _page.nextPage(_httpClient);
if (page == null) {
2020-06-16 21:52:03 +02:00
return null;
2020-06-13 22:54:53 +02:00
}
return SearchQuery(_httpClient, searchQuery, page);
}
/// Content of this search.
/// Contains either [SearchVideo], [SearchPlaylist] or [SearchChannel]
2021-08-31 18:06:34 +02:00
List<dynamic> get content => _page.searchContent;
2020-06-13 22:54:53 +02:00
/// Videos related to this search.
/// Contains either [SearchVideo] or [SearchPlaylist]
2021-08-31 18:06:34 +02:00
List<dynamic> get relatedVideos => _page.relatedVideos;
2020-06-13 22:54:53 +02:00
/// Returns the estimated search result count.
2021-08-31 18:06:34 +02:00
int get estimatedResults => _page.estimatedResults;
2020-06-13 22:54:53 +02:00
}