Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import subprocess
- import time
- from pytube import Playlist, YouTube
- from multiprocessing import Pool
- def convert_youtube_video_to_mp3(args):
- url, output_path = args
- # create a youtube object
- yt = YouTube(url)
- # get the first video stream
- stream = yt.streams.get_audio_only()
- # download the video
- stream.download(output_path=output_path)
- # get the file name
- file_name = ''.join(c for c in yt.title if c.isalnum() or c in ' _-') # remove invalid characters
- # create the path of the downloaded video
- video_path = os.path.join(output_path, f"{file_name}.mp4")
- # convert the video to mp3
- ffmpeg_path = "/usr/local/bin/ffmpeg" # replace with the actual path to ffmpeg
- mp3_path = os.path.join(output_path, f"{os.path.splitext(file_name)[0]}.mp3")
- subprocess.check_call([ffmpeg_path, "-i", video_path, mp3_path])
- # remove the downloaded video
- os.remove(video_path)
- def convert_youtube_playlist_to_mp3(playlist_url, output_path):
- """Converts a youtube playlist into mp3 and saves them."""
- # create a playlist object
- playlist = Playlist(playlist_url)
- # create a multiprocessing pool
- with Pool() as pool:
- # map the video urls to the conversion function
- pool.map(convert_youtube_video_to_mp3, [(video, output_path) for video in playlist.video_urls])
- # wait for all processes to finish
- pool.close()
- pool.join()
- if __name__ == "__main__":
- playlist_url = "https://www.youtube.com/watch?v=rmzJgQi354M&list=RDGMEMveQBJ5EaHfODz2alVFs-IQVMrmzJgQi354M"
- output_path = "./downloads"
- convert_youtube_playlist_to_mp3(playlist_url, output_path)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement