coherence.backends.banshee_storage (module)

get_cover_path(artist_name, album_title)[source]
class SQLiteDB(database)[source]

Bases: coherence.log.LogAble

Python DB API 2.0 backend support.

Connect to a db backend hosting the given database.

logCategory = 'sqlite'
__init__(database)[source]

Connect to a db backend hosting the given database.

disconnect()[source]
connect()[source]

Connect to the database, set L{_db} instance variable.

reconnect()[source]

Disconnect and reconnect to the database.

sql_execute(request, *params, **kw)[source]

Execute a SQL query in the db backend

class Container(id, parent_id, name, children_callback=None, store=None, play_container=False)[source]

Bases: coherence.backend.BackendItem

get_path = None
add_child(child)[source]
get_children(start=0, request_count=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_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 Artist(*args, **kwargs)[source]

Bases: coherence.backend.BackendItem

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_item()[source]

Called by the CDS and the MediaServer web.

Returns:
  • an UPnP ContentDirectoryServer DIDLLite object
  • or a Deferred
get_id()[source]
class Album(*args, **kwargs)[source]

Bases: coherence.backend.BackendItem

definition for an album

mimetype = 'directory'
get_path = None
get_children(start=0, request_count=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_item()[source]

Called by the CDS and the MediaServer web.

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

Called by the MediaServer web.

Returns:the name of the item, it is always expected to be in unicode.
get_cover()[source]

Called by the MediaServer web.

Returns:the filepath where to find the album art file

Note

only needed when we have created for that item an albumArtURI property that does point back to us.

class BasePlaylist(*args, **kwargs)[source]

Bases: coherence.backend.BackendItem

definition for a playlist

id_type = 'baseplaylist'
mimetype = 'directory'
get_path = None
db_id

Should be implemented in subclass

get_tracks(request_count)[source]
db_to_didl(row)[source]
get_id()[source]
get_children(start=0, request_count=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_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.
class MusicPlaylist(*args, **kwargs)[source]

Bases: coherence.backends.banshee_storage.BasePlaylist

id_type = 'musicplaylist'
db_id

Should be implemented in subclass

get_tracks(request_count)[source]
class MusicSmartPlaylist(*args, **kwargs)[source]

Bases: coherence.backends.banshee_storage.BasePlaylist

id_type = 'musicsmartplaylist'
db_id

Should be implemented in subclass

get_tracks(request_count)[source]
class VideoPlaylist(*args, **kwargs)[source]

Bases: coherence.backends.banshee_storage.MusicPlaylist

id_type = 'videoplaylist'
db_to_didl(row)[source]
class VideoSmartPlaylist(*args, **kwargs)[source]

Bases: coherence.backends.banshee_storage.MusicSmartPlaylist

id_type = 'videosmartplaylist'
db_to_didl(row)[source]
class BaseTrack(*args, **kwargs)[source]

Bases: coherence.backend.BackendItem

definition for a track

get_children(start=0, request_count=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_resources()[source]
get_path()[source]

Called by the MediaServer web.

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

Called by the MediaServer web.

Returns:the name of the item, it is always expected to be in unicode.
get_url()[source]
get_cover()[source]

Called by the MediaServer web.

Returns:the filepath where to find the album art file

Note

only needed when we have created for that item an albumArtURI property that does point back to us.

class Track(*args, **kwargs)[source]

Bases: coherence.backends.banshee_storage.BaseTrack

get_item()[source]

Called by the CDS and the MediaServer web.

Returns:
  • an UPnP ContentDirectoryServer DIDLLite object
  • or a Deferred
class Video(*args, **kwargs)[source]

Bases: coherence.backends.banshee_storage.BaseTrack

get_item()[source]

Called by the CDS and the MediaServer web.

Returns:
  • an UPnP ContentDirectoryServer DIDLLite object
  • or a Deferred
class BansheeDB(path=None)[source]

Bases: coherence.log.LogAble

logCategory = 'banshee_db'
open_db()[source]
close()[source]
get_local_music_library_id()[source]
get_local_video_library_id()[source]
get_artists()[source]
get_albums()[source]
get_music_playlists()[source]
get_playlists(source_id, PlaylistClass, SmartPlaylistClass)[source]
get_artist_with_id(artist_id)[source]
get_album_with_id(album_id)[source]
get_playlist_with_id(playlist_id, PlaylistClass)[source]
get_smart_playlist_with_id(playlist_id, PlaylistClass)[source]
get_music_playlist_with_id(playlist_id)[source]
get_music_smart_playlist_with_id(playlist_id)[source]
get_video_playlist_with_id(playlist_id)[source]
get_video_smart_playlist_with_id(playlist_id)[source]
get_track_with_id(track_id)[source]
get_track_for_uri(track_uri)[source]
get_tracks()[source]
get_video_with_id(video_id)[source]
get_videos()[source]
get_video_playlists()[source]
class BansheeStore(server, **kwargs)[source]

Bases: coherence.backend.BackendStore, coherence.backends.banshee_storage.BansheeDB

Changed in version 0.9.0: Migrated from louie/dispatcher to EventDispatcher

logCategory = 'banshee_store'
implements = ['MediaServer']
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.

release()[source]

If anything needs to be cleaned up upon shutdown of this backend, this is the place for it. Should be overwritten in subclass.

get_by_id(item_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.

_lookup(item_type, item_id)[source]