I'm trying to access the XML version of my Tivo now playing list with
python. It uses auth digest HTTP authentication. I could really use
some help!
I'm able to get this page using curl:
curl --dump-header tivoHeaders --insecure --anyauth --user tivo:8000008
"https://192.168.1.102/TiVoConnect?Command=QueryContainer&Container=%2FNo wPlaying&Recurse=Yes"
But
when I use my python script, I get rejected:
https://192.168.1.102/TiVoConnect?Co...er&Recurse=Yes
Error
401
Server: tivo-httpd-1:7.1b-01-2:140
Set-Cookie: sid=DEC2D78EABF48A6D; path=/; expires="Saturday,
16-Feb-2013 00:00:00 GMT";
WWW-Authenticate: Digest realm="TiVo DVR", nonce="FD08EF226909CA85", qop="auth"
Content-Length: 31
Content-Type: text/html
Connection: close
Digest realm="TiVo DVR", nonce="FD08EF226909CA85", qop="auth"
I've scrounged for examples out there and the couple that I've found
just don't seem to work for me..
Here's one way I've tried:
=====================================
import urllib2
theurl =
"192.168.1.102/TiVoConnect?Container=%2FNowPlaying&Command=QueryC ontainer&Recurse=Yes"
print
theurl
protocol = 'https://'
username = 'tivo'
password = '8000008'
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, theurl, username, password)
authhandler = urllib2.HTTPDigestAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
try:
pagehandle = urllib2.urlopen(protocol + theurl)
except IOError, e:
if hasattr(e, 'code'):
if e.code != 401:
print 'We got another error'
print e.code
else:
print "Error 401"
print e.headers
print e.headers['www-authenticate']
=======================================
I get 401 every time!
This was taken from an example online almost verbatim, the only major
thing I changed was HTTPBasicAuthHandler --> HTTPDigestAuthHandler. Any
ideas or help would be greatly appreciated!
Thanks,
-John