Python download youtube with specific filename

Question:

I’m trying to download youtube videos with pytube this way:

from pytube import YouTube
YouTube('http://youtube.com/watch?v=9bZkp7q19f0').streams.first().download()

but the file will have the same name as the original video name. How do I specify a custom filename?

Asked By: ehsan shirzadi

||

Answers:

UPDATE:

The feature is now added. Do this:

YouTube('http://youtube.com/watch?v=9bZkp7q19f0')
    .streams.first()
    .download(filename='filename')

Old answer:

This is not possible in the current latest (v7.0.18) release. The feature has been added, but no new release has been released since then. If you want to have this feature, you need to download the pytube repository: https://github.com/NFicano/pytube

If you have done so, you can use YouTube('http://youtube.com/watch?v=9bZkp7q19f0').streams.first().download(filename='filename')

It will automatically add the filename extension, so you don’t have to include that.

I found it by reading the source. There, I found the declaration of the function download in the file streams.py:

def download(self, output_path=None, filename=None):

So you can obviously also specify a path.

For a good workaround, see landogardner’s answer.

Answered By: klutt

To add to klutt’s answer, it doesn’t look like there’s been a new pypi release since this feature was added, so for now you can either download the code directly as klutt suggests, or, as a workaround, manually rename the file after the download() call, e.g.:

import os
from pytube import YouTube

yt = YouTube('http://youtube.com/watch?v=9bZkp7q19f0')
yt.streams.first().download()
os.rename(yt.streams.first().default_filename, 'new_filename.ext')`
Answered By: scrpy

According to the Documentation, you can now specify a name for the stream you want to download by using the "filename" argument.

download(output_path=[path], filename=[name you want file to be saved as])
Answered By: 758Gianni

from pytube import YouTube
//any video link
name = YouTube.YouTube(‘https://youtu.be/3ZAE7YU8dK8’).title
YouTube(‘http://youtube.com/watchv=9bZkp7q19f0′).streams.first().download(filename = (f'{name}.mp4’)

Answered By: Hello World
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.