通过http连接仅获取mp3文件的最后128个字节

时间:2011-01-27 08:28:10

标签: python http tags mp3

我一直在寻找python如何通过http连接仅获取mp3文件的最后128个字节的示例。是否可以在python中通过HTTP进行范围特定的文件访问?

3 个答案:

答案 0 :(得分:9)

是的,可以使用urllib2通过HTTP完成。

class HTTPRangeHandler(urllib2.BaseHandler):

    def http_error_206(self, req, fp, code, msg, hdrs):
        # Range header supported
        r = urllib.addinfourl(fp, hdrs, req.get_full_url())
        r.code = code
        r.msg = msg
        return r

    def http_error_416(self, req, fp, code, msg, hdrs):
        # Range header not supported
        raise URLError('Requested Range Not Satisfiable')

opener = urllib2.build_opener(HTTPRangeHandler)
urllib2.install_opener(opener)

rangeheader = {'Range':'bytes=-128'}
req = urllib2.Request('http://path/to/your/file.mp3',headers=rangeheader)
res = urllib2.urlopen(req)
res.read()

以下SO问题(Python Seek on remote file)已经询问/回答了这个问题。 使用相同的解决方案时,您只需将字节设置为-128。 (HTTP手册描述了当您执行值时,它是响应结束时的值数量)

答案 1 :(得分:5)

您可以尝试仅使用Range header field

请求最后128个字节
Range: bytes=-128

答案 2 :(得分:1)

尝试httpheader模块(请参阅“使用http范围请求”示例)。