summaryrefslogtreecommitdiffstats
path: root/gallery_dl/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/util.py')
-rw-r--r--gallery_dl/util.py73
1 files changed, 28 insertions, 45 deletions
diff --git a/gallery_dl/util.py b/gallery_dl/util.py
index bc9418f..861ec7e 100644
--- a/gallery_dl/util.py
+++ b/gallery_dl/util.py
@@ -16,7 +16,6 @@ import time
import random
import getpass
import hashlib
-import sqlite3
import binascii
import datetime
import functools
@@ -339,7 +338,7 @@ def extract_headers(response):
@functools.lru_cache(maxsize=None)
def git_head():
try:
- out, err = subprocess.Popen(
+ out, err = Popen(
("git", "rev-parse", "--short", "HEAD"),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
@@ -579,6 +578,33 @@ GLOBALS = {
}
+if EXECUTABLE and hasattr(sys, "_MEIPASS"):
+ # https://github.com/pyinstaller/pyinstaller/blob/develop/doc
+ # /runtime-information.rst#ld_library_path--libpath-considerations
+ _popen_env = os.environ.copy()
+
+ orig = _popen_env.get("LD_LIBRARY_PATH_ORIG")
+ if orig is None:
+ _popen_env.pop("LD_LIBRARY_PATH", None)
+ else:
+ _popen_env["LD_LIBRARY_PATH"] = orig
+
+ orig = _popen_env.get("DYLD_LIBRARY_PATH_ORIG")
+ if orig is None:
+ _popen_env.pop("DYLD_LIBRARY_PATH", None)
+ else:
+ _popen_env["DYLD_LIBRARY_PATH"] = orig
+
+ del orig
+
+ class Popen(subprocess.Popen):
+ def __init__(self, args, **kwargs):
+ kwargs["env"] = _popen_env
+ subprocess.Popen.__init__(self, args, **kwargs)
+else:
+ Popen = subprocess.Popen
+
+
def compile_expression(expr, name="<expr>", globals=None):
code_object = compile(expr, name, "eval")
return functools.partial(eval, code_object, globals or GLOBALS)
@@ -825,46 +851,3 @@ class FilterPredicate():
raise
except Exception as exc:
raise exception.FilterError(exc)
-
-
-class DownloadArchive():
-
- def __init__(self, path, format_string, pragma=None,
- cache_key="_archive_key"):
- try:
- con = sqlite3.connect(path, timeout=60, check_same_thread=False)
- except sqlite3.OperationalError:
- os.makedirs(os.path.dirname(path))
- con = sqlite3.connect(path, timeout=60, check_same_thread=False)
- con.isolation_level = None
-
- from . import formatter
- self.keygen = formatter.parse(format_string).format_map
- self.close = con.close
- self.cursor = cursor = con.cursor()
- self._cache_key = cache_key
-
- if pragma:
- for stmt in pragma:
- cursor.execute("PRAGMA " + stmt)
-
- try:
- cursor.execute("CREATE TABLE IF NOT EXISTS archive "
- "(entry TEXT PRIMARY KEY) WITHOUT ROWID")
- except sqlite3.OperationalError:
- # fallback for missing WITHOUT ROWID support (#553)
- cursor.execute("CREATE TABLE IF NOT EXISTS archive "
- "(entry TEXT PRIMARY KEY)")
-
- def check(self, kwdict):
- """Return True if the item described by 'kwdict' exists in archive"""
- key = kwdict[self._cache_key] = self.keygen(kwdict)
- self.cursor.execute(
- "SELECT 1 FROM archive WHERE entry=? LIMIT 1", (key,))
- return self.cursor.fetchone()
-
- def add(self, kwdict):
- """Add item described by 'kwdict' to archive"""
- key = kwdict.get(self._cache_key) or self.keygen(kwdict)
- self.cursor.execute(
- "INSERT OR IGNORE INTO archive (entry) VALUES (?)", (key,))