# HG changeset patch # User Jeff Hammel # Date 1396072882 25200 # Node ID d325f380e2fbb096f6a1903284e0a53ca27a0d70 # Parent 69a76c1e65d93cb9a73b6a16338e0a078f72e145 add a front-end to minidlna diff -r 69a76c1e65d9 -r d325f380e2fb python/dlna.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/dlna.py Fri Mar 28 23:01:22 2014 -0700 @@ -0,0 +1,51 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import argparse +import os +import subprocess +import sys +import tempfile +from which import which + +here = os.path.dirname(os.path.realpath(__file__)) +string = (str, unicode) + +def main(args=sys.argv[1:]): + + dlna = which('minidlna') + assert dlna + + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--name', dest='name', default='protest servant', + help="friendly name") + parser.add_argument('--db-dir', dest='db_dir', + default=os.path.join(os.environ['HOME'], 'minidlna'), + help='db directory') + parser.add_argument('-p', '--port', dest='port', default=8200, type=int, + help="port") + parser.add_argument('audio', nargs='+') + options = parser.parse_args(args) + + lines = [('friendly_name', options.name), + ('db_dir', options.db_dir), + ('log_dir', options.db_dir), + ('inotify', 'yes'), + ('enable_tivo', 'yes')] + lines.extend([('media_dir', 'A,{}'.format(os.path.abspath(d))) + for d in options.audio]) + config = '\n'.join(['{}={}'.format(*line) for line in lines]) + print (config) + + fd, name = tempfile.mkstemp() + os.write(fd, config) + os.close(fd) + + command = [dlna, '-f', name, '-d', '-p', str(options.port)] + print (subprocess.list2cmdline(command)) + subprocess.check_call(command) + + os.remove(name) + +if __name__ == '__main__': + main()