Example #1
0
    def get_pixbuf(self):
        cover = self.get_cover()

        if cover:
            stream = gio.memory_input_stream_new_from_data(cover.read())
            return gtk.gdk.pixbuf_new_from_stream(stream)
        else:
            print "Warning: unable to preview EPUB file '%s'" % self.get_basename()
            return GTKIconImage(gtk.STOCK_MISSING_IMAGE, 256).get_pixbuf()
Example #2
0
    def show_tweet(text, author, author_profile_image_url):
        notification = pynotify.Notification(author, text)

        response = urllib.urlopen(author_profile_image_url)
        input_stream = gio.memory_input_stream_new_from_data(response.read())
        pixbuf = gtk.gdk.pixbuf_new_from_stream(input_stream)

        notification.set_icon_from_pixbuf(pixbuf)
        notification.show()
Example #3
0
    def store_artwork(artwork_data, mb_albumid):

        import gio
        from gtk import gdk

        artwork_in = gio.memory_input_stream_new_from_data(artwork_data)

        pixbuf = gdk.pixbuf_new_from_stream(artwork_in, None)

        artwork = gpod.itdb_artwork_new()

        gpod.itdb_artwork_set_thumbnail_from_pixbuf(artwork, pixbuf, 0, None)

        mb_albumid_to_artwork[mb_albumid] = artwork

        return artwork
Example #4
0
def rebuild_artwork(mountpoint, dry_run=True):

    from collections import defaultdict

    db = gpod.Database(mountpoint)

    mbid_album_tracks = defaultdict(set)
    mbid_album_artwork = dict()

    non_mbid_album_tracks = defaultdict(set)
    non_mbid_album_artwork = dict()

    for track in db:
        md_hard, md_easy = get_metadata(track.ipod_filename())

        mb_albumid = get_first(md_easy, "musicbrainz_albumid", None)
        artist = get_first(md_easy, "artist", None)
        album = get_first(md_easy, "album", None)
        compilation = is_compilation(md_easy)

        if mb_albumid is not None:
            album_id = mb_albumid
            album_tracks = mbid_album_tracks
            album_artwork = mbid_album_artwork
        elif artist is not None and album is not None:
            if compilation:
                album_id = (("compilation",), album)
            else:
                album_id = (artist, album)
            album_tracks = non_mbid_album_tracks
            album_artwork = non_mbid_album_artwork
        else:
            continue

        album_tracks[album_id].add(track)

        if album_id in album_artwork:
            continue

        artwork_data = get_any_artwork(md_hard)

        if artwork_data is None:
            continue

        _log.debug("loaded artwork from track %r", track)

        album_artwork[album_id] = artwork_data

    for album_tracks, album_artwork in [
        (mbid_album_tracks, mbid_album_artwork),
        (non_mbid_album_tracks, non_mbid_album_artwork),
    ]:
        for album_id, artwork_data in album_artwork.iteritems():

            import gio
            from gtk import gdk

            artwork_in = gio.memory_input_stream_new_from_data(artwork_data)

            pixbuf = gdk.pixbuf_new_from_stream(artwork_in, None)

            tracks = album_tracks[album_id]

            _log.debug("setting artwork on %d tracks of album %r", len(tracks), album_id)

            for track in tracks:
                track.set_coverart(pixbuf)

    if dry_run:
        _log.info("dry run, quitting")
        return

    _log.info("saving itunesdb")
    db.close()
    _log.info("done")
Example #5
0
 def test_new_from_data(self):
     stream = gio.memory_input_stream_new_from_data('spam')
     self.assertEquals('spam', stream.read())
Example #6
0
 def test_new_from_data(self):
     stream = gio.memory_input_stream_new_from_data('spam')
     self.assertEquals('spam', stream.read())