23

If you are familiar to Linux, see the following script...

I have a text file with a (list.txt) of Youtube URLs separated by new line... and I use

cat list.txt | youtube-dl -f best 

to download all in the list

This works fine but I want to emulate it on a Windows Batch file..

set /p data=<list.txt
youtube-dl -f best %data%

This works too.. BUT it downloads only the first video on the list.

A Simple solution w.r.t coding would be preferred.

PS:Also it is certain that I'm not looking for solutions using youtube-dl commands

3
  • 3
    Why don't you just use youtube-dl -a list.txt?
    – Attie
    Mar 6, 2019 at 14:06
  • 1
    @Attie Okay, you may write it as an answer.
    – user720745
    Mar 6, 2019 at 14:09
  • What did you mean "not looking for solutions using youtube-dl commands"?
    – Attie
    Mar 6, 2019 at 15:37

5 Answers 5

43

Rather than piping it in, you could use functionality provided by youtube-dl - it has a parameter that allows you to point at a text file containing a list of URLs - one per line.

-a, --batch-file FILE

File containing URLs to download (- for stdin), one URL per line. Lines starting with #, ; or ] are considered as comments and ignored.

In your situation you'd use:

youtube-dl -f best -a list.txt
6
  • This seems to me as being the best answer for it uses the original tool to do the same and there is a Windows version too. So basically all you need to do is reformat your command according to the answer provided by Attie and just put it in a folder with a batch script and relevant list file. Then all you'll have to do is edit your list file and run your script. Otherwise, though I don't know it properly, I'd suggest looking on PowerShell side. From what I saw it seems they at last included a lot of nice features and commands.
    – 猫IT
    Mar 6, 2019 at 16:53
  • when I try to use a batch-file I always get [youtube] xxxxxx: Downloading webpage ERROR: unable to download video data: HTTP Error 403: Forbidden where xxxxxx is the video in https://www.youtube.com/watch?v=xxxxxx
    – lbutlr
    Apr 20, 2020 at 21:36
  • @lbutlr It looks like the video is private.
    – Vertisan
    May 3, 2020 at 14:02
  • No, as it works fine when I do not try to use a batch file.
    – lbutlr
    May 13, 2020 at 13:12
  • This discussion isn't really supposed to be conducted in comments... but, 1) Have you updated youtube-dl?, 2) Can you share the full link so we can try?
    – Attie
    May 13, 2020 at 13:29
1

Youtube-dl allow downloading multiple URL at once, so here is a simple solution:

youtube-dl $(cat my-links.txt | xargs)
2
  • The subshell is unnecessary. xargs will append whatever it gets on standard input to the end of the commandline. So just do cat my-links.txt | xargs youtube-dl -f best.
    – bobpaul
    Jan 16 at 0:33
  • thats event better, thanks Apr 20 at 8:54
1

You can just use youtube-dl -a yourList.txt where yourList is a file containing URL's delimited by linebreaks.

0

if you're looking for a strictly batch file solution with youtube-dl i suggest you use this

for /f "tokens=*" %i in (videolinks.txt) do (youtube-dl -f best %i)

it goes through the whole file line by line and downloads whatever is on the line (if its a valid link)

if you want to use it in a *.bat file make sure to use double % link

Use a single percent sign (%) to carry out the for command at the command prompt. Use double percent signs (%%) to carry out the for command within a batch file.

0

First you need a file with URLs or explicit YouTube-IDs. Then you can make a script as follows:

FILE=YT-List.txt #the file with the urls or youtube-ids: 1 item per line
while read line
do
  F1=$(echo $line)
  youtube-dl  -f22 -c -R infinite "$F1" &
done < $FILE
sleep 7
echo "I AM READY"
1
  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Jan 19 at 21:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy