mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-02 09:12:40 +01:00
Add --match-title and --reject-title (Closes #132)
This commit is contained in:
parent
f9c6878714
commit
20e91e8375
28
youtube-dl
28
youtube-dl
@ -438,6 +438,8 @@ class FileDownloader(object):
|
|||||||
noprogress: Do not print the progress bar.
|
noprogress: Do not print the progress bar.
|
||||||
playliststart: Playlist item to start at.
|
playliststart: Playlist item to start at.
|
||||||
playlistend: Playlist item to end at.
|
playlistend: Playlist item to end at.
|
||||||
|
matchtitle: Download only matching titles.
|
||||||
|
rejecttitle: Reject downloads for matching titles.
|
||||||
logtostderr: Log messages to stderr instead of stdout.
|
logtostderr: Log messages to stderr instead of stdout.
|
||||||
consoletitle: Display progress in console window's titlebar.
|
consoletitle: Display progress in console window's titlebar.
|
||||||
nopart: Do not use temporary .part files.
|
nopart: Do not use temporary .part files.
|
||||||
@ -713,6 +715,17 @@ class FileDownloader(object):
|
|||||||
|
|
||||||
if filename is None:
|
if filename is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
matchtitle=self.params.get('matchtitle',False)
|
||||||
|
rejecttitle=self.params.get('rejecttitle',False)
|
||||||
|
title=info_dict['title'].encode(preferredencoding(), 'xmlcharrefreplace')
|
||||||
|
if matchtitle and not re.search(matchtitle, title, re.IGNORECASE):
|
||||||
|
self.to_screen(u'[download] "%s" title did not match pattern "%s"' % (title, matchtitle))
|
||||||
|
return
|
||||||
|
if rejecttitle and re.search(rejecttitle, title, re.IGNORECASE):
|
||||||
|
self.to_screen(u'[download] "%s" title matched reject pattern "%s"' % (title, rejecttitle))
|
||||||
|
return
|
||||||
|
|
||||||
if self.params.get('nooverwrites', False) and os.path.exists(filename):
|
if self.params.get('nooverwrites', False) and os.path.exists(filename):
|
||||||
self.to_stderr(u'WARNING: file exists and will be skipped')
|
self.to_stderr(u'WARNING: file exists and will be skipped')
|
||||||
return
|
return
|
||||||
@ -3487,6 +3500,7 @@ def parseOpts():
|
|||||||
|
|
||||||
# option groups
|
# option groups
|
||||||
general = optparse.OptionGroup(parser, 'General Options')
|
general = optparse.OptionGroup(parser, 'General Options')
|
||||||
|
selection = optparse.OptionGroup(parser, 'Video Selection')
|
||||||
authentication = optparse.OptionGroup(parser, 'Authentication Options')
|
authentication = optparse.OptionGroup(parser, 'Authentication Options')
|
||||||
video_format = optparse.OptionGroup(parser, 'Video Format Options')
|
video_format = optparse.OptionGroup(parser, 'Video Format Options')
|
||||||
postproc = optparse.OptionGroup(parser, 'Post-processing Options')
|
postproc = optparse.OptionGroup(parser, 'Post-processing Options')
|
||||||
@ -3505,14 +3519,17 @@ def parseOpts():
|
|||||||
dest='ratelimit', metavar='LIMIT', help='download rate limit (e.g. 50k or 44.6m)')
|
dest='ratelimit', metavar='LIMIT', help='download rate limit (e.g. 50k or 44.6m)')
|
||||||
general.add_option('-R', '--retries',
|
general.add_option('-R', '--retries',
|
||||||
dest='retries', metavar='RETRIES', help='number of retries (default is 10)', default=10)
|
dest='retries', metavar='RETRIES', help='number of retries (default is 10)', default=10)
|
||||||
general.add_option('--playlist-start',
|
|
||||||
dest='playliststart', metavar='NUMBER', help='playlist video to start at (default is 1)', default=1)
|
|
||||||
general.add_option('--playlist-end',
|
|
||||||
dest='playlistend', metavar='NUMBER', help='playlist video to end at (default is last)', default=-1)
|
|
||||||
general.add_option('--dump-user-agent',
|
general.add_option('--dump-user-agent',
|
||||||
action='store_true', dest='dump_user_agent',
|
action='store_true', dest='dump_user_agent',
|
||||||
help='display the current browser identification', default=False)
|
help='display the current browser identification', default=False)
|
||||||
|
|
||||||
|
selection.add_option('--playlist-start',
|
||||||
|
dest='playliststart', metavar='NUMBER', help='playlist video to start at (default is 1)', default=1)
|
||||||
|
selection.add_option('--playlist-end',
|
||||||
|
dest='playlistend', metavar='NUMBER', help='playlist video to end at (default is last)', default=-1)
|
||||||
|
selection.add_option('--match-title', dest='matchtitle', metavar='REGEX',help='download only matching titles (regex or caseless sub-string)')
|
||||||
|
selection.add_option('--reject-title', dest='rejecttitle', metavar='REGEX',help='skip download for matching titles (regex or caseless sub-string)')
|
||||||
|
|
||||||
authentication.add_option('-u', '--username',
|
authentication.add_option('-u', '--username',
|
||||||
dest='username', metavar='USERNAME', help='account username')
|
dest='username', metavar='USERNAME', help='account username')
|
||||||
authentication.add_option('-p', '--password',
|
authentication.add_option('-p', '--password',
|
||||||
@ -3590,6 +3607,7 @@ def parseOpts():
|
|||||||
|
|
||||||
|
|
||||||
parser.add_option_group(general)
|
parser.add_option_group(general)
|
||||||
|
parser.add_option_group(selection)
|
||||||
parser.add_option_group(filesystem)
|
parser.add_option_group(filesystem)
|
||||||
parser.add_option_group(verbosity)
|
parser.add_option_group(verbosity)
|
||||||
parser.add_option_group(video_format)
|
parser.add_option_group(video_format)
|
||||||
@ -3742,6 +3760,8 @@ def main():
|
|||||||
'updatetime': opts.updatetime,
|
'updatetime': opts.updatetime,
|
||||||
'writedescription': opts.writedescription,
|
'writedescription': opts.writedescription,
|
||||||
'writeinfojson': opts.writeinfojson,
|
'writeinfojson': opts.writeinfojson,
|
||||||
|
'matchtitle': opts.matchtitle,
|
||||||
|
'rejecttitle': opts.rejecttitle,
|
||||||
})
|
})
|
||||||
for extractor in extractors:
|
for extractor in extractors:
|
||||||
fd.add_info_extractor(extractor)
|
fd.add_info_extractor(extractor)
|
||||||
|
Loading…
Reference in New Issue
Block a user