mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2025-05-09 15:17:31 +00:00
Merge 4c74dbcba66ade05e1d0ba7f57107dc8801d2c97 into 33d507f1fe828b186dec9b61ff4fc6b5fdcf42b2
This commit is contained in:
commit
a32832910e
37
README
Normal file
37
README
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
youtube-dl is a small command-line program to download videos from
|
||||||
|
YouTube.com and a few more sites. It requires the Python interpreter,
|
||||||
|
version 2.x (x being at least 5), and it is not platform specific. It
|
||||||
|
should work in your Unix box, in Windows or in Mac OS X. It is
|
||||||
|
released to the PUBLIC DOMAIN, which means you can modify it,
|
||||||
|
redistribute it or use it however you like. The project is currently
|
||||||
|
being developed at github.com.
|
||||||
|
|
||||||
|
I will try to keep it updated if YouTube.com changes the way you
|
||||||
|
access their videos. After all, it is a simple and short
|
||||||
|
program. However, I can not guarantee anything. If you detect it stops
|
||||||
|
working, check for new versions and/or inform me about the problem,
|
||||||
|
indicating the program version you are using. My contact information
|
||||||
|
is at rg03.wordpress.com. If the program stops working and I can not
|
||||||
|
solve the problem but you have a solution, I would like to know
|
||||||
|
it. Furthermore, if you think you can maintain the program yourself,
|
||||||
|
tell me.
|
||||||
|
|
||||||
|
Thanks for all the feedback received so far. I am glad people find my
|
||||||
|
program useful.
|
||||||
|
|
||||||
|
AUTHORS:
|
||||||
|
* Ricardo Garcia Gonzalez: program core, YouTube.com InfoExtractor,
|
||||||
|
metacafe.com InfoExtractor and YouTube playlist InfoExtractor.
|
||||||
|
* Danny Colligan: YouTube search InfoExtractor, ideas and patches.
|
||||||
|
* Benjamin Johnson: Google Video InfoExtractor, Photobucket
|
||||||
|
InfoExtractor, Yahoo! Video InfoExtractor, generic InfoExtractor,
|
||||||
|
ideas, patches, etc.
|
||||||
|
* Vasyl' Vavrychuk: DepositFiles InfoExtractor, ideas and patches.
|
||||||
|
* Witold Baryluk: Dailymotion InfoExtractor.
|
||||||
|
* Paweł Paprota: YouTube user videos InfoExtractor.
|
||||||
|
* Gergely Imreh: Facebook InfoExtractor, ideas and patches.
|
||||||
|
|
||||||
|
Many other people contributing patches, code, ideas and kind
|
||||||
|
messages. Too many to be listed here. You know who you are. Thank you
|
||||||
|
very much.
|
||||||
|
|
17
youtube-dl
17
youtube-dl
@ -282,6 +282,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.
|
||||||
@ -557,6 +559,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
|
||||||
@ -2745,6 +2758,8 @@ if __name__ == '__main__':
|
|||||||
dest='playliststart', metavar='NUMBER', help='playlist video to start at (default is 1)', default=1)
|
dest='playliststart', metavar='NUMBER', help='playlist video to start at (default is 1)', default=1)
|
||||||
parser.add_option('--playlist-end',
|
parser.add_option('--playlist-end',
|
||||||
dest='playlistend', metavar='NUMBER', help='playlist video to end at (default is last)', default=-1)
|
dest='playlistend', metavar='NUMBER', help='playlist video to end at (default is last)', default=-1)
|
||||||
|
parser.add_option('--match-title', dest='matchtitle', metavar='REGEX',help='download only matching titles (regex or caseless sub-string)')
|
||||||
|
parser.add_option('--reject-title', dest='rejecttitle', metavar='REGEX',help='skip download for matching titles (regex or caseless sub-string)')
|
||||||
parser.add_option('--dump-user-agent',
|
parser.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)
|
||||||
@ -2947,6 +2962,8 @@ if __name__ == '__main__':
|
|||||||
'noprogress': opts.noprogress,
|
'noprogress': opts.noprogress,
|
||||||
'playliststart': opts.playliststart,
|
'playliststart': opts.playliststart,
|
||||||
'playlistend': opts.playlistend,
|
'playlistend': opts.playlistend,
|
||||||
|
'matchtitle':opts.matchtitle,
|
||||||
|
'rejecttitle':opts.rejecttitle,
|
||||||
'logtostderr': opts.outtmpl == '-',
|
'logtostderr': opts.outtmpl == '-',
|
||||||
'consoletitle': opts.consoletitle,
|
'consoletitle': opts.consoletitle,
|
||||||
'nopart': opts.nopart,
|
'nopart': opts.nopart,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user