Attempts at Manual Guide Implementation

Global guide related discussion. All Windows versions.
glugglug

Posts: 391
Joined: Thu Jun 09, 2011 1:34 am
Location:

HTPC Specs: Show details

#101

Post by glugglug » Fri Oct 02, 2015 1:36 am

My attempt to build an 8.1 version on a Win7 machine by copying the dlls was unsuccessful (when pointing the project references at the copied dlls it says they are not found).

Building the binaries using the source archive on a Win8 or 8.1 machine should create binaries for those OSes, otherwise I'd have to create VMs to build the other OS versions.

choliscott

Posts: 598
Joined: Mon Dec 19, 2011 8:56 am
Location:

HTPC Specs: Show details

#102

Post by choliscott » Fri Oct 02, 2015 4:22 am

Do you happen to know which files from Win 8.1 you need?

icepick

Posts: 51
Joined: Mon Aug 17, 2015 10:23 pm
Location:

HTPC Specs: Show details

#103

Post by icepick » Fri Oct 02, 2015 9:08 pm

You're my hero glugglug. Can you write a script that will make me as smart as you? :) :thumbup:

glugglug

Posts: 391
Joined: Thu Jun 09, 2011 1:34 am
Location:

HTPC Specs: Show details

#104

Post by glugglug » Fri Oct 02, 2015 10:34 pm

choliscott wrote:Do you happen to know which files from Win 8.1 you need?
For some reason if I copy the referenced files from win8 and point the projects to those, it won't compile on a Win7 system. So I think it actually needs to be built in 8 to make the 8 version. Going to install 8 on a VM this weekend. I actually have a spare license I had used for a bit before going back to 7 for USB incompatibility and general flakiness.

glugglug

Posts: 391
Joined: Thu Jun 09, 2011 1:34 am
Location:

HTPC Specs: Show details

#105

Post by glugglug » Sat Oct 03, 2015 3:11 am

Win8 x64 binary built: https://www.dropbox.com/s/2z2vn8qxqyl1s ... 4.zip?dl=0

Win8.1 version coming soon (after the 156 Win8 updates finish and I create another VM)

glugglug

Posts: 391
Joined: Thu Jun 09, 2011 1:34 am
Location:

HTPC Specs: Show details

#106

Post by glugglug » Sun Oct 04, 2015 5:07 am

Win8.1 binary built: https://www.dropbox.com/s/v2vivfi9j3ks8 ... 4.zip?dl=0

I think I've found a better way to go about this......
Before writing the bulk channel modification app, I had tried to change the lineups associated with the merged lineup (aka the channel list shown in the guide), so that it would automatically pick up changes to those lineups without needing to resync to pick up new channels, but failed.

Then I remembered that during TV setup it asks you which lineup to associate *with each type of tuner*. Looking through the tuner device properties, I found where the association between the tuner and a lineup is made, and successfully updated it, so that changes to the channel list (not just the scheduled shows) in the MXF are automatically picked up. As an added benefit, if done this way, leaving the normal guide downloads enabled won't cause any channels to revert, and the lineup is actually assigned per tuner (not per tuner type), so you could do something like associating some tuners to the Rovi guide with others on the Zap2It guide.

Should have an app to do this soon. Will still need to use BSEPG rather than MCImportXML so that the channel numbers end up there, for now.

Mike88

Posts: 549
Joined: Wed Jun 20, 2012 7:50 am
Location:

HTPC Specs: Show details

#107

Post by Mike88 » Mon Oct 05, 2015 8:29 am

I had 2 channels which had intermittent Rovi guide data. One now has steady descriptions which is good. Unfortunately the other is now always without descriptions. And the late night talk shows still do not list guests.

I also have a Dish DVR which has an OTA tuner so I can use it to record OTA or to just look up descriptions. So I'm sort of on the fence if it's worth trying an alternate guide source. I recall when WMC used Zap2it that it's guide was slightly different than Dish's guide which uses Gracenote/Tribune Media Services which is the same data Zap2it uses.

I was curious how Rovi compared to Dish/Gracenote/Tribune compared to Zap2it and looked at “Blindspot” on NBC on Monday. The guide descriptions are similar but definitely different. The Dish description is the shortest. Both Rovi and Zap2it add additional but different information.

But why would Zap2it be different than Dish when they both use data from Tribune/Gracenote? Is one of them using or not using in band data?

Haba

Posts: 46
Joined: Thu Jan 24, 2013 4:17 pm
Location:

HTPC Specs: Show details

#108

Post by Haba » Mon Oct 05, 2015 9:42 pm

@glugglug I wonder for those of us receiving guide data with proper channel lineups but not the incremental updates if automating a daily running of ObjectStoreRecoveryTask would suffice? What are the downsides to this approach?

glugglug

Posts: 391
Joined: Thu Jun 09, 2011 1:34 am
Location:

HTPC Specs: Show details

#109

Post by glugglug » Mon Oct 05, 2015 11:44 pm

Had to search a bit to figure out what you were referring to. I'm not sure... I think the recovery task reloads will cause your guide to get reindexed? If so, this will make the search for shows miss some things until the reindex completes, and could prevent scheduled recordings immediately after the scheduled task. I think it should be OK if it is scheduled at least an hour before anything you want to record, like maybe run it at 3am?

Also wondering if this is what the scheduled optimization setting in the UI is.

RyC

Posts: 724
Joined: Tue Aug 21, 2012 10:21 pm
Location:

HTPC Specs: Show details

#110

Post by RyC » Tue Oct 06, 2015 12:25 am

ObjectStoreRecoveryTask apparently wipes the connection between recordings and its series, so you'll lose the "record series" button from recordings if that matters to you

Scheduled optimization is not the ObjectStoreRecoveryTask at all, IIRC, there were some memory leaks that were happening somewhere so instead of fixing the problem, Microsoft just decided to restart the WMC services (hence why it says nothing can be happening during optimization). Someone correct me if I'm wrong :)

glugglug

Posts: 391
Joined: Thu Jun 09, 2011 1:34 am
Location:

HTPC Specs: Show details

#111

Post by glugglug » Tue Oct 06, 2015 12:05 pm

RyC wrote:ObjectStoreRecoveryTask apparently wipes the connection between recordings and its series, so you'll lose the "record series" button from recordings if that matters to you

Scheduled optimization is not the ObjectStoreRecoveryTask at all, IIRC, there were some memory leaks that were happening somewhere so instead of fixing the problem, Microsoft just decided to restart the WMC services (hence why it says nothing can be happening during optimization). Someone correct me if I'm wrong :)
I think you're right. From https://msdn.microsoft.com/en-us/librar ... 2147217396, the recovery task restores to last known good backup, so it wouldn't be what you want.

Haba

Posts: 46
Joined: Thu Jan 24, 2013 4:17 pm
Location:

HTPC Specs: Show details

#112

Post by Haba » Tue Oct 06, 2015 4:37 pm

I come upon this procedure from others missing guide details for ncaa football. I have used it once with success fixing most of the series details as well. The missing record series button is not an issue since there are other ways to start series recordings. Others perhaps outside the U.S. have reported issues with no guide data at all afterwards.

glugglug

Posts: 391
Joined: Thu Jun 09, 2011 1:34 am
Location:

HTPC Specs: Show details

#113

Post by glugglug » Thu Oct 08, 2015 10:37 pm

I've been looking into the schedulesdirect API, or at least making my own XML to MXF converter to have better control and get rid of BSEPG (too many moving parts with these different scheduled tasks). Discovered two things in the process:

1. The SchedulesDirect API changes a couple times a year. The old APIs stop receiving new data sometimes less than a year after their introduction. This has me concerned about the longetivity of alternate guide data solutions.

2. The XMLTV standard is anything but. There aren't separate fields for channel number, callsigns, affiliates, matchnames, etc, so everybody just lists these as multiple "names" in different orders. The episode ID format is not defined (up to the provider) nor is a way to distinguish movies from series. Lots of other metadata not defined in the dtd and ends up hacked in different ways by different xmltv producers as well.

Even using just the mc2xml grabber pulling schedulesdirect data with the no longer documented and I think maybe soon to be replaced XML API vs using the same app to download with the json API results in 2 very different xmltv files. One has channel affiliates , the other has guide image URLs and much longer show descriptions, not sure what else is different.

Really surprising that this isn't standardized by now.

jbf154

Posts: 55
Joined: Mon Jan 14, 2013 7:41 pm
Location:

HTPC Specs: Show details

#114

Post by jbf154 » Fri Oct 09, 2015 1:27 am

You don't need to go from SD to XMLTV to MXF. You can skip XMLTV. I'm actually considering implementing this myself just like you are. I think the challenge is just creating the correct provider in MXF so the CableCARD is mapped to it.

glugglug

Posts: 391
Joined: Thu Jun 09, 2011 1:34 am
Location:

HTPC Specs: Show details

#115

Post by glugglug » Fri Oct 09, 2015 4:26 am

There is a Microsoft.MediaCenter.Store.MXF.MXFExporter class in mcstore.dll you can use to write your current guide to an MXF file (which will be HUGE, because it will include all lineups for your zipcode, not just the one you are using).

You can look in there and see the provider IDs, but I think this means you'll be overwriting your downloaded guide data, which seems kludgy? And I'm not sure it would update the channel list the way you think. I wrote an app which successfully changes which lineup(s) are associated with each tuner device, so BSEPG rather than Rovi shows up in the "About Guide" screen. This doesn't usually actually update most of the listing assignments on channels in your guide (just ones that change metadata between MXF reloads I think?). There are some OnNotifyChannelsAdded, OnNotifyChannelsRemoved, OnNotifyChannelsUpdated/etc. methods for the lineups but I get access violation exceptions attempting to call these, at least as myself, even elevated (Kind of wondering if they would work as NETWORK_SERVICE that mcupdate runs as...)

I should also note the program IDs from SchedulesDirect do not match the ones in your Rovi guide. Do you plan on trying to heuristically map the IDs from one ID space to the other, so as not to have to recreate all your series recordings?

Another fun thing.... WMC sometimes doesn't show you all the imported guide data -- there is a registry key specifying the guide data end date (how far to the right it lets you scroll), which is set by mcupdate to reflect where the downloaded guide data ends, even if your data loaded with loadmxf goes farther. HKLM\Software\Microsoft\Windows\CurrentVersion\Media Center\Service\EPG\endTime -- whatever is building and loading the mxf files will want to update that key.

glugglug

Posts: 391
Joined: Thu Jun 09, 2011 1:34 am
Location:

HTPC Specs: Show details

#116

Post by glugglug » Sat Oct 10, 2015 3:41 am

I've been playing with the SchedulesDirect API some more... maybe less of a moving target than I thought. As far as I can tell, the main difference between the last couple versions is the version #, which is part of all the API urls. Thinking of making the schedulesdirect API version a setting, so it can just be updated in the config file as needed.

There is FAR more data there than what any of the XMLTV grabbers produce. including some things that it's a real shame we don't have any plugins taking advantage of, like ClearQAM lineups built from information collected by SiliconDust tuners, and lists of similar shows for TiVO style recommendations. Lots of work to gather it all though.

audinutt

Posts: 114
Joined: Thu May 14, 2015 2:43 am
Location:

HTPC Specs: Show details

#117

Post by audinutt » Sun Oct 11, 2015 7:44 pm

glugglug wrote:I've been playing with the SchedulesDirect API some more... maybe less of a moving target than I thought. As far as I can tell, the main difference between the last couple versions is the version #, which is part of all the API urls. Thinking of making the schedulesdirect API version a setting, so it can just be updated in the config file as needed.

There is FAR more data there than what any of the XMLTV grabbers produce. including some things that it's a real shame we don't have any plugins taking advantage of, like ClearQAM lineups built from information collected by SiliconDust tuners, and lists of similar shows for TiVO style recommendations. Lots of work to gather it all though.
This wound be very nice.

User avatar
rmeden

Posts: 67
Joined: Wed Jul 29, 2015 3:39 pm
Location: Schedules Direct

HTPC Specs: Show details

#118

Post by rmeden » Sun Oct 11, 2015 7:55 pm

glugglug wrote:I've been playing with the SchedulesDirect API some more..
Please refer to it as the Schedules Direct SD-JSON API. There's a second legacy one (SD-DD) and I'm trying to have everyone know what they use. It makes it hard to troubleshoot problems when we don't know which folks are talking about.

Post Reply