coherence.backends.bbc_storage (module)

class BBCItem(parent_id, id, title, url)[source]

Bases: coherence.backend.BackendItem

get_item()[source]

Called by the CDS and the MediaServer web.

Returns:
  • an UPnP ContentDirectoryServer DIDLLite object
  • or a Deferred
class Container(id, store, parent_id, title)[source]

Bases: coherence.backend.BackendItem

add_child(child)[source]
get_children(start=0, end=0)[source]

Called by the CDS and the MediaServer web.

Parameters:
  • start (int) – the start.
  • end (int) – the end.
Returns:

  • a list of its childs, from start to end.
  • or a Deferred

get_child_count()[source]

Called by the CDS.

Returns:
  • the number of its childs - len(childs)
  • or a Deferred
get_path()[source]

Called by the MediaServer web.

Returns:the filepath where to find the media file that this item does refer to.
get_item()[source]

Called by the CDS and the MediaServer web.

Returns:
  • an UPnP ContentDirectoryServer DIDLLite object
  • or a Deferred
get_name()[source]

Called by the MediaServer web.

Returns:the name of the item, it is always expected to be in unicode.
get_id()[source]
class BBCStore(server, *args, **kwargs)[source]

Bases: coherence.backend.BackendStore

implements = ['MediaServer']
rss_url = 'http://open.bbc.co.uk/rad/uriplay/availablecontent'
get_next_id()[source]
get_by_id(id)[source]
Parameters:id (object) – is the id property of our DIDLLite item
Returns:
  • None when no matching item for that id is found,
  • a BackendItem,
  • or a Deferred

Called by the CDS or the MediaServer web.

Note

if this MediaServer implements containers that can share their content, like ‘all tracks’, ‘album’ and ‘album_of_artist’ (they all have the same track item as content), then the id may be passed by the CDS like this:

‘id@container’ or ‘id@container@container@container…’

therefore a

if isinstance(id, basestring):
    id = id.split('@',1)
    id = id[0]

may be appropriate as the first thing to do when entering this method.

upnp_init()[source]

This method gets called after the device is fired, here all initializations of service related state variables should happen, as the services aren’t available before that point.

update_data()[source]
parse_data(root)[source]
queue_update(error_or_failure)[source]