I had hoped I was making headway, but I’m not quite there yet.
What I did was kind of traceback the DirectoryItem() class in Objects.py which led me to PlexDirectory.cpp. I looked at the PlexMediaDirectory class to see how DirectoryItem() was passing data. So, I figured I could create an AlbumItem() wrapper in Objects.py to pass data to the PlexMediaAlbum class in PlexDirectory.cpp:
class AlbumItem(XMLObject):<br />
def __init__(self, key, label, album=None, artist=None, genre=None, year=None, **kwargs):<br />
XMLObject.__init__(self, key=key, label=label, album=album, artist=artist, genre=genre, year=year, **kwargs)<br />
self.tagName = "Album"
I'm calling AlbumItem() in place of DirectoryItem() where I need it in my plugin:
dir.Append(Function(AlbumItem(GetXML, label="Label", album="Album", artist="Artist", genre="Genre", year="2005"), type="Songs", url="/rsp/db/1?type=browse&query=(artist%3D%22" + q_artist + "%22)%20and%20(album%3D%22" + q_album + "%22)"))
When I check the XML output via port 32400, everything looks fine:
<MediaContainer viewGroup="Albums" noHistory="0" content="Albums" title1="Firefly Media Server" title2="Albums" replaceParent="0" count="4" viewmode="131123" contenttype="items"><br />
<Album album="Album" key="/music/firefly/:/function/GetXML/KGRwMApTJ3VybCcKcDEKUycvcnNwL2RiLzE@dHlwZT1icm93c2UmcXVlcnk9KGFydGlzdCUzRCUyMkEl<br />
MjBQZXJmZWN0JTIwQ2lyY2xlJTIyKSUyMGFuZCUyMChhbGJ1bSUzRCUyMk1lciUyMGRlJTIwTm9tcyUy<br />
M<br />
iknCnAyCnNTJ3R5cGUnCnAzClMnU29uZ3MnCnA0CnNTJ3NlbmRlcicKcDUKKGlQTVMuT2JqZWN0cwpJd<br />
G<br />
VtSW5mb1JlY29yZApwNgooZHA3ClMnaXRlbVRpdGxlJwpwOApOc1MndGl0bGUxJwpwOQpTJ0ZpcmVmbH<br />
k<br />
gTWVkaWEgU2VydmVyJwpwMTAKc1MndGl0bGUyJwpwMTEKUydBbGJ1bXMnCnAxMgpzUydhcnQnCnAxMwp<br />
O<br />
c2JzLg==" artist="Artist" label="Label" year="2005" genre="Genre"/><br />
</MediaContainer>
However, when I try it via the Plex UI, nothing happens. I see no errors in the log for my plugin, however, there is an error tossed up in plex.log:
So this is where I'm at.. I get the feeling I'm on the right track, but I'm missing something mundane. Any help would be greatly appreciated!