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=%2FNowPlaying&Recurse=Yes" But when I use my python script, I get rejected: https://192.168.1.102/TiVoConnect?Container=%2FNowPlaying&Command=QueryContainer&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=QueryContainer&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 -- http://mail.python.org/mailman/listinfo/python-list