Index: libs/libmythtv/eit.h
===================================================================
--- libs/libmythtv/eit.h	(revision 12273)
+++ libs/libmythtv/eit.h	(working copy)
@@ -59,7 +59,8 @@
             const QDateTime &_start,     const QDateTime &_end,
             uint             _fixup,
             bool             _captioned, bool _subtitled,
-            bool             _stereo,    bool _hdtv) :
+            bool             _stereo,    bool _hdtv,
+            const QString   &_seriesId,  const QString   &_programId) :
         title(_title),           subtitle(_subtitle),
         description(_desc),
         category(_category),
@@ -70,7 +71,9 @@
         partnumber(0),           parttotal(0),
         syndicatedepisodenumber(QString::null),
         fixup(_fixup),           flags(0),
-        category_type(_category_type)
+        category_type(_category_type),
+        seriesId(_seriesId),
+        programId(_programId)
     {
         flags |= (_captioned) ? kCaptioned : 0;
         flags |= (_subtitled) ? kSubtitled : 0;
@@ -136,6 +139,8 @@
     uint32_t      fixup;
     unsigned char flags;
     unsigned char category_type;
+    QString       seriesId;
+    QString       programId;
 
     static const unsigned char kCaptioned = 0x1;
     static const unsigned char kSubtitled = 0x2;
Index: libs/libmythtv/eit.cpp
===================================================================
--- libs/libmythtv/eit.cpp	(revision 12273)
+++ libs/libmythtv/eit.cpp	(working copy)
@@ -135,7 +135,8 @@
         "       closecaptioned, subtitled,     stereo,      hdtv, "
         "       partnumber,     parttotal, "
         "       syndicatedepisodenumber, "
-        "       airdate,        originalairdate "
+        "       airdate,        originalairdate, "
+        "       seriesid,       programid "
         "FROM program "
         "WHERE chanid   = :CHANID AND "
         "      manualid = 0       AND "
@@ -167,7 +168,10 @@
                      query.value(5).toDateTime(), query.value(6).toDateTime(),
                      fixup,
                      query.value(7).toBool(),     query.value(8).toBool(),
-                     query.value(9).toBool(),     query.value(10).toBool());
+                     query.value(9).toBool(),     query.value(10).toBool(),
+                     QString::fromUtf8(query.value(16).toString()),
+                     QString::fromUtf8(query.value(17).toString())
+                     );
 
         prog.partnumber = query.value(11).toUInt();
         prog.parttotal  = query.value(12).toUInt();
@@ -338,7 +342,8 @@
         "    partnumber     = :PARTNO,    parttotal     = :PARTTOTAL, "
         "    syndicatedepisodenumber = :SYNDICATENO, "
         "    airdate        = :AIRDATE,   originalairdate=:ORIGAIRDATE, "
-        "    listingsource  = :LSOURCE "
+        "    listingsource  = :LSOURCE, "
+        "    seriesid       = :SERIESID,  programid     = :PROGRAMID "
         "WHERE chanid    = :CHANID AND "
         "      starttime = :OLDSTART ");
 
@@ -361,6 +366,8 @@
     query.bindValue(":AIRDATE",     lairdate.isEmpty() ? "0000" : lairdate);
     query.bindValue(":ORIGAIRDATE", loriginalairdate);
     query.bindValue(":LSOURCE",     1);
+    query.bindValue(":SERIESID",    seriesId.utf8());
+    query.bindValue(":PROGRAMID",   programId.utf8());
 
     if (!query.exec())
     {
Index: libs/libmythtv/eithelper.cpp
===================================================================
--- libs/libmythtv/eithelper.cpp	(revision 12273)
+++ libs/libmythtv/eithelper.cpp	(working copy)
@@ -349,6 +349,24 @@
             category_type = content.GetMythCategory(0);
         }
 
+        desc_list_t contentIds =
+            MPEGDescriptor::FindAll(list, DescriptorID::dvb_content_identifier);
+        QString programId = "", seriesId = "";
+        for (uint j = 0; j < contentIds.size(); j++)
+        {
+            const unsigned char * desc(contentIds[j]);
+            if (desc[2] == 0xc4)
+            {
+                for (uint k = 0; k < desc[3]; k++)
+                    programId += (char)desc[k+4];
+            }
+           else if (desc[2] == 0xc8)
+           {
+                for (uint k = 0; k < desc[3]; k++)
+                    seriesId += (char)desc[k+4];
+           }
+        }
+
         uint chanid = GetChanID(
             eit->ServiceID(), eit->OriginalNetworkID(), eit->TSID());
 
@@ -364,7 +382,8 @@
                                      category,  category_type,
                                      starttime, endtime,       fix,
                                      false,     subtitled,
-                                     stereo,    hdtv);
+                                     stereo,    hdtv,
+                                     seriesId,  programId);
         db_events.enqueue(event);
     }
 }
