From 529aa21dd9380621516dfd4674393fc2a7c76ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Sun, 16 Sep 2018 20:59:22 +0200 Subject: [PATCH] move FileAdapter definition into recursive.py --- CHANGELOG.md | 2 ++ gallery_dl/adapter.py | 31 ------------------------------- gallery_dl/extractor/recursive.py | 29 +++++++++++++++++++++++++---- gallery_dl/version.py | 2 +- 4 files changed, 28 insertions(+), 36 deletions(-) delete mode 100644 gallery_dl/adapter.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 000f1bdf..cce02eaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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)) diff --git a/gallery_dl/adapter.py b/gallery_dl/adapter.py deleted file mode 100644 index ad343a40..00000000 --- a/gallery_dl/adapter.py +++ /dev/null @@ -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 diff --git a/gallery_dl/extractor/recursive.py b/gallery_dl/extractor/recursive.py index f3e61ca0..8955f741 100644 --- a/gallery_dl/extractor/recursive.py +++ b/gallery_dl/extractor/recursive.py @@ -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 diff --git a/gallery_dl/version.py b/gallery_dl/version.py index df784a99..3416f255 100644 --- a/gallery_dl/version.py +++ b/gallery_dl/version.py @@ -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"