Index: samesite.py ================================================================== --- samesite.py +++ samesite.py @@ -244,16 +244,22 @@ if range[0] == None: break ranges += '{}-{}'.format(range[0], range[1] - 1), my_headers['range'] = 'bytes=' + ','.join(ranges) + headers['Accept-Encoding'] = 'gzip' request = urllib2.Request(request, headers = my_headers) source = urllib2.urlopen(request) new_record = {} new_record['_parts'] = record['_parts'] headers = source.info() + + if 'content-encoding' in headers and headers['content-encoding'] == 'gzip': + import gzip, StringIO + buf = StringIO.StringIO(source.read()) + source = gzip.GzipFile(fileobj=buf) # stripping unneeded headers (XXX make this inplace?) for header in headers: if header in desc_fields: #if header == 'Pragma' and headers[header] != 'no-cache': @@ -327,10 +333,11 @@ temp_file = open(temp_name, 'r+b') if requested_ranges == None and needed == None: needed = new_record['_parts'] needed.rewind() while True: + # XXX can make this implicit - one request per range (start, end) = needed.pop() if start == None: break stream_last = start old_record = copy.copy(new_record)