File: file.py

package info (click to toggle)
python-scrapy 0.8-3
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 2,904 kB
  • ctags: 2,981
  • sloc: python: 15,349; xml: 199; makefile: 68; sql: 64; sh: 34
file content (20 lines) | stat: -rw-r--r-- 664 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
"""Download handler for file:// scheme"""
from __future__ import with_statement

from urllib import url2pathname

from twisted.internet import defer
from scrapy.core.downloader.responsetypes import responsetypes


def download_file(request, spider):
    """Return a deferred for a file download."""
    return defer.maybeDeferred(_all_in_one_read_download_file, request, spider)

def _all_in_one_read_download_file(request, spider):
    filepath = url2pathname(request.url.split("file://")[1])
    with open(filepath) as f:
        body = f.read()
    respcls = responsetypes.from_args(filename=filepath, body=body)
    return respcls(url=request.url, body=body)