summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormethodus <methodus@web.de>2013-01-03 08:23:02 +0100
committermethodus <methodus@web.de>2013-01-03 08:23:02 +0100
commit144b098a1a24d2cc6664513e6951e1215c0b3acb (patch)
treebbc81ae30f174c7e59db3c04802826acc1d10ed4
parent0c1c7fe86992a030ed6e72a74b1e16607c4516a2 (diff)
downloadvdr-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.cpp31
-rw-r--r--plugins/provider/vdrProvider/vdrProvider.cpp11
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);
}