|
@@ -71,8 +71,12 @@ __authors__ = (
|
|
|
'Sebastian Haas',
|
|
|
'Alexander Kirk',
|
|
|
'Erik Johnson',
|
|
|
+<<<<<<< HEAD
|
|
|
'Keith Beckman',
|
|
|
'Ole Ernst',
|
|
|
+=======
|
|
|
+ 'Aaron McDaniel (mcd1992)',
|
|
|
+>>>>>>> Implemented --exec option.
|
|
|
)
|
|
|
|
|
|
__license__ = 'Public Domain'
|
|
@@ -119,6 +123,7 @@ from .postprocessor import (
|
|
|
FFmpegExtractAudioPP,
|
|
|
FFmpegEmbedSubtitlePP,
|
|
|
XAttrMetadataPP,
|
|
|
+ ExecAfterDownload,
|
|
|
)
|
|
|
|
|
|
|
|
@@ -550,7 +555,8 @@ def parseOpts(overrideArguments=None):
|
|
|
help='Prefer avconv over ffmpeg for running the postprocessors (default)')
|
|
|
postproc.add_option('--prefer-ffmpeg', action='store_true', dest='prefer_ffmpeg',
|
|
|
help='Prefer ffmpeg over avconv for running the postprocessors')
|
|
|
-
|
|
|
+ postproc.add_option('--exec', metavar='', action='store', dest='execstring',
|
|
|
+ help='Execute a command on the file after downloading, similar to find\'s -exec syntax. Must be enclosed in quotes. Example: --exec \'adb push {} /sdcard/Music/ && rm {}\'' )
|
|
|
|
|
|
parser.add_option_group(general)
|
|
|
parser.add_option_group(selection)
|
|
@@ -831,6 +837,7 @@ def _real_main(argv=None):
|
|
|
'default_search': opts.default_search,
|
|
|
'youtube_include_dash_manifest': opts.youtube_include_dash_manifest,
|
|
|
'encoding': opts.encoding,
|
|
|
+ 'execstring': opts.execstring,
|
|
|
}
|
|
|
|
|
|
with YoutubeDL(ydl_opts) as ydl:
|
|
@@ -854,6 +861,12 @@ def _real_main(argv=None):
|
|
|
ydl.add_post_processor(FFmpegAudioFixPP())
|
|
|
ydl.add_post_processor(AtomicParsleyPP())
|
|
|
|
|
|
+
|
|
|
+ # Please keep ExecAfterDownload towards the bottom as it allows the user to modify the final file in any way.
|
|
|
+ # So if the user is able to remove the file before your postprocessor runs it might cause a few problems.
|
|
|
+ if opts.execstring:
|
|
|
+ ydl.add_post_processor(ExecAfterDownload(commandString=opts.execstring))
|
|
|
+
|
|
|
# Update version
|
|
|
if opts.update_self:
|
|
|
update_self(ydl.to_screen, opts.verbose)
|