From 0aec322140ce118f23025769bba61d8a2ac4e7dd Mon Sep 17 00:00:00 2001 From: Hexah Date: Fri, 21 Feb 2020 23:48:37 +0100 Subject: [PATCH] Implement Search API --- CHANGELOG.md | 6 ++- lib/src/extensions/extensions.dart | 1 + lib/src/extensions/search_extension.dart | 58 ++++++++++++++++++++++++ lib/src/models/video.dart | 3 ++ pubspec.yaml | 2 +- 5 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 lib/src/extensions/search_extension.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index d511add..84036a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,4 +13,8 @@ ## 0.0.4 - Fix #3 : Head request to ge the content length -- Fix error when getting videos without any keyword. \ No newline at end of file +- Fix error when getting videos without any keyword. + +## 0.0.5 + +- Implement Search Api (`SearchExtension`) \ No newline at end of file diff --git a/lib/src/extensions/extensions.dart b/lib/src/extensions/extensions.dart index 3c893ad..85c291e 100644 --- a/lib/src/extensions/extensions.dart +++ b/lib/src/extensions/extensions.dart @@ -1,3 +1,4 @@ export 'channel_extension.dart'; export 'helpers_extension.dart'; export 'playlist_extension.dart'; +export 'search_extension.dart'; diff --git a/lib/src/extensions/search_extension.dart b/lib/src/extensions/search_extension.dart new file mode 100644 index 0000000..fee118a --- /dev/null +++ b/lib/src/extensions/search_extension.dart @@ -0,0 +1,58 @@ +import 'dart:convert'; + +import '../models/models.dart'; +import '../youtube_explode_base.dart'; +import 'helpers_extension.dart'; + +/// Search extension for YoutubeExplode +extension SearchExtension on YoutubeExplode { + Future> _getSearchResults(String query, int page) async { + var url = + 'https://youtube.com/search_ajax?style=json&search_query=${Uri.encodeQueryComponent(query)}&page=$page&hl=en'; + var raw = (await client.get(url)).body; + + return json.decode(raw); + } + + /// Searches videos using given query up to [maxPages] count. + Future> searchVideos(String query, [int maxPages = 5]) async { + var videos =