Added "min-filesize" and "max-filesize" options
[youtube-dl] / youtube_dl / __init__.py
index 615515965c652834c129ab65ac996092e22a2b28..bdab38a4ef699bfe8993f89adb16807a1a9de61f 100644 (file)
@@ -151,6 +151,10 @@ def parseOpts():
     selection.add_option('--reject-title', dest='rejecttitle', metavar='REGEX',help='skip download for matching titles (regex or caseless sub-string)')
     selection.add_option('--max-downloads', metavar='NUMBER', dest='max_downloads', help='Abort after downloading NUMBER files', default=None)
 
+    selection.add_option('--min-filesize', metavar='SIZE', dest='min_filesize', help="Skip files smaller than this size", default=None)
+    selection.add_option('--max-filesize', metavar='SIZE', dest='max_filesize', help="Skip files larger than this size", default=None)
+
+
     authentication.add_option('-u', '--username',
             dest='username', metavar='USERNAME', help='account username')
     authentication.add_option('-p', '--password',
@@ -280,10 +284,6 @@ def parseOpts():
 def _real_main():
     parser, opts, args = parseOpts()
 
-    # Update version
-    if opts.update_self:
-        update_self(fd.to_screen, opts.verbose, sys.argv[0])
-
     # Open appropriate CookieJar
     if opts.cookiefile is None:
         jar = compat_cookiejar.CookieJar()
@@ -353,6 +353,16 @@ def _real_main():
         if numeric_limit is None:
             parser.error(u'invalid rate limit specified')
         opts.ratelimit = numeric_limit
+    if opts.min_filesize is not None:
+        numeric_limit = FileDownloader.parse_bytes(opts.min_filesize)
+        if numeric_limit is None:
+            parser.error(u'invalid min_filesize specified')
+        opts.min_filesize = numeric_limit
+    if opts.max_filesize is not None:
+        numeric_limit = FileDownloader.parse_bytes(opts.max_filesize)
+        if numeric_limit is None:
+            parser.error(u'invalid max_filesize specified')
+        opts.max_filesize = numeric_limit
     if opts.retries is not None:
         try:
             opts.retries = int(opts.retries)
@@ -442,6 +452,8 @@ def _real_main():
         'verbose': opts.verbose,
         'test': opts.test,
         'keepvideo': opts.keepvideo,
+        'min_filesize': opts.min_filesize,
+        'max_filesize': opts.max_filesize
         })
 
     if opts.verbose:
@@ -467,6 +479,10 @@ def _real_main():
     if opts.recodevideo:
         fd.add_post_processor(FFmpegVideoConvertor(preferedformat=opts.recodevideo))
 
+    # Update version
+    if opts.update_self:
+        update_self(fd.to_screen, opts.verbose, sys.argv[0])
+
     # Maybe do nothing
     if len(all_urls) < 1:
         if not opts.update_self: