[mythtv-users] tv_grab_au: ninemsn obfuscating data

Michael Cowell michael at mousewasher.dk
Tue Nov 8 19:34:21 EST 2005


I took this patch and adapted it for use with the immir 0.40 tv_grab 
release.

It's not very robust - small changes to ninemsn will break it. I'll send 
the patch to immir and he can whack up a good one. But for the moment, 
this seems to get me guide data.

Thanks to jgs for the deobfuscating regexp.

For those that don't know how to use patch. Something like:

    patch /usr/bin/tv_grab_au < tv_grab_au.immir.patch

should work.

Michael

first last wrote:

> Haven't seen this mentioned on the list but ninemsn seems to be using
> JavaScript to hide data.  The attached patch to the old tv_grab_au does
> the trick for me.  Tried upgrading to tv_grab_au from immir but couldn't
> be arsed fighting through dependency hell.
>
> -jgs
>
>------------------------------------------------------------------------
>
>_______________________________________________
>mythtv-users mailing list
>mythtv-users at mythtv.org
>http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-users
>  
>

-------------- next part --------------
*** /home/michael/tv_grab_au	Sat Aug 20 12:09:38 2005
--- tv_grab_au	Wed Nov  9 10:29:48 2005
***************
*** 218,223 ****
--- 218,230 ----
    for my $service (@{$conf->{services}}) {
  
      my $guidedata = get_guide_page($service, dmY($date6am)) or next;
+ 
+     # De-obfuscate
+     $guidedata =~ s/jz\('([^']+)'\);/jz($1)/eg;
+     # Also need to remove useless script headers
+     $guidedata =~ s/<SCRIPT src=\"dcr.js\"><\/SCRIPT><SCRIPT Language=\"Javascript\">/""/eg;
+     $guidedata =~ s/^<\/SCRIPT><NOSCRIPT>.*<\/NOSCRIPT>/""/eg;
+     
      my $tree      = HTML::TreeBuilder->new_from_content($guidedata);
  
      for ($tree->look_down('_tag' => 'table', 'class' => 'tv')) {
***************
*** 257,262 ****
--- 264,272 ----
  	  my @link = @{ $e->extract_links() };
  	  die "too many links:\n" . $html if @link > 1;
  	  my $url = $NMSN . $link[0]->[0];
+           # NMSN people have some javascript to generate new links, with cu
+           # in them instead of closeup. This should fix that
+           $url =~ s/closeup/cu/;
  
  	  # --- check (pid, row, rowspan, title) against old cached data
  	  my $cache_id = "$date:$pid:$row:$rowspan:$title";
***************
*** 410,415 ****
--- 420,437 ----
    return $want;
  }
  
+ # --- deobfuscator from jollygoodshow at hotmail.com contributed to 
+ #     mythuser list
+ sub jz {
+        my ($z) = @_;
+        my ($y);
+ 
+        $z =~ s/%(..)/chr(hex($1))/eg;
+        ($y = $z) =~ s/(.)/chr(ord($1) - 1)/eg;
+        $y =~ s/%(..)/chr(hex($1))/eg;
+        return $y;
+ }
+ 
  # --- get details from the closeup page for given show
  sub get_closeup_details {
  


More information about the mythtv-users mailing list