Python: How to download-Datei mit Reihe von bytes?

Ich möchte die download-Datei in multi-thread-Modus und ich habe folgenden code hier:

#!/usr/bin/env python

import httplib


def main():
    url_opt = '/film/0d46e21795209bc18e9530133226cfc3/7f_Naruto.Uragannie.Hroniki.001.seriya.a1.20.06.13.mp4'

    headers = {}
    headers['Accept-Language'] = 'en-GB,en-US,en'
    headers['Accept-Encoding'] = 'gzip,deflate,sdch'
    headers['Accept-Charset'] = 'max-age=0'
    headers['Cache-Control'] = 'ISO-8859-1,utf-8,*'
    headers['Cache-Control'] = 'max-age=0'
    headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 5.1)'
    headers['Connection'] = 'keep-alive'
    headers['Accept'] = 'text/html,application/xhtml+xml,application/xml,*/*'
    headers['Range'] = ''

    conn = httplib.HTTPConnection('data09-cdn.datalock.ru:80')
    conn.request("GET", url_opt, '', headers)

    print "Request sent"

    resp = conn.getresponse()
    print resp.status
    print resp.reason
    print resp.getheaders()

    file_for_wirte = open('cartoon.mp4', 'w')
    file_for_wirte.write(resp.read())

    print resp.read()

    conn.close()


if __name__ == "__main__":
    main()

Hier ist die Ausgabe:

Request sent
200
OK
[('content-length', '62515220'), ('accept-ranges', 'bytes'), ('server', 'nginx/1.2.7'), ('last-modified', 'Thu, 20 Jun 2013 12:10:43 GMT'), ('connection', 'keep-alive'), ('date', 'Fri, 14 Feb 2014 07:53:30 GMT'), ('content-type', 'video/mp4')]

Dieser code funktionieren perfekt, aber ich verstehe nicht, durch die Dokumentation, wie download-Datei mit reicht. Wenn Sie sehen, dass die Ausgabe der Antwort, der server bietet:

 ('content-length', '62515220'), ('accept-ranges', 'bytes')

Unterstützt range in 'Byte' Einheit, in der Größe des Inhalts ist 62515220

Jedoch in dieser Anfrage ganze Datei heruntergeladen. Aber, was ich tun soll zunächst ein server-Informationen wie kann das unterstützt werden kann, mithilfe von http-range-Anfragen und die Größe des Inhalts der Datei mit dem aus dem Download? Und wie kann ich http-Abfrage mit Auswahl (z.B.: 0~25000)?

  • Dies könnte helfen: stackoverflow.com/q/8293687/2319400
  • Siehe hier: stackoverflow.com/questions/1798879/... Andere Bibliothek, aber sollte Sie auf der richtigen Spur.
  • Vielen Dank für Ihren Kommentar. Ich sah schon die Antwort. Außerdem habe ich die capture-Pakete mit wireshark. Es ist jedoch nicht klar, wie zu erkennen, hat server-support-Auswahl. Ich meine, gibt es Methode zu überprüfen, bedeutet Datei heruntergeladen werden kann mit range-Auswahl oder nicht? Es gibt Anwendungen, die Unterstützung für multi-thread-downloads mit Auswahl jedoch, wenn der server Sie nicht unterstützt, noch versucht, die download-Dateien in anderen threads (d.h., flashgot, reget und etc.). Jedoch, wie ich erreichen kann server-oder Datei-Informationen, wo ich kann-lookup-Bereich support-Informationen?
  • Vielen Dank für Ihren Kommentar. Wenn Funktionen, die nicht von httplib wird nicht genug sein, werde ich trotzig in die Bibliothek, die Sie unterstützt.
InformationsquelleAutor Khamidulla | 2014-02-14
Schreibe einen Kommentar