move FileAdapter definition into recursive.py

pull/133/head
Mike Fährmann 6 years ago
parent 31a5c7c2c0
commit 529aa21dd9
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -1,5 +1,7 @@
# Changelog
## Unreleased
## 1.5.3 - 2018-09-14
- Added support for:
- `hentaicafe` - https://hentai.cafe/ ([#101](https://github.com/mikf/gallery-dl/issues/101))

@ -1,31 +0,0 @@
# -*- 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

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright 2015-2017 Mike Fährmann
# Copyright 2015-2018 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
@ -8,9 +8,10 @@
"""Recursive extractor"""
import re
from .common import Extractor, Message
from .. import extractor, adapter, util
from .. import extractor, util
import requests
import re
class RecursiveExtractor(Extractor):
@ -23,7 +24,7 @@ class RecursiveExtractor(Extractor):
def __init__(self, match):
Extractor.__init__(self)
self.session.mount("file://", adapter.FileAdapter())
self.session.mount("file://", FileAdapter())
self.url = match.group(1)
def items(self):
@ -34,3 +35,23 @@ class RecursiveExtractor(Extractor):
with extractor.blacklist(blist):
for match in re.finditer(r"https?://[^\s\"']+", page):
yield Message.Queue, match.group(0), {}
class FileAdapter(requests.adapters.BaseAdapter):
"""Requests adapter for local files"""
def send(self, request, **kwargs):
response = requests.Response()
try:
response.raw = open(request.url[7:], "rb")
except OSError:
import io
response.raw = io.BytesIO()
response.status_code = requests.codes.bad_request
else:
response.raw.release_conn = response.raw.close
response.status_code = requests.codes.ok
return response
def close(self):
pass

@ -6,4 +6,4 @@
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
__version__ = "1.5.3"
__version__ = "1.5.4-dev"

Loading…
Cancel
Save