[Banshee-List] Sharing media between Banshees



I have three machines for media: one plugged into the big television
in my lounge, which we'll call "big", one plugged into the little
television in my bedroom, which we'll call "little", and my laptop on
which I work during the day, which we'll call "laptop". I've been
inventing how, in a perfect world, I'd like this setup to work, and
here I plan to ask a few questions and lay out a few ideas to see if
they make sense before I start hacking.

In this mail, I'm going to talk about sharing media between these machines.

Big has a 1TB drive in it, which has all my media on it -- movies, TV
shows, music -- and is about half-full (and will likely get fuller).
Little has a small drive in it (80GB or so). Laptop also has about
80GB in it. I'd like to be able to play all the music and movies on
all three of the machines. Importantly, big and little both have a
ten-foot interface -- they're controlled with a simple 6-button remote
control, not with a keyboard and mouse. So, I'd like to be able to
play the media from little, and I'd like to be able to play *and edit*
the media from laptop. By "edit", here, I mean creating playlists,
adding ratings, and editing metadata. (Critically, I do not mean
"importing media" -- I am happy to only import media directly on big.)
I'd really like to avoid having to import a new piece of media three
times, once on each machine. 'I've been thinking about ways that I can
do this, and here are those that I've come up with. (I want to use
Banshee as much as possible, because I like it.)

1. Run a DAAP server on big; use Banshee as a client to that DAAP
server on big, little, and laptop:

This will work; Tangerine or Firefly are both DAAP servers, and I've
successfully used Firefly in the past as a server with Banshee as
client elsewhere on the network. This would mean, essentially, that
Banshee is fairly irrelevant; I'm using it purely as a DAAP browser,
and when I want to create new playlists or import new media I open a
web browser on laptop and browse to http://big/firefly/ (or similar).
Flaws with this idea:
DAAP doesn't do album artwork, and my 10-foot interface will look a
lot prettier if it has album art and so on in it.
I lose the Banshee interface on laptop, which I like, and replace it
with the not-as-pretty Firefly web interface for editing. This is a
shame.
Firefly's just Not As Good as Banshee. I want to use Banshee for
stuff, not some slightly shonky web client.

2. Revitalise the Banshee DAAP server plugin and use it as the DAAP server

Mostly the same problems as (1), with the added thing that presumably
you all disabled Banshee's DAAP server for a reason...

3. Embrace and extend DAAP to allow for editing, and then do (2)

This would work quite nicely; if laptop can show a Banshee
writeableDAAP share and *editing the metadata for stuff in that share*
actually edits it on big (because it passes the edits back over the
writeableDAAP protocol) then pretty much all the problems with (2) go
away. I get to use the nice Banshee interface for everything. There
are two downsides to this: the first is that embracing and extending
DAAP is a bit of a no-no (we complain at other big software
organisations for doing that sort of thing), and the second is that
DAAP isn't really designed for that and so doing it would be, in my
estimation, quite a bit of work.

4. Invent a new sharing protocol which is sort of DAAPish and teach
Banshee about it, and then do (3)

This neatly avoids the problems inherent in extending an existing
protocol, and means that it can be designed from the ground up as a
more sensible thing. I'm imagining something very RESTish, where GET
http://big:99999/artistname/songname.json gets you all the metadata
for that song as a JSON document, and you can edit it by PUTting the
document back with alterations. This is a known good way of writing
APIs for web stuff, and there's plenty of prior art. Obvious downside
are that nothing in the world will speak it except Banshee (although
that doesn't really matter from my perspective, and if it's good
others will adopt it), and also the NIH fairy may come round and hit
me with a hammer.

5. something something UPnP handwave something

I, personally, don't know whether UPnP can do everything I'm
describing. Every time I read about it I want to jump out of a
building. This, for practical purposes, means that if it's getting
written I'm not writing it. Also, people have been talking about UPnP
and Banshee for quite a while now, which suggests that it may happen
at some point but it's not a priority.

6. Create a server which lives outside Banshee, talks the above
invented RESTish sharing protocol, and gets data from Banshee's
database without going through Banshee itself

This would work neatly in that Banshee isn't cluttered up with stuff
for this work; it's a completely separate program. The obvious flaw is
that you're Not Supposed To Poke The Banshee DB Directly. My separate
server would entirely break if the Banshee DB schema gets revised. I'm
also rather worried about the idea of *writing* to Banshee's DB;
reading is presumably OK (sqlite's not bad for that sort of locking),
but writing has the potential to be quite bad, and Banshee doesn't
check its DB for changes (because it assumes it's the only one writing
to it). It's also hugely more likely that I'll be able to do this,
because I'm a lot better at Python than I am at C#, and I can write
the external server in Python.

7. Create a server which lives outside Banshee, talks the above
invented RESTish sharing protocol, and gets data from Banshee's D-Bus
API

This has all the advantages of (6) and none of the disadvantages. It
has a very big disadvantage of its own, though, which is that the
D-Bus API isn't complete. It doesn't export all metadata about media,
and it doesn't allow editing of metadata (as far as I'm aware).
Perhaps there are plans to offer all these things; perhaps not.
Enlightenment would be very graciously welcomed on this point.

-----------------

One of the things that prompted me to think about all this was sitting
down with a friend of mine, who has a Mac Mini running his TV and a
Macbook. Both of the machines have iTunes, and he finds it a real pain
that he has to plug in the separate keyboard for the Mac Mini when he
wants to edit stuff. I thought: Banshee could and should be better
than this. If I've got machines around my house that play media, they
should all seamlessly work together, *and* we'd be better than
anything else on the market if it all worked the seamless way that
Banshee already does for the stuff that it does do. DAAP sharing is a
step toward this, but it's less than halfway there; I'd like to see
the next step and the one after that.

So, have I missed anything from the above list, and which of the
options seems the most sensible and most plausible?

sil


-- 
New Year's Day --
everything is in blossom!
I feel about average.
   -- Kobayashi Issa


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]