[HELP US] Getting those DVB EPG issues fixed (1 Viewer)

erosco

MP Donator
  • Premium Supporter
  • June 25, 2007
    122
    20
    Home Country
    Thankyou very much gemx.. will try it out!

    Addendum - Installed 5 mins ago with both the always fill gaps and always check for updates sections ticked.. had a complete guide in minutes.. can't thank you enough gemx.. excellent work!
     

    Nietschy

    New Member
    January 3, 2008
    3
    0
    Home Country
    Germany Germany
    I got some issues with my EPG. Maybe you can help me to fix these. I try to explain whats happening:
    I am using DVB-C with NetCologne multicable in germany. This Provider seems to make something really wrong with the EPG of the private channels (not country owned).

    I am using a recent SVN 17645.

    this is some code from my epg.log:

    Code:
    2008-03-03 18:47:45.017578 [5]: EPG: grabber initialized for 19 transponders..
    2008-03-03 18:52:36.704578 [9]: EPG: grabber stopped..
    2008-03-03 18:56:58.610578 [5]: dvb:mhw ready MHW 0 titles found
    2008-03-03 18:56:58.610578 [5]: dvb:dvb ready.EPG 86 channels
    2008-03-03 18:56:58.716578 [5]: TimeshiftingEpgGrabber: OnEPGReceived got 78 channels
    ...
    2008-03-03 18:57:06.335578 [EPG Update thread]: TimeshiftingEpgGrabber: no channel found for networkid:0x85 transportid:0x5 serviceid:0x308
    2008-03-03 18:57:06.335578 [EPG Update thread]:                    -> 03.03.2008 05:00:00-03.03.2008 06:00:00  GIGA Classics
    2008-03-03 18:57:06.335578 [EPG Update thread]:                    -> 03.03.2008 06:00:00-03.03.2008 07:00:00  WOW!
    2008-03-03 18:57:06.336578 [EPG Update thread]:                    -> 03.03.2008 07:00:00-03.03.2008 08:00:00  CHAMPS
    2008-03-03 18:57:06.336578 [EPG Update thread]:                    -> 03.03.2008 08:00:00-03.03.2008 08:30:00  ROFL TV (Wdh.)
    2008-03-03 18:57:06.336578 [EPG Update thread]:                    -> 03.03.2008 08:30:00-03.03.2008 09:00:00  Spam Deluxe (Wdh.)
    2008-03-03 18:57:06.336578 [EPG Update thread]:                    -> 03.03.2008 09:00:00-03.03.2008 09:30:00  ASSMAN (Wdh.)
    2008-03-03 18:57:06.336578 [EPG Update thread]:                    -> 03.03.2008 09:30:00-03.03.2008 10:00:00  GIGA LIGA LIVE (Wdh.)
    ...
    2008-03-03 18:57:11.980578 [EPG Update thread]: TimeshiftingEpgGrabber: Finished updating the database.

    As you can see it says that it can't map this channel. But it should, cuz this channel is called GIGA and is activated in my EPG-Grabber list. I think the provider sends wrong EPG information like networkid, transportid or serviceid. I tried to set these values (converted to DEC values) for my channel, But then I lost the right tuning (of course)...

    Is or will there be any way to manually map a EPG info to a real channel? Like: "if you get EPG info for: "networkid:0x85 transportid:0x5 serviceid:0x308" then map this to channel GIGA #306" ?

    Any reply will be appreciated.
     

    lkuech

    Retired Team Member
  • Premium Supporter
  • February 16, 2007
    576
    83
    52
    Hamburg
    Home Country
    Germany Germany
    Hi again Gemx.

    Did you see my post on the last side?

    I've looked in the code. And would like to discuss my finding with you.
    The reason why not all entries become updated like I have mentioned in my post seems to be located in the BusinessLayer.cs. In the GetProgramExists method is a line like the following:

    Code:
    string sub = String.Format("(StartTime = '{0}' and EndTime = '{1}')", startTime.ToString(GetDateTimeString(), mmddFormat), endTime.ToString(GetDateTimeString(), mmddFormat));

    Is it logically that this returns only epg entries that do have the same start and end times like the one that should be insert. In my example the start time of the entry that should be inserted was different and because of this the old entry was not updated ... so we end up with two entries for the same time and channel.

    My dev pc is out of order right now (hdd crash) so I can't test it myself, but I guess the following line should avoid the problem.

    Code:
    string sub = String.Format("( (StartTime >= '{0}' and StartTime < '{1}') or ( EndTime > '{0}' and EndTime <= '{1}' ) )", startTime.ToString(GetDateTimeString(), mmddFormat), endTime.ToString(GetDateTimeString(), mmddFormat));

    On this way we should always receive and update the first epg entry in that time range. That will avoid problems I have noticed and some more.

    The only situation that might still cause some trouble is the following:

    lets say the database contains 3 or 4 short shows of 15 minutes length each. The first show start at 20:00.
    Because of an change in the program this three short shows should be replaced by one long... which start at 20:00 and ends at 20:45...

    In such an case we will only update the first old entry and the other two will remain in the database and mess up the tv guide and mini epg etc...

    So a additional check if there is more than one epg entry returned by the GetProgramExists and a deletion of the remaining entries should help here.

    I hope you can follow my thoughts ;)

    CU
    Lars
     

    EMKO

    Portal Pro
    May 4, 2006
    175
    3
    Has anyone here go the epg to work with bell? i couldn't find the channel to put it on but if i put it on any channel on the first tp i see the memory going up slowly for many minutes and it says grabbing epg but after all that is done i looked in media portal and it still doesn't show any epg.
     

    dalmer

    Portal Pro
    October 9, 2007
    59
    4
    Home Country
    Canada Canada
    Bell's epg does work, it's exactly the same as DN's implementation. Turn on the timeshifting epg grabber (you may need to restart the tv service if you have a svn older than the last few builds). Then tune to channel NBC-E (280). It should come in.
     

    EMKO

    Portal Pro
    May 4, 2006
    175
    3
    how did u figure it was that channel 280?when i checked lngsat it says some strange tp and has porn on it lol? well thanks i will give that a try.oh and im talking about 82 and 91 wich one is for his.
     

    dalmer

    Portal Pro
    October 9, 2007
    59
    4
    Home Country
    Canada Canada
    Lyngsat says WHDH-TV on 91 instead of NBC-E but if you look under the Service ID column (SID) it does say 280.. :)

    SID = Channel Number in North America
     

    EMKO

    Portal Pro
    May 4, 2006
    175
    3
    i am still confused how you figure out that channel 280 is the one with EPG. i thought i had to get the epg from
    @ EPG 36861. Does Sattelight work like this you recive all the TP data? and the card just takes out each channel and u watch one so which ever channel you go to on TP 12311 you will get the EPG? because i did try to leave it on payperview channel 6 and it didn't work but once i get home i will try 280.

    How about nimiq 2 i see that the epg is on TP 9 12341 but it has no channels.
     

    gemx

    Retired Team Member
  • Premium Supporter
  • October 31, 2006
    1,972
    539
    Home Country
    Germany Germany
    Hi again Gemx.

    Did you see my post on the last side?

    I've looked in the code. And would like to discuss my finding with you.
    The reason why not all entries become updated like I have mentioned in my post seems to be located in the BusinessLayer.cs. In the GetProgramExists method is a line like the following:

    Code:
    string sub = String.Format("(StartTime = '{0}' and EndTime = '{1}')", startTime.ToString(GetDateTimeString(), mmddFormat), endTime.ToString(GetDateTimeString(), mmddFormat));

    Is it logically that this returns only epg entries that do have the same start and end times like the one that should be insert. In my example the start time of the entry that should be inserted was different and because of this the old entry was not updated ... so we end up with two entries for the same time and channel.

    My dev pc is out of order right now (hdd crash) so I can't test it myself, but I guess the following line should avoid the problem.

    Code:
    string sub = String.Format("( (StartTime >= '{0}' and StartTime < '{1}') or ( EndTime > '{0}' and EndTime <= '{1}' ) )", startTime.ToString(GetDateTimeString(), mmddFormat), endTime.ToString(GetDateTimeString(), mmddFormat));

    On this way we should always receive and update the first epg entry in that time range. That will avoid problems I have noticed and some more.

    The only situation that might still cause some trouble is the following:

    lets say the database contains 3 or 4 short shows of 15 minutes length each. The first show start at 20:00.
    Because of an change in the program this three short shows should be replaced by one long... which start at 20:00 and ends at 20:45...

    In such an case we will only update the first old entry and the other two will remain in the database and mess up the tv guide and mini epg etc...

    So a additional check if there is more than one epg entry returned by the GetProgramExists and a deletion of the remaining entries should help here.

    I hope you can follow my thoughts ;)

    CU
    Lars

    Nice idea. I just committed the changes.
    :D
     

    lkuech

    Retired Team Member
  • Premium Supporter
  • February 16, 2007
    576
    83
    52
    Hamburg
    Home Country
    Germany Germany
    Ah cool thanks! :D

    I just took a look in your code:
    Code:
              if (epgs.Count > 0)
              {
                prog = (TvDatabase.Program)epgs[0];
                for (int idx = 0; idx < epgs.Count - 1;idx++)
                  ((TvDatabase.Program)epgs[1]).Delete();
              }
    If I read that code right, then you delete all entries that are returned by the GetProgramExists method.
    This will work well... in result. But I guess it will increase the database load and the size of the lock file of the database because even if there is no change in the epg, every entry is deleted and reinserted every time.

    I guess it would be better if we delete all entries except the first. This should be valid in all cases.

    CU
    Lars
     

    Users who are viewing this thread

    Top Bottom