summaryrefslogtreecommitdiff
path: root/epg2vdr.c
diff options
context:
space:
mode:
authorhorchi <vdr@jwendel.de>2017-12-20 07:57:05 +0100
committerhorchi <vdr@jwendel.de>2017-12-20 07:57:05 +0100
commit403f126e5da6d1811d981d5773d0a0772b99acc1 (patch)
tree10e9559baf3e008cb329369794053f4bf34d5eca /epg2vdr.c
parent2819b6ccb4cbfd95459c2ec888c305b3355df54b (diff)
downloadvdr-plugin-epg2vdr-403f126e5da6d1811d981d5773d0a0772b99acc1.tar.gz
vdr-plugin-epg2vdr-403f126e5da6d1811d981d5773d0a0772b99acc1.tar.bz2
2017-12-19 version 1.1.74 (horchi)\n - added: recording detail query to service interface\n\n1.1.74
Diffstat (limited to 'epg2vdr.c')
-rw-r--r--epg2vdr.c68
1 files changed, 67 insertions, 1 deletions
diff --git a/epg2vdr.c b/epg2vdr.c
index 369da42..46f5658 100644
--- a/epg2vdr.c
+++ b/epg2vdr.c
@@ -423,6 +423,7 @@ cPluginEPG2VDR::cPluginEPG2VDR()
useeventsDb = 0;
selectTimers = 0;
selectEventById = 0;
+ recordingListDb = 0;
}
cPluginEPG2VDR::~cPluginEPG2VDR()
@@ -448,6 +449,9 @@ int cPluginEPG2VDR::initDb()
useeventsDb = new cDbTable(connection, "useevents");
if (useeventsDb->open() != success) return fail;
+ recordingListDb = new cDbTable(connection, "recordinglist");
+ if (recordingListDb->open() != success) return fail;
+
// ----------
// select
// t.*,
@@ -509,6 +513,7 @@ int cPluginEPG2VDR::exitDb()
delete useeventsDb; useeventsDb = 0;
delete timerDb; timerDb = 0;
delete vdrDb; vdrDb = 0;
+ delete recordingListDb; recordingListDb = 0;
delete connection; connection = 0;
}
@@ -864,7 +869,7 @@ bool cPluginEPG2VDR::Service(const char* id, void* data)
return true;
}
- if (strcmp(id, EPG2VDR_TIMER_SERVICE) == 0) // || .....
+ if (strcmp(id, EPG2VDR_TIMER_SERVICE) == 0 || strcmp(id, EPG2VDR_REC_DETAIL_SERVICE) == 0)
{
// Services with direct db access
@@ -879,6 +884,13 @@ bool cPluginEPG2VDR::Service(const char* id, void* data)
if (ts)
return timerService(ts);
}
+ else if (strcmp(id, EPG2VDR_REC_DETAIL_SERVICE) == 0)
+ {
+ cEpgRecording_Details_Service_V1* rd = (cEpgRecording_Details_Service_V1*)data;
+
+ if (rd)
+ return recordingDetails(rd);
+ }
exitDb();
}
@@ -920,6 +932,60 @@ int cPluginEPG2VDR::timerService(cEpgTimer_Service_V1* ts)
}
//***************************************************************************
+// Recording Details
+//***************************************************************************
+
+#include <vdr/videodir.h>
+
+int cPluginEPG2VDR::recordingDetails(cEpgRecording_Details_Service_V1* rd)
+{
+ const char* videoBasePath = cVideoDirectory::Name();
+ md5Buf md5path;
+ const cRecording* recording;
+ int pathOffset = 0;
+
+#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
+ LOCK_RECORDINGS_READ;
+ const cRecordings* recordings = Recordings;
+#else
+ const cRecordings* recordings = &Recordings;
+#endif
+
+ if (!(recording = recordings->GetById(rd->id)))
+ return false;
+
+ if (strncmp(recording->FileName(), videoBasePath, strlen(videoBasePath)) == 0)
+ {
+ pathOffset = strlen(videoBasePath);
+
+ if (*(recording->FileName()+pathOffset) == '/')
+ pathOffset++;
+ }
+
+ createMd5(recording->FileName()+pathOffset, md5path);
+
+ recordingListDb->clear();
+
+ recordingListDb->setValue("MD5PATH", md5path);
+ recordingListDb->setValue("STARTTIME", recording->Start());
+ recordingListDb->setValue("OWNER", Epg2VdrConfig.useCommonRecFolder ? "" : Epg2VdrConfig.uuid);
+
+ cXml xml;
+ int found = recordingListDb->find();
+
+ xml.create("epg2vdr");
+
+ if (found)
+ cEventDetails::row2Xml(recordingListDb->getRow(), &xml);
+
+ rd->details = xml.toText();
+
+ recordingListDb->reset();
+
+ return found;
+}
+
+//***************************************************************************
// Initialize
//***************************************************************************