Reputation: 11
I am intending to make a youtube video and mp3 download application and for the purpose i tried the implementation with youtube_extractor in flutter. **This is the code **
bool _isProcessed = false;
String _videoDownloadUrl;
String _audioDownloadUrl;
var extractor = YouTubeExtractor();
TextEditingController _youtubeEditingController = TextEditingController();
void _getDownloadLink() async {
String youtubeUrl = _youtubeEditingController.text;
if (youtubeUrl.isNotEmpty) {
youtubeUrl =
youtubeUrl.replaceAll("https://www.youtube.com/watch?v=", "");
youtubeUrl = youtubeUrl.replaceAll("https://youtu.be/", "");
print(youtubeUrl);
var audioUrlInfo = await extractor.getMediaStreamsAsync(youtubeUrl);
_audioDownloadUrl = audioUrlInfo.audio.first.url; // getting the audio url
print(_audioDownloadUrl);
var videoUrlInfo = await extractor.getMediaStreamsAsync(youtubeUrl);
_videoDownloadUrl = videoUrlInfo.muxed.first.url;
print(_videoDownloadUrl);
setState(() {
_isProcessed = true;
});
}
}
But i am getting some errors
Receiver: null
E/flutter (13883): Tried calling: group(0)
E/flutter (13883): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5))
E/flutter (13883): #1 YouTubeExtractor._getVideoPlayerContextAsync
package:youtube_extractor/youtube_extractor.dart:228
E/flutter (13883): <asynchronous suspension>
E/flutter (13883): #2 YouTubeExtractor.getMediaStreamsAsync
package:youtube_extractor/youtube_extractor.dart:38
E/flutter (13883): #3 _YTDownloadManagerState._getDownloadLink
package:bollywood_beats/…/YoutubeDownloader/YTDownloadManager.dart:29
and so on
Upvotes: 1
Views: 94
Reputation: 71
youtube_extractor it's not being updated anymore but we can find a better replacement package. Replace this package for youtube_explode_dart so you can achiev the same result.
I just updated your code below.
bool _isProcessed = false;
String _videoDownloadUrl;
String _audioDownloadUrl;
final extractor = YoutubeExplode();
final TextEditingController _youtubeEditingController = TextEditingController();
Future<void> _getDownloadLink() async {
String youtubeUrl = _youtubeEditingController.text;
if (youtubeUrl.isNotEmpty) {
youtubeUrl = youtubeUrl.replaceAll('https://www.youtube.com/watch?v=', '');
youtubeUrl = youtubeUrl.replaceAll('https://youtu.be/', '');
print(youtubeUrl);
final streamManifest = await extractor.videos.streamsClient.getManifest(youtubeUrl);
final audioStreamInfo = streamManifest.audioOnly.withHighestBitrate();
_audioDownloadUrl = audioStreamInfo.url.toString();
print(_audioDownloadUrl);
final videoStreamInfo = streamManifest.muxed.withHighestBitrate();
_videoDownloadUrl = videoStreamInfo.url.toString();
print(_videoDownloadUrl);
setState(() {
_isProcessed = true;
});
}
}
Upvotes: 1