(02-09-2026 22:51)serento Wrote: What Serento does during a sync
When a server advertises Search with a upnp:class predicate, Serento takes a fast path instead of walking the tree album by album.
I haven't been able to test this with Serento because I'm on Android, but you may have issues when building albums from tracks because of the way tracks can be grouped (represented as albums within albums, typically for classical works).
Using the album
Foxtrot by Genesis as an example, the final 7 tracks form part of the broader work Supper's Ready, so all are tagged with GROUP='Supper's Ready', which when displayed on a control point looks like:
Your search would return (only a partial listing included):
Code:
<item id="0$:items$*i5" parentID="0$:items" restricted="1">
<dc:title>Watcher Of The Skies</dc:title>
<upnp:genre>Pop/Rock</upnp:genre>
<dc:date>1985-01-01</dc:date>
<upnp:album>Foxtrot</upnp:album>
<upnp:artist>Genesis</upnp:artist>
<dc:creator>Genesis</dc:creator>
<upnp:artist role="AlbumArtist">Genesis</upnp:artist>
<upnp:originalTrackNumber>1</upnp:originalTrackNumber>
<upnp:class>object.item.audioItem.musicTrack</upnp:class>
</item>
<item id="0$:items$*i4" parentID="0$:items" restricted="1">
<dc:title>Time Table</dc:title>
<upnp:genre>Pop/Rock</upnp:genre>
<dc:date>1985-01-01</dc:date>
<upnp:album>Foxtrot</upnp:album>
<upnp:artist>Genesis</upnp:artist>
<dc:creator>Genesis</dc:creator>
<upnp:artist role="AlbumArtist">Genesis</upnp:artist>
<upnp:originalTrackNumber>2</upnp:originalTrackNumber>
<upnp:class>object.item.audioItem.musicTrack</upnp:class>
</item>
...
<item id="0$:items$*i3$3-26" parentID="0$:items$*i3" restricted="1">
<dc:title>Apocalypse In 9/8</dc:title>
<upnp:genre>Pop/Rock</upnp:genre>
<dc:date>1985-01-01</dc:date>
<upnp:album>Supper's Ready</upnp:album>
<upnp:artist>Genesis</upnp:artist>
<dc:creator>Genesis</dc:creator>
<upnp:artist role="AlbumArtist">Genesis</upnp:artist>
<upnp:originalTrackNumber>6</upnp:originalTrackNumber>
<upnp:class>object.item.audioItem.musicTrack</upnp:class>
</item>
<item id="0$:items$*i3$3-27" parentID="0$:items$*i3" restricted="1">
<dc:title>As Sure As Eggs Is Eggs (Aching Men's Feet)</dc:title>
<upnp:genre>Pop/Rock</upnp:genre>
<dc:date>1985-01-01</dc:date>
<upnp:album>Supper's Ready</upnp:album>
<upnp:artist>Genesis</upnp:artist>
<dc:creator>Genesis</dc:creator>
<upnp:artist role="AlbumArtist">Genesis</upnp:artist>
<upnp:originalTrackNumber>7</upnp:originalTrackNumber>
<upnp:class>object.item.audioItem.musicTrack</upnp:class>
</item>
...
As you can see tracks 6 and 7 appear to belong to a different album. Maybe you could use the parentID (not = "0$:items") to trigger an album by album approach?
During a previous
discussion @simoncn mentioned that it's possible for a control point to request that multi-valued items be delivered individually (artist, genre e.t.c.) so it might be worth chasing up with him on that. What I don't know is if that would apply to users using the
.displayFormat setting to display collaborations e.g.
Here's a truncated version of the Foxtrot album for testing.
Genesis.zip (Size: 24.42 KB / Downloads: 1)