|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- This code is based upon code by Tim Potter.
-
- It is licensed under the MIT license at:
- http://opensource.org/licenses/mit-license.php
-
- I got a D-Link DSM-520 but I needed a UPnP Media Server to stream data
- with. I tried one, but it had issues running under FreeBSD's Linux
- emulation. Since I know Python, I went looking for a python server
- and found this code. The code was a good framework, so I expanded upon
- it.
-
- Tested devices and/or programs:
- Intel's Media Control Point and Media Renderer
- D-Link DSM-520
-
- The Intel tools are good for testing and are available at:
- http://www.intel.com/cd/ids/developer/asmo-na/eng/downloads/upnp/index.htm
-
- Either make a directory media and put the files there, or make a symlink
- named media to your media files. Either will work. Run it as:
- ./pymediaserv <localip> [ <http server port> ]
-
- Good Luck!
-
- John-Mark Gurney <gurney_j@resnet.uoregon.edu>
-
- Ideas for future improvements:
- Autodetect IP address.
- Support sorting by other attributes.
-
- v0.x:
- Empty dirs w/ no content would disappear, and cause a short
- response to BrowseDirectChildren. The DSM-520 askes for one
- more than displayed, and uses the existant of the extra item
- as indication if there are more items.
- Understands zip and tar files now. It will dynamicly extract
- items, so you can zip up your jpegs and view them w/o having
- to unzip them. tar files can be gzip'd or bzip2'd.
- Each item now has an optinal content attribute, which if set is
- installed in the web server.
- Don't send 'foobar' when exiting, stops a traceback on another
- instance of PyMedS.
- v0.2:
- No longer require restarting to see new files/dirs in hierarchy.
- Add FSStorage which is a set of classes for handling filesystem
- objects, also handles updateID's.
- Make the root container customizable, so you don't end up with
- a single entry (like media) at the root. This lets us use a
- FSDirectory as the root and get auto-enumeration
- Support returning custom error codes, so that we can return 701
- No such object among others.
- Support deleting items, so we can remove them when no longer on
- the file system.
- Make Containers a subclass of list. This lets use populate
- childCount properly.
- Add required attributes to Storage* classes.
- Support custom container classes to addContainer.
- Add a few more custom mime-types.
- Sort listings by name for now.
-
- v0.1:
- Don't bind the UDP socket to the multicast address, so replies
- go out on our local IP.
- Send out notify requests when we register the services with SSDP.
- Send out byebye notifications when we are shutting down.
- Randomize the UUID for the server (this should be part of the
- saved state).
- Randomize the port, or optionally set it on the command line.
- Teach ContentDirectory.py the basics on handling Containers and
- generic browse support. You can addItem and addContainer, which
- each return either respective ObjectID.
- We already support partial chunking of responses, but we don't yet
- support filtering or sorting.
|