Projects / youtube-dl

youtube-dl

youtube-dl is a small command-line program for downloading videos from YouTube.com.

Tags Internet Web multimedia Video
Licenses Public Domain
Operating Systems OS Independent
Implementation Python
Translations English

Tweet this project Short link

Rss Recent releases

  • Rrelease-mid
  •  29 Jun 2009 08:13
  • Rrelease-after

    Changes: This release fixes the -b option not working under Windows, and fixes the problem that prevented the program from downloading every video in a YouTube playlist.

    • Rrelease-mid
    •  30 May 2009 10:03
    • Rrelease-after

      Changes: This release adds a -c or --continue option that allows resuming of interrupted downloads. Remaining bugs in handling the format options have been fixed.

      • Rrelease-mid
      •  25 May 2009 21:09
      • Rrelease-after

        Changes: This release fixes a problem with the -d, -m, and -f options not working, and makes the program verify the URLs it prints when the user specifies an option that implies not downloading the video.

        • Rrelease-mid
        •  23 May 2009 00:25
        • Rrelease-after

          Changes: This release fixes two problems. Under Windows, the -b option now works properly instead of receiving an error about a file on disk being in use. Under any system, "Content Too Short" exceptions are now caught properly.

          • Rrelease-mid
          •  13 May 2009 21:28
          • Rrelease-after

            Changes: This release fixes a regression for Python 2.4 users that were unable to run the program because it used append_const instead of store_const in the option parser.

            Rss Recent comments

            Rcomment-before 14 May 2009 07:36 Rcomment-trans shlomif Rcomment-after

            youtube-dl is a very handy program to download videos from YouTube. It's proven very useful for me, and I'm using it often. Highly recommended.

            Rcomment-before 12 May 2009 08:43 Rcomment-trans 257aa6ecc15678580e2c43511f060218_tiny barsnick Rcomment-after

            Thank you for 2009.05.11 and the return of the -b option! -f was slightly annoying.

            Rcomment-before 02 Apr 2009 16:39 Rcomment-trans cjm6 Rcomment-after

            Sorry to bother you. I have been using Youtube-dl for a project but can't see to find a way to get it to do an exact phrase search. youtube-dl.py "ytsearchall:Dog eat Cat" --get-url --format=18. I would like to generate the same search query as if going to YouTube and typing in "Dog eat Cat" including the speech marks to make it an exact phrase match. I have tried numerous ways but don't end up with the right results. Could you possible post the solution. Love the program by the way!

            Rcomment-before 18 Feb 2008 06:41 Rcomment-trans amboar Rcomment-after

            Target download directory and multiple download URLs

            I've written a couple of patches - one adds -d and --directory options to specify a target directory for the the download(s). The other patch allows multiple youtube links to be given as arguments to the script

            Target directory patch: http://arienh.homeip.net/misc/youtube-dl/youtube-dl-target-dir.patch (http://arienh.homeip.net/misc/youtube-dl/youtube-dl-target-dir.patch)

            Multiple link patch: http://arienh.homeip.net/misc/youtube-dl/youtube-dl-multi-url.patch (http://arienh.homeip.net/misc/youtube-dl/youtube-dl-multi-url.patch)

            Combination patch (as they'll probably conflict due to the large amount of indentation in the multi-link patch): http://arienh.homeip.net/misc/youtube-dl/youtube-dl-multi-url-and-dir.patch (http://arienh/misc/youtube-dl/youtube-dl-multi-url-and-dir.patch)

            Patches were made against the 2008.01.24 release

            Rcomment-before 29 Jan 2008 17:36 Rcomment-trans 07ce1c544449e5a0328cc9aec9a07c6b_tiny umeboshi Rcomment-after

            patch to encode flv to mpeg
            This textarea entry seems to break the patch. I've emailed

            you through fm, and that textarea is the same. Contact me

            for proper patch. My freshmeat email needs updating. Don't

            use it. I left my current email in other message.

            --- youtube-dl 2008-01-29

            19:14:00.000000000 -0600

            +++ youtube-dl.new 2008-01-29

            19:15:00.000000000 -0600

            @@ -37,6 +37,7 @@

            import sys

            import time

            import urllib2

            +import subprocess

            # Global constants

            const_1k = 1024

            @@ -210,6 +211,8 @@

            cmdl_parser.add_option('-n', '--netrc',

            action='store_true', dest='use_netrc',

            help='use .netrc authentication data')

            cmdl_parser.add_option('-g', '--get-url',

            action='store_true', dest='get_url', help='print final

            video URL only')

            cmdl_parser.add_option('-2', '--title-too',

            action='store_true', dest='get_title', help='used

            with -g, print title too')

            +cmdl_parser.add_option('-e', '--encode',

            action='store_true', dest='encode', help='encode

            video to mpeg')

            +cmdl_parser.add_option('-k', '--keep-flv',

            action='store_true', dest='keep_flv', help='keep

            original flv when encoding mpeg')

            (cmdl_opts, cmdl_args) = cmdl_parser.parse_args()

            # Set socket timeout

            @@ -383,5 +386,30 @@

            except KeyboardInterrupt:

            sys.exit('\n')

            +# encode with ffmpeg

            +if cmdl_opts.encode:

            + cond_print("encoding video to mpeg")

            + # this if statement needs to be fixed for

            windows

            + if subprocess.call(('which','ffmpeg'),

            stdout=file(os.devnull, 'w')):

            + sys.exit('Error: ffmpeg is needed to

            encode to mpeg')

            + video_filename_root = video_filename

            + # chop .flv extension, if there

            + if video_filename.endswith('.flv'):

            + video_filename_root =

            video_filename[:-4]

            + cmd = ('ffmpeg', '-i',

            video_filename, '%s.mpg' % video_filename_root)

            + stdout = None

            + if cmdl_opts.quiet:

            + stdout = file(os.devnull, 'w')

            + err = subprocess.call(cmd, stdout=stdout,

            stderr=stdout)

            + if not err:

            + cond_print("video %s encoded

            successfully!\n" % video_filename)

            + if not cmdl_opts.keep_flv:

            + os.remove(video_filename)

            + else:

            + cond_print("keeping original

            file %s\n" % video_filename)

            + else:

            + os.remove('%s.mpg' %

            video_filename_root)

            + sys.exit("Error: This file won't encode to

            mpeg, ffmpeg returned %d" % err)

            +

            # Finish

            sys.exit()

            No-screenshot

            Project Spotlight

            RecupNews

            A utility to easily retrieve information from RSS feeds.

            No-screenshot

            Project Spotlight

            LINUX-ISP-89SXX

            A complete IC programming tool for the 89SXX series.