diff options
author | methodus <methodus@web.de> | 2013-01-03 08:23:02 +0100 |
---|---|---|
committer | methodus <methodus@web.de> | 2013-01-03 08:23:02 +0100 |
commit | 144b098a1a24d2cc6664513e6951e1215c0b3acb (patch) | |
tree | bbc81ae30f174c7e59db3c04802826acc1d10ed4 | |
parent | 0c1c7fe86992a030ed6e72a74b1e16607c4516a2 (diff) | |
download | vdr-plugin-upnp-144b098a1a24d2cc6664513e6951e1215c0b3acb.tar.gz vdr-plugin-upnp-144b098a1a24d2cc6664513e6951e1215c0b3acb.tar.bz2 |
Added channel group to channel item properties (genre) to use that for filtering and sorting in Windows Media Player 12, which is absolutely unaware of folders.
-rw-r--r-- | plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp | 31 | ||||
-rw-r--r-- | plugins/provider/vdrProvider/vdrProvider.cpp | 11 |
2 files changed, 31 insertions, 11 deletions
diff --git a/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp b/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp index 84b50a8..1725006 100644 --- a/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp +++ b/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp @@ -136,6 +136,31 @@ public: } } + int GetGroupByChannel(const cChannel* channel) + { + if(!channel) return -1; + int Idx = 0, Idx2; + cChannel *group, *chan; + + for(group = Channels.First(); group; group = Channels.Next(group)){ + if(group->GroupSep() && *group->Name()){ + Idx2 = Idx; + for(chan = Channels.Next(group); chan; chan = Channels.Next(chan)){ + if(chan->GroupSep() && *group->Name()){ + group = Channels.Prev(chan); + break; + } + if(channel == chan) return Idx; + ++Idx2; + } + Idx = Idx2; + } + ++Idx; + } + + return -1; + } + ::cConfig<ChannelTitle> channelTitleConfig; cCharSetConv conv; @@ -341,6 +366,12 @@ private: metadata.SetProperty(cMetadata::Property(property::object::KEY_CHANNEL_NAME, channelName)); metadata.SetProperty(cMetadata::Property(property::object::KEY_CHANNEL_NR, (long int)channel->Number())); + int group = GetGroupByChannel(channel); + if(group != -1){ + LOG(4, "Channel group: %s (%d)", Channels.Get(group)->Name(), group); + metadata.SetProperty(cMetadata::Property("upnp:genre", tools::ToUTF8String(Channels.Get(group)->Name()))); + } + // Now, we try to get the present event of the schedule { cSchedulesLock lock; diff --git a/plugins/provider/vdrProvider/vdrProvider.cpp b/plugins/provider/vdrProvider/vdrProvider.cpp index 6ab3d27..4f7276a 100644 --- a/plugins/provider/vdrProvider/vdrProvider.cpp +++ b/plugins/provider/vdrProvider/vdrProvider.cpp @@ -49,17 +49,6 @@ private: return group ? Idx : -1; } - int GetGroupByChannel(const cChannel* channel) - { - if(!channel) return -1; - int Idx = -1; - cChannel* group = Channels.Get(++Idx); - while(group && !(group->GroupSep() && group->Number() > channel->Number())) - group = Channels.Get(++Idx); - return group ? Idx : -1; - - } - string GetContainerName(string uri){ return uri.substr(6,uri.size()-7); } |