summaryrefslogtreecommitdiff
path: root/database
diff options
context:
space:
mode:
Diffstat (limited to 'database')
-rw-r--r--database/database.h2
-rw-r--r--database/metadata.cpp37
-rw-r--r--database/resources.cpp6
3 files changed, 40 insertions, 5 deletions
diff --git a/database/database.h b/database/database.h
index fe91f2b..9df2c71 100644
--- a/database/database.h
+++ b/database/database.h
@@ -20,7 +20,7 @@
#define PK_RESOURCES TOSTRING(2)
#define PK_SEARCHCLASSES TOSTRING(3)
-#define SQLITE_FIRST_CUSTOMID TOSTRING(0)
+#define SQLITE_FIRST_CUSTOMID TOSTRING(100)
#define SQLITE_COLUMN_NAME_LENGTH 64
diff --git a/database/metadata.cpp b/database/metadata.cpp
index ac19118..75adf98 100644
--- a/database/metadata.cpp
+++ b/database/metadata.cpp
@@ -186,16 +186,27 @@ int cMediaDatabase::prepareDatabase(){
Radio->addSearchClass(AudioBCClass);
Radio->setSearchable(true);
if(this->mFactory->saveObject(Radio)) return -1;
+
+ cUPnPClassContainer* CustomVideos = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("User videos"));
+ CustomVideos->setID(6);
+ Video->addObject(CustomVideos);
+ CustomVideos->addSearchClass(VideoClass);
+ CustomVideos->setSearchable(true);
+ if(this->mFactory->saveObject(CustomVideos)) return -1;
}
return 0;
}
int cMediaDatabase::loadChannels(){
- MESSAGE("Loading channels from Database");
+ MESSAGE("Loading channels");
cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3);
if(TV){
// Iterating channels
cList<cUPnPClassObject>* List = TV->getObjectList();
+ bool noResource = false;
+ // TODO: Add to setup
+ // if an error occured while loading resources, add the channel anyway
+ bool addWithoutResources = false;
for(cChannel* Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)){
bool inList = false;
for(cUPnPClassVideoBroadcast* Child = (cUPnPClassVideoBroadcast*)List->First();
@@ -205,6 +216,7 @@ int cMediaDatabase::loadChannels(){
}
if(!inList){
if(!Channel->GroupSep()){
+ noResource = false;
tChannelID ChannelID = Channel->GetChannelID();
MESSAGE("Adding channel '%s' ID:%s", Channel->Name(), *ChannelID.ToString());
cUPnPClassVideoBroadcast* ChannelItem;
@@ -215,9 +227,14 @@ int cMediaDatabase::loadChannels(){
if(Channel->Alang(0)){
ChannelItem->setLanguage(Channel->Alang(0));
}
- cUPnPResources::getInstance()->createFromChannel(ChannelItem, Channel);
- TV->addObject(ChannelItem);
- if(this->mFactory->saveObject(ChannelItem)) return -1;
+ if(cUPnPResources::getInstance()->createFromChannel(ChannelItem, Channel)){
+ ERROR("Unable to get resources for this channel");
+ noResource = true;
+ }
+ if(noResource && addWithoutResources) {
+ TV->addObject(ChannelItem);
+ if(this->mFactory->saveObject(ChannelItem)) return -1;
+ }
}
else {
MESSAGE("Skipping group '%s'", Channel->Name());
@@ -234,6 +251,18 @@ int cMediaDatabase::loadChannels(){
return 0;
}
+//int cMediaDatabase::loadRecordings(){
+// MESSAGE("Loading recordings");
+// cUPnPClassContainer* Records = (cUPnPClassContainer*)this->getObjectByID(4);
+// if(Records){
+// // Iterating channels
+// cList<cUPnPClassObject>* List = Records->getObjectList();
+// for(cRecording* Record = Recordings.First(); Record; Record = Recordings.Next(Record)){
+//
+// }
+// }
+//}
+
void cMediaDatabase::Action(){
time_t LastEPGUpdate = 0;
while(this->Running()){
diff --git a/database/resources.cpp b/database/resources.cpp
index f681a54..df2b354 100644
--- a/database/resources.cpp
+++ b/database/resources.cpp
@@ -101,6 +101,12 @@ int cUPnPResources::createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel
}
DLNAProfile* Profile = cDlna::getInstance()->getProfileOfChannel(Channel);
+
+ if(!Profile){
+ ERROR("No profile found for Channel %s", *Channel->GetChannelID().ToString());
+ return -1;
+ }
+
const char* ProtocolInfo = cDlna::getInstance()->getProtocolInfo(Profile);
MESSAGE("Protocol info: %s", ProtocolInfo);