From d2eda096299a22702cda86eb14870f62f7e4dc86 Mon Sep 17 00:00:00 2001
From: John-Mark Gurney <jmg@funkthat.com>
Date: Fri, 10 Feb 2006 11:43:34 -0800
Subject: [PATCH] make the add a file into a function that will be called
 recursively for the directories..

[git-p4: depot-paths = "//depot/": change = 740]
---
 pymediaserv | 58 +++++++++++++++++++++++++++++------------------------
 1 file changed, 32 insertions(+), 26 deletions(-)

diff --git a/pymediaserv b/pymediaserv
index 4407164..4fcbb51 100755
--- a/pymediaserv
+++ b/pymediaserv
@@ -5,7 +5,7 @@
 # Copyright 2005, Tim Potter <tpot@samba.org>
 # Copyright 2006 John-Mark Gurney <gurney_j@resnet.uroegon.edu>
 
-from DIDLLite import TextItem, AudioItem, VideoItem, Resource
+from DIDLLite import TextItem, AudioItem, VideoItem, Resource, StorageFolder
 import os
 import os.path
 import random
@@ -86,31 +86,37 @@ medianode.contentTypes.update( {
 root.putChild('media', medianode)
 
 # Set up media files
-allmedia = cds.addContainer('0', 'All Media')
-for i in os.listdir('media'):
-	fpath = os.path.join('media', i)
-	try:
-		if not os.path.isfile(fpath):
-			continue
-		fn, ext = os.path.splitext(i)
-		if ext == '.ts':
-			continue
-		mt = medianode.contentTypes[ext]
-		ty = mt.split('/')[0]
-		if ty == 'video':
-			klass = VideoItem
-		elif ty == 'audio':
-			klass = AudioItem
-		elif ty == 'text':
-			klass = TextItem
-		else:
-			raise KeyError, 'no item for mt: %s' % mt
-
-		item = cds.addItem(allmedia, klass, fn)
-		cds[item].res = Resource('%smedia/%s' % (urlbase, i), 'http-get:*:%s:*' % mt)
-		cds[item].res.size = os.path.getsize(fpath)
-	except KeyError:
-            pass
+def addFSPath(parent, title, dpath):
+	folder = cds.addContainer(parent, title, klass = StorageFolder)
+	log.msg('title: %s, dpath: %s' % (title, dpath))
+	for i in os.listdir(dpath):
+		fpath = os.path.join(dpath, i)
+		try:
+			fn, ext = os.path.splitext(i)
+			if os.path.isdir(fpath):
+				addFSPath(folder, fn, fpath)
+			if not os.path.isfile(fpath):
+				continue
+			if ext == '.ts':
+				continue
+			mt = medianode.contentTypes[ext]
+			ty = mt.split('/')[0]
+			if ty == 'video':
+				klass = VideoItem
+			elif ty == 'audio':
+				klass = AudioItem
+			elif ty == 'text':
+				klass = TextItem
+			else:
+				raise KeyError, 'no item for mt: %s' % mt
+
+			item = cds.addItem(folder, klass, fn)
+			cds[item].res = Resource('%smedia/%s' % (urlbase, i), 'http-get:*:%s:*' % mt)
+			cds[item].res.size = os.path.getsize(fpath)
+		except KeyError:
+		    pass
+
+addFSPath('0', 'All Media', 'media')
 
 site = server.Site(root)
 reactor.listenTCP(listenPort, site)