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 =