Browse Source

audiobanner

boyska 7 years ago
parent
commit
ee73451467
3 changed files with 53 additions and 0 deletions
  1. 5 0
      audiobanner/.gitignore
  2. 6 0
      audiobanner/README.md
  3. 42 0
      audiobanner/bannerizza.py

+ 5 - 0
audiobanner/.gitignore

@@ -0,0 +1,5 @@
+*.ogg
+*.mp3
+*.rss
+/ve/
+*.wav

+ 6 - 0
audiobanner/README.md

@@ -0,0 +1,6 @@
+audiobanner
+=============
+
+Insert an audio content (the "banner") in another audio file every X seconds.
+
+This is useful, for example, to put "announcements" in a podcast.

+ 42 - 0
audiobanner/bannerizza.py

@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+
+import argparse
+import subprocess
+import tempfile
+import os
+
+
+def mix(args):
+    interval = '%d.%d' % (args.interval / 60, args.interval % 60)
+    with tempfile.TemporaryDirectory(prefix='audiobanner') as tempdir:
+        subprocess.check_call(['mp3splt', '-d', tempdir,
+                               '-o', 'orig_@n_@m.mp3',
+                               '-t', interval,
+                               args.original])
+        ffmpegconcat = 'concat:%s' % args.banner
+        for part in sorted(os.listdir(tempdir)):
+            ffmpegconcat += '|%s|%s' % (os.path.join(tempdir, part),
+                                        args.banner)
+
+        cmd = ['ffmpeg', '-i', ffmpegconcat,
+               '-loglevel', 'error', '-n',
+               args.destination]
+        subprocess.check_call(cmd)
+
+
+def get_parser():
+    p = argparse.ArgumentParser("audiobanner")
+    p.add_argument("--interval", help='In seconds', default=60, type=int)
+    p.add_argument("original")
+    p.add_argument("banner")
+    p.add_argument("destination")
+    return p
+
+
+def main():
+    args = get_parser().parse_args()
+    mix(args)
+
+
+if __name__ == '__main__':
+    main()