if event_id is None:
event_id = -1
- prep_res=self.record_service.prepare(self.Filename + ".ts", self.begin, self.end, event_id)
+ prep_res=self.record_service.prepare(self.Filename + ".ts", self.begin, self.end, event_id, self.name.replace("\n", ""), self.description.replace("\n", ""), ' '.join(self.tags))
if prep_res:
- self.log(2, "'prepare' failed: error %d" % prep_res)
- NavigationInstance.instance.stopRecordService(self.record_service)
- self.record_service = None
- return False
-
- self.log(3, "prepare ok, writing meta information to %s" % self.Filename)
- try:
- f = open(self.Filename + ".ts.meta", "w")
- f.write(rec_ref.toString() + "\n")
- f.write(self.name.replace("\n", "") + "\n")
- f.write(self.description.replace("\n", "") + "\n")
- f.write(str(self.begin) + "\n")
- f.write(' '.join(self.tags))
- f.close()
- except IOError:
- self.log(4, "failed to write meta information")
+ if prep_rest == 255:
+ self.log(4, "failed to write meta information")
+ else:
+ self.log(2, "'prepare' failed: error %d" % prep_res)
NavigationInstance.instance.stopRecordService(self.record_service)
self.record_service = None
return False
virtual RESULT connectEvent(const Slot2<void,iRecordableService*,int> &event, ePtr<eConnection> &connection)=0;
#endif
virtual SWIG_VOID(RESULT) getError(int &SWIG_OUTPUT)=0;
- virtual RESULT prepare(const char *filename, time_t begTime=-1, time_t endTime=-1, int eit_event_id=-1)=0;
+ virtual RESULT prepare(const char *filename, time_t begTime=-1, time_t endTime=-1, int eit_event_id=-1, const char *name=0, const char *descr=0, const char *tags=0)=0;
virtual RESULT prepareStreaming()=0;
virtual RESULT start(bool simulate=false)=0;
virtual RESULT stop()=0;
#include <lib/service/servicedvbrecord.h>
#include <lib/base/eerror.h>
#include <lib/dvb/epgcache.h>
+#include <lib/dvb/metaparser.h>
#include <fcntl.h>
/* for cutlist */
}
}
-RESULT eDVBServiceRecord::prepare(const char *filename, time_t begTime, time_t endTime, int eit_event_id)
+RESULT eDVBServiceRecord::prepare(const char *filename, time_t begTime, time_t endTime, int eit_event_id, const char *name, const char *descr, const char *tags)
{
m_filename = filename;
m_streaming = 0;
}
}
eEPGCache::getInstance()->Unlock();
+
+ }
+ if (ret)
+ return ret;
+ else
+ {
+ eDVBMetaParser meta;
+ meta.m_time_create = begTime;
+ meta.m_ref = m_ref;
+ meta.m_data_ok = 1;
+ if (name)
+ meta.m_name = name;
+ if (descr)
+ meta.m_description = descr;
+ ret = meta.updateMeta(filename) ? -255 : 0;
}
return ret;
}
- else
- return -1;
+ return -1;
}
RESULT eDVBServiceRecord::prepareStreaming()
DECLARE_REF(eDVBServiceRecord);
public:
RESULT connectEvent(const Slot2<void,iRecordableService*,int> &event, ePtr<eConnection> &connection);
- RESULT prepare(const char *filename, time_t begTime, time_t endTime, int eit_event_id);
+ RESULT prepare(const char *filename, time_t begTime, time_t endTime, int eit_event_id, const char *name, const char *descr, const char *tags);
RESULT prepareStreaming();
RESULT start(bool simulate=false);
RESULT stop();
eServiceReferenceDVB m_ref;
ePtr<iDVBTSRecorder> m_record;
- ePtr<eConnection> m_con_record_event;
+ ePtr<eConnection> m_con_record_event;
int m_recording, m_tuned, m_error;
std::set<int> m_pids_active;