diff --git a/lib/src/extensions/channel_extension.dart b/lib/src/extensions/channel_extension.dart index e5af8b7..eb6b291 100644 --- a/lib/src/extensions/channel_extension.dart +++ b/lib/src/extensions/channel_extension.dart @@ -64,6 +64,19 @@ extension ChannelExtension on YoutubeExplode { return playlist.videos; } + /// Returns the channel id for a given video. + Future getChannelIdFromVideo(String videoId) async { + if (!YoutubeExplode.validateVideoId(videoId)) { + throw ArgumentError.value(videoId, 'videoId', 'Invalid YouTube video id'); + } + var watchPage = await getVideoWatchPage(videoId); + var href = watchPage + .querySelector('.yt-user-info') + .querySelector('a') + .attributes['href']; + return href.replaceFirst('/channel/', ''); + } + /// Returns the channel page document. Future getChannelPage(String channelId) async { var url = 'https://www.youtube.com/channel/$channelId?hl=en';