mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-26 15:02:56 +02:00
add epg remaping
This commit is contained in:
19
data/epgmap.xml
Normal file
19
data/epgmap.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<zapit>
|
||||
<filter channel_id="b85a1450013e0d49" new_epg_id="ac423070013e213f"/> --rai1
|
||||
<filter channel_id="b12003ee00011072" new_epg_id="ac423070013e213f"/> --rai1
|
||||
|
||||
<filter channel_id="ac9630d4013e4530" new_epg_id="ac423070013e2140"/> --rai2
|
||||
<filter channel_id="b12003ee00011073" new_epg_id="ac423070013e2140"/> --rai2
|
||||
|
||||
<filter channel_id="b12003ee00011074" new_epg_id="ac423070013e2141"/> --rai3
|
||||
<filter channel_id="ac9630d4013e4531" new_epg_id="ac423070013e2141"/> --rai3
|
||||
|
||||
<filter channel_id="ac9630d4013e4534" new_epg_id="ac423070013e2142"/> --rai4
|
||||
|
||||
<filter channel_id="ac9630d4013e4533" new_epg_id="ac421518013e0ce9"/> --raisport1
|
||||
<filter channel_id="b12003ee00011078" new_epg_id="ac423070013e2144"/> --rainews24
|
||||
|
||||
<filter channel_id="b4d6070800c80e26" new_epg_id="b45803fb0001283d"/> --Das Erste
|
||||
</zapit>
|
@@ -98,7 +98,10 @@ class CBouquetManager
|
||||
void writeBouquetChannels (FILE * bouq_fd, uint32_t i, bool bUser = false);
|
||||
void writeChannels(FILE * bouq_fd, ZapitChannelList &list, bool bUser);
|
||||
void writeBouquet(FILE * bouq_fd, uint32_t i, bool bUser);
|
||||
|
||||
//remap epg_id
|
||||
std::map<t_channel_id, t_channel_id> EpgIDMapping;
|
||||
void readEPGMapping();
|
||||
t_channel_id reMapEpgID(t_channel_id channelid);
|
||||
public:
|
||||
CBouquetManager() { remainChannels = NULL; };
|
||||
~CBouquetManager();
|
||||
|
@@ -290,6 +290,7 @@ class CZapitChannel
|
||||
};
|
||||
bool Locked() { return (bLocked || !!bLockCount); }
|
||||
t_channel_id getEpgID(void) const { return epg_id; }
|
||||
void setEPGid(t_channel_id pEPGid) { epg_id = pEPGid; } //remap epg_id
|
||||
};
|
||||
|
||||
struct CmpChannelBySat: public std::binary_function <const CZapitChannel * const, const CZapitChannel * const, bool>
|
||||
|
@@ -387,6 +387,10 @@ void CBouquetManager::parseBouquetsXml(const char *fname, bool bUser)
|
||||
xmlNodePtr channel_node;
|
||||
|
||||
if (search) {
|
||||
if(!bUser){
|
||||
readEPGMapping();
|
||||
}
|
||||
|
||||
t_original_network_id original_network_id;
|
||||
t_service_id service_id;
|
||||
t_transport_stream_id transport_stream_id;
|
||||
@@ -448,6 +452,10 @@ void CBouquetManager::parseBouquetsXml(const char *fname, bool bUser)
|
||||
chan->pname = (char *) newBouquet->Name.c_str();
|
||||
chan->bLocked = clock;
|
||||
chan->bUseCI = newBouquet->bUseCI;
|
||||
//remapinng epg_id
|
||||
t_channel_id new_epgid = reMapEpgID(chan->getChannelID());
|
||||
if(new_epgid)
|
||||
chan->setEPGid(new_epgid);
|
||||
|
||||
newBouquet->addService(chan);
|
||||
} else if (bUser) {
|
||||
@@ -483,6 +491,9 @@ void CBouquetManager::parseBouquetsXml(const char *fname, bool bUser)
|
||||
search = xmlNextNode(search);
|
||||
}
|
||||
INFO("total: %d bouquets", (int)Bouquets.size());
|
||||
if(!bUser && !EpgIDMapping.empty()){
|
||||
EpgIDMapping.clear();
|
||||
}
|
||||
}
|
||||
xmlFreeDoc(parser);
|
||||
}
|
||||
@@ -929,3 +940,47 @@ int CBouquetManager::ChannelIterator::getNrofFirstChannelofBouquet(const unsigne
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
t_channel_id CBouquetManager::reMapEpgID(t_channel_id channelid)
|
||||
{
|
||||
if(!EpgIDMapping.empty()){
|
||||
std::map<t_channel_id, t_channel_id>::iterator it = EpgIDMapping.find(channelid);
|
||||
if ( it != EpgIDMapping.end() )
|
||||
return it->second;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CBouquetManager::readEPGMapping()
|
||||
{
|
||||
if(!EpgIDMapping.empty())
|
||||
EpgIDMapping.clear();
|
||||
|
||||
const std::string epg_map_dir = CONFIGDIR "/zapit/epgmap.xml";
|
||||
xmlDocPtr epgmap_parser = parseXmlFile(epg_map_dir.c_str());
|
||||
|
||||
if (epgmap_parser != NULL)
|
||||
{
|
||||
|
||||
xmlNodePtr epgmap = xmlDocGetRootElement(epgmap_parser);
|
||||
if(epgmap)
|
||||
epgmap = xmlChildrenNode(epgmap);
|
||||
|
||||
while (epgmap) {
|
||||
const char *cannelid = xmlGetAttribute(epgmap, "channel_id");
|
||||
const char *epgid = xmlGetAttribute(epgmap, "new_epg_id");
|
||||
t_channel_id epg_id = 0;
|
||||
t_channel_id chid = 0;
|
||||
if (epgid)
|
||||
epg_id = strtoull(epgid, NULL, 16);
|
||||
if (cannelid)
|
||||
chid = strtoull(cannelid, NULL, 16);
|
||||
if(chid && epg_id){
|
||||
EpgIDMapping[chid]=epg_id;
|
||||
}
|
||||
|
||||
epgmap = xmlNextNode(epgmap);
|
||||
}
|
||||
}
|
||||
xmlFreeDoc(epgmap_parser);
|
||||
}
|
||||
|
Reference in New Issue
Block a user