From 37d4d07d9b938d75985f452571b32066a3eb1106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Mon, 23 Jan 2017 00:07:36 +0100 Subject: [PATCH] compatibility fixes to make a standalone exe work --- gallery_dl/extractor/common.py | 19 +++++++++++++++++++ gallery_dl/extractor/khinsider.py | 2 +- setup.py | 8 ++++---- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/gallery_dl/extractor/common.py b/gallery_dl/extractor/common.py index 2a5a762d..f49fd94e 100644 --- a/gallery_dl/extractor/common.py +++ b/gallery_dl/extractor/common.py @@ -8,6 +8,7 @@ """Common classes and constants used by extractor modules.""" +import os import time import queue import requests @@ -94,3 +95,21 @@ def safe_request(session, url, method="GET", *args, **kwargs): # everything ok -- proceed to download return r + + +# The first import of requests happens inside this file. +# If we are running on Windows and the from requests expected certificate file +# is missing (which happens in a standalone executable from py2exe), the +# requests.Session object gets monkey patched to always set its 'verify' +# attribute to False to avoid an exception being thrown when attempting to +# access https:// URLs. + +if os.name == "nt": + import os.path + import requests.certs + if not os.path.isfile(requests.certs.where()): + def patched_init(self): + session_init(self) + self.verify = False + session_init = requests.Session.__init__ + requests.Session.__init__ = patched_init diff --git a/gallery_dl/extractor/khinsider.py b/gallery_dl/extractor/khinsider.py index 40f58131..aafc55b8 100644 --- a/gallery_dl/extractor/khinsider.py +++ b/gallery_dl/extractor/khinsider.py @@ -19,7 +19,7 @@ class KhinsiderSoundtrackExtractor(AsynchronousExtractor): filename_fmt = "{filename}" pattern = [r"(?:https?://)?downloads\.khinsider\.com/game-soundtracks/album/(.+)"] test = [("http://downloads.khinsider.com/game-soundtracks/album/horizon-riders-wii-", { - "url": "35ff4c8310884664408dc5560fda3b06157f7606", + "url": "732639e9e72e169f8ec36a71609471aaf67451e0", "keyword": "d91cf3edee6713b536eaf3995743f0be7dc72f68", })] diff --git a/setup.py b/setup.py index 8c73b3af..8ec71204 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,7 @@ if "py2exe" in sys.argv: import py2exe except ImportError: print("Error importing 'py2exe'", file=sys.stderr) - sys.exit(1) + exit(1) params = { "console": [{ "script": "./gallery_dl/__main__.py", @@ -42,14 +42,14 @@ if "py2exe" in sys.argv: "product_version": __version__, }], "options": {"py2exe": { - "bundle_files": 1, + "bundle_files": 0, "compressed": 1, "optimize": 2, "dist_dir": ".", "packages": ["gallery_dl"], - "dll_excludes": ["w9xpopen.exe", "crypt32.dll"], + "dll_excludes": ["w9xpopen.exe"], }}, - "zipfile": None + "zipfile": None, } elif has_setuptools: params = {