add basic support for file:// URLs

this allows you to feed local files into the recursive extractor
This commit is contained in:
Mike Fährmann
2016-12-05 18:27:36 +01:00
parent 07ffab04c3
commit 0989cd2430
2 changed files with 32 additions and 0 deletions

30
gallery_dl/adapter.py Normal file
View File

@@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
"""Custom requests adapters"""
from requests.adapters import BaseAdapter
from requests import Response, codes
import io
class FileAdapter(BaseAdapter):
def send(self, request, **kwargs):
path = request.url[7:]
response = Response()
try:
response.raw = open(path, "rb")
response.raw.release_conn = response.raw.close
response.status_code = codes.ok
except IOError:
response.raw = io.BytesIO()
response.status_code = codes.bad_request
return response
def close(self):
pass

View File

@@ -10,6 +10,7 @@
import re
from .common import Extractor, Message
from .. import adapter
class RecursiveExtractor(Extractor):
@@ -21,6 +22,7 @@ class RecursiveExtractor(Extractor):
def __init__(self, match):
Extractor.__init__(self)
self.session.mount("file://", adapter.FileAdapter())
self.url = match.group(1)
def items(self):