how can I set default download location in youtube-dl so that everything that I download with youtube-dl goes into that default directory?
You need to use the -o
switch with the Configuration file:
Output on youtube-dl
is handled with the --output
or -o
switch; pass it as an option, followed by the destination you want to save your downloads to:
youtube-dl -o 'C:\Users\User\Downloads\%(title)s.%(ext)s' www.youtube.com/video
Note that this command has a dual function in that it also sets a template for how your output files will be named, using variables. In this example, it will output the title of the original downloaded video followed by the file extension, which is my personal preference. For all of the variables that can be used in a filename, have a look at the youtube-dl documentation here.
youtube-dl
also allows use of a configuration file - a file that can be used to configure the switches you most frequently use so the program can pull them from there instead, saving you from having to explicitly call them each time you run it. This is what you'll need for the default download location that you're looking for. The configuration file can be used to set a default output destination so that you never have to explicitly set an output again.
To set up a configuration file for youtube-dl, assuming you have Windows:
In
%APPDATA%\Roaming
, create ayoutube-dl
folder if one doesn't already exist.Inside that folder, create a plain text file named
config.txt
.Place
youtube-dl
options in the file as you'd normally use them on the command line withyoutube-dl
, placing each one on a new line. For example, for the output switch, you'd use:-o C:\Users\User\Destination
. For more on the Configuration file, read the documentation on it here.
Overriding the Configuration file:
Even when an option is configured in a configuration file, it can be overridden by calling it explicitly from the command line. So, if you have -o
set in a configuration file to be the default location for downloads, but want to save downloads to somewhere else for a current job, simply calling -o
on the command line will override the configuration file for the current run of the program only.
Depending on your needs, I think moving the file afterwards would be just as usefull:
--exec CMD Execute a command on the file after
downloading, similar to find's -exec
syntax. Example: --exec 'adb push {}
/sdcard/Music/ && rm {}'
By creating a function which will move the file
I find a way to directly download files in Downloads folder. I search for long hours. I copied my entire function then you can understand the context around. Here is my code it will maybe helpful for someone:
import os
def download_audio(request):
SAVE_PATH = '/'.join(os.getcwd().split('/')[:3]) + '/Downloads'
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
'outtmpl':SAVE_PATH + '/%(title)s.%(ext)s',
}
link = request.GET.get('video_url')
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(["https://www.youtube.com/watch?v="+link])
Tell me if there is a problem.
来源:https://stackoverflow.com/questions/32482230/how-to-set-up-default-download-location-in-youtube-dl