move meta file creation to c++
authorghost <andreas.monzner@multimedia-labs.de>
Wed, 22 Apr 2009 18:42:16 +0000 (20:42 +0200)
committerghost <andreas.monzner@multimedia-labs.de>
Wed, 22 Apr 2009 18:42:16 +0000 (20:42 +0200)
RecordTimer.py
lib/service/iservice.h
lib/service/servicedvbrecord.cpp
lib/service/servicedvbrecord.h

index 9f3b2ff..6075141 100644 (file)
@@ -181,24 +181,12 @@ class RecordTimerEntry(timer.TimerEntry, object):
                                if event_id is None:
                                        event_id = -1
 
                                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:
                        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
                                NavigationInstance.instance.stopRecordService(self.record_service)
                                self.record_service = None
                                return False
index e27752a..97930a7 100644 (file)
@@ -848,7 +848,7 @@ public:
        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 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;
        virtual RESULT prepareStreaming()=0;
        virtual RESULT start(bool simulate=false)=0;
        virtual RESULT stop()=0;
index 5b7b5d8..1b83a4c 100644 (file)
@@ -1,6 +1,7 @@
 #include <lib/service/servicedvbrecord.h>
 #include <lib/base/eerror.h>
 #include <lib/dvb/epgcache.h>
 #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 */
 #include <fcntl.h>
 
        /* for cutlist */
@@ -83,7 +84,7 @@ void eDVBServiceRecord::serviceEvent(int event)
        }
 }
 
        }
 }
 
-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;
 {
        m_filename = filename;
        m_streaming = 0;
@@ -133,11 +134,25 @@ RESULT eDVBServiceRecord::prepare(const char *filename, time_t begTime, time_t e
                                }
                        }
                        eEPGCache::getInstance()->Unlock();
                                }
                        }
                        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;
        }
                }
                return ret;
        }
-       else
-               return -1;
+       return -1;
 }
 
 RESULT eDVBServiceRecord::prepareStreaming()
 }
 
 RESULT eDVBServiceRecord::prepareStreaming()
index 856f92b..e70547f 100644 (file)
@@ -18,7 +18,7 @@ class eDVBServiceRecord: public eDVBServiceBase,
        DECLARE_REF(eDVBServiceRecord);
 public:
        RESULT connectEvent(const Slot2<void,iRecordableService*,int> &event, ePtr<eConnection> &connection);
        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();
        RESULT prepareStreaming();
        RESULT start(bool simulate=false);
        RESULT stop();
@@ -41,7 +41,7 @@ private:
        eServiceReferenceDVB m_ref;
        
        ePtr<iDVBTSRecorder> m_record;
        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;
        
        int m_recording, m_tuned, m_error;
        std::set<int> m_pids_active;