Package: rhythmbox
Version: 0.12.6-2
Severity: normal

Hi.

I cannot seem to detect a remote upnp server (mediatomb).

By investigating the cause, I found out that the code of the coherence plugin 
seems different from the one shipped into upstream rhythmbox.

By changing it in order to match the one available from 
http://coherence.beebits.net/wiki/RhythmBox#PluginInstall it seems to work much 
better.

I suspect that the python-coherence and/or python-louie behaviour has changed, 
and one now needs to import coherence.extern.louie instead of louie python 
module directly.

The following patch illustrates the diffs between usptream code and the one in 
the coherence SVN.

Hope this helps.

Best regards,


-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (500, 'testing'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.30-2-686 (SMP w/1 CPU core)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages rhythmbox depends on:
ii  dbus                    1.2.16-2         simple interprocess messaging syst
ii  gconf2                  2.28.0-1         GNOME configuration database syste
ii  gnome-icon-theme        2.28.0-1         GNOME Desktop icon theme
ii  gstreamer0.10-alsa [gst 0.10.25-7        GStreamer plugin for ALSA
ii  gstreamer0.10-esd [gstr 0.10.17-1        GStreamer plugin for ESD
ii  gstreamer0.10-plugins-b 0.10.17-1        GStreamer plugins from the "bad" s
ii  gstreamer0.10-plugins-b 0.10.25-7        GStreamer plugins from the "base" 
ii  gstreamer0.10-plugins-g 0.10.17-1        GStreamer plugins from the "good" 
ii  gstreamer0.10-pulseaudi 0.10.17-1        GStreamer plugin for PulseAudio
ii  gstreamer0.10-x         0.10.25-7        GStreamer plugins for X11 and Pang
ii  libatk1.0-0             1.28.0-1         The ATK accessibility toolkit
ii  libavahi-client3        0.6.25-2         Avahi client library
ii  libavahi-common3        0.6.25-2         Avahi common library
ii  libavahi-glib1          0.6.25-2         Avahi glib integration library
ii  libbrasero-media0       2.28.3-1         CD/DVD burning library for GNOME -
ii  libc6                   2.10.2-2         GNU C Library: Shared libraries
ii  libcairo2               1.8.8-2          The Cairo 2D vector graphics libra
ii  libdbus-1-3             1.2.16-2         simple interprocess messaging syst
ii  libdbus-glib-1-2        0.82-2           simple interprocess messaging syst
ii  libfontconfig1          2.8.0-2          generic font configuration library
ii  libfreetype6            2.3.11-1         FreeType 2 font engine, shared lib
ii  libgconf2-4             2.28.0-1         GNOME configuration database syste
ii  libglade2-0             1:2.6.4-1        library to load .glade files at ru
ii  libglib2.0-0            2.22.3-1         The GLib library of C routines
ii  libgnome-keyring0       2.28.2-1         GNOME keyring services library
ii  libgnome-media0         2.28.1-1         runtime libraries for the GNOME me
ii  libgpod4                0.7.2-2          library to read and write songs an
ii  libgstreamer-plugins-ba 0.10.25-7        GStreamer libraries from the "base
ii  libgstreamer0.10-0      0.10.25-4+b1     Core GStreamer libraries and eleme
ii  libgtk2.0-0             2.18.3-1         The GTK+ graphical user interface 
ii  libgudev-1.0-0          149-2            GObject-based wrapper library for 
ii  libice6                 2:1.0.6-1        X11 Inter-Client Exchange library
ii  liblircclient0          0.8.3-5          infra-red remote control support -
ii  libmtp8                 0.3.7-7          Media Transfer Protocol (MTP) libr
ii  libmusicbrainz4c2a      2.1.5-4          Second generation incarnation of t
ii  libnotify1 [libnotify1- 0.4.5-1          sends desktop notifications to a n
ii  libpango1.0-0           1.26.2-1         Layout and rendering of internatio
ii  libsm6                  2:1.1.1-1        X11 Session Management library
ii  libsoup-gnome2.4-1      2.28.2-1         an HTTP library implementation in 
ii  libsoup2.4-1            2.28.2-1         an HTTP library implementation in 
ii  libtotem-plparser12     2.28.2-1         Totem Playlist Parser library - ru
ii  libusb-0.1-4            2:0.1.12-13      userspace USB programming library
ii  libxml2                 2.7.6.dfsg-1     GNOME XML library
ii  media-player-info       4-1              Media player identification files
ii  python                  2.5.4-5          An interactive high-level object-o
ii  python-gnome2           2.28.0-1         Python bindings for the GNOME desk
ii  python-gst0.10          0.10.17-1        generic media-playing framework (P
ii  python-gtk2             2.16.0-1         Python bindings for the GTK+ widge
ii  python-support          1.0.6            automated rebuilding support for P
ii  python2.5               2.5.4-3          An interactive high-level object-o
ii  zlib1g                  1:1.2.3.4.dfsg-3 compression library - runtime

Versions of packages rhythmbox recommends:
ii  avahi-daemon             0.6.25-2        Avahi mDNS/DNS-SD daemon
ii  gstreamer0.10-plugins-ug 0.10.13-2       GStreamer plugins from the "ugly" 
ii  gvfs-backends            1.4.3-1         userspace virtual filesystem - bac
ii  hal                      0.5.14-1        Hardware Abstraction Layer
ii  notification-daemon      0.4.0-2         a daemon that displays passive pop
ii  yelp                     2.28.0+webkit-2 Help browser for GNOME

Versions of packages rhythmbox suggests:
ii  gnome-codec-install           0.4.2      GStreamer codec installer
ii  gnome-control-center          1:2.28.1-1 utilities to configure the GNOME d
ii  gstreamer0.10-plugins-bad     0.10.17-1  GStreamer plugins from the "bad" s
ii  python-coherence              0.6.4-4    Python UPnP framework

-- no debconf information
diff -Naur orig/__init__.py ./__init__.py
--- orig/__init__.py	2010-01-10 22:02:08.000000000 +0100
+++ ./__init__.py	2010-01-01 18:42:08.000000000 +0100
@@ -12,12 +12,12 @@
 
 import gconf
 
-import louie
+import coherence.extern.louie as louie
 
 from coherence import log
 
 # for the icon
-import os.path, urllib, gnomevfs, gtk.gdk
+import os.path, urllib, gio, gtk.gdk
 
 # the gconf configuration
 gconf_keys = {
@@ -78,8 +78,10 @@
         the_icon = None
         face_path = os.path.join(os.path.expanduser('~'), ".face")
         if os.path.exists(face_path):
-            url = "file://" + urllib.pathname2url(face_path)
-            mimetype = gnomevfs.get_mime_type(url)
+            file = gio.File(file=face_path);
+            url = file.get_uri();
+            info = file.query_info("standard::fast-content-type");
+            mimetype = info.get_attribute_as_string("standard::fast-content-type");
             pixbuf = gtk.gdk.pixbuf_new_from_file(face_path)
             width = "%s" % pixbuf.get_width()
             height = "%s" % pixbuf.get_height()
diff -Naur orig/MediaPlayer.py ./MediaPlayer.py
--- orig/MediaPlayer.py	2010-01-10 22:02:08.000000000 +0100
+++ ./MediaPlayer.py	2009-11-01 12:41:42.000000000 +0100
@@ -13,7 +13,7 @@
 from coherence.upnp.core.soap_service import errorCode
 from coherence.upnp.core import DIDLLite
 
-import louie
+import coherence.extern.louie as louie
 
 from coherence.extern.simple_plugin import Plugin
 
@@ -421,9 +421,21 @@
         self.current_connection_id = None
         self.server.connection_manager_server.set_variable(0, 'SinkProtocolInfo',
                             ['rhythmbox:%s:audio/mpeg:*' % self.server.coherence.hostname,
-                             'rhythmbox:%s:application/ogg:*' % self.server.coherence.hostname,
                              'http-get:*:audio/mpeg:*',
-                             'http-get:*:application/ogg:*'],
+                             'rhythmbox:%s:application/ogg:*' % self.server.coherence.hostname,
+                             'http-get:*:application/ogg:*',
+                             'rhythmbox:%s:audio/ogg:*' % self.server.coherence.hostname,
+                             'http-get:*:audio/ogg:*',
+                             'rhythmbox:%s:audio/x-flac:*' % self.server.coherence.hostname,
+                             'http-get:*:audio/x-flac:*',
+                             'rhythmbox:%s:audio/flac:*' % self.server.coherence.hostname,
+                             'http-get:*:audio/flac:*',
+                             'rhythmbox:%s:audio/x-wav:*' % self.server.coherence.hostname,
+                             'http-get:*:audio/x-wav:*',
+                             'rhythmbox:%s:audio/L16;rate=44100;channels=2:*' % self.server.coherence.hostname,
+                             'http-get:*:audio/L16;rate=44100;channels=2:*',
+                             'rhythmbox:%s:audio/x-m4a:*' % self.server.coherence.hostname,
+                             'http-get:*:audio/x-m4a:*'],
                             default=True)
         self.server.av_transport_server.set_variable(0, 'TransportState', 'NO_MEDIA_PRESENT', default=True)
         self.server.av_transport_server.set_variable(0, 'TransportStatus', 'OK', default=True)
diff -Naur orig/MediaStore.py ./MediaStore.py
--- orig/MediaStore.py	2010-01-10 22:02:08.000000000 +0100
+++ ./MediaStore.py	2009-06-01 21:20:56.000000000 +0200
@@ -6,7 +6,7 @@
 
 import os.path
 import rhythmdb
-import louie
+import coherence.extern.louie as louie
 import urllib
 
 from coherence import __version_info__
diff -Naur orig/UpnpSource.py ./UpnpSource.py
--- orig/UpnpSource.py	2010-01-10 22:02:08.000000000 +0100
+++ ./UpnpSource.py	2009-10-29 22:29:47.000000000 +0100
@@ -132,9 +132,9 @@
 
                     if duration is not None:
                         h,m,s = duration.split(':')
-                        seconds = int(h)*3600 + int(m)*60 + int(s)
-                        self.info("%r %r:%r:%r %r", duration, h, m , s, seconds)
-                        self.__db.set(entry, rhythmdb.PROP_DURATION, seconds)
+                        seconds = int(h)*3600 + int(m)*60 + float(s)
+                        self.info("%r %r:%r:%r %r" % (duration,h,m,s,seconds))
+                        self.__db.set(entry, rhythmdb.PROP_DURATION, int(seconds))
 
                     if size is not None:
                         self.__db.set(entry, rhythmdb.PROP_FILE_SIZE,int(size))

Reply via email to