mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-26 07:49:24 +01:00
or specify custom init module <initmodule>.py_config() by setting PYWB_INIT=<initmodule> fix run.sh to support testing with custom mount point
43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
import redis
|
|
import binsearch
|
|
#======================================
|
|
# PrefixResolver - convert cdx file entry to url with prefix if url contains specified string
|
|
#======================================
|
|
def PrefixResolver(prefix, contains = ''):
|
|
def makeUrl(url):
|
|
return [prefix + url] if (contains in url) else []
|
|
|
|
return makeUrl
|
|
|
|
#======================================
|
|
class RedisResolver:
|
|
def __init__(self, redis_url, key_prefix = 'w:'):
|
|
self.redis_url = redis_url
|
|
self.key_prefix = key_prefix
|
|
self.redis = redis.StrictRedis.from_url(redis_url)
|
|
|
|
def __call__(self, filename):
|
|
try:
|
|
redis_val = self.redis.hget(self.key_prefix + filename, 'path')
|
|
return [redis_val] if redis_val else None
|
|
except Exception as e:
|
|
print e
|
|
return None
|
|
|
|
#======================================
|
|
class PathIndexResolver:
|
|
def __init__(self, pathindex_file):
|
|
self.reader = binsearch.FileReader(pathindex_file)
|
|
|
|
def __call__(self, filename):
|
|
result = binsearch.iter_exact(self.reader, filename)
|
|
|
|
def gen_list(result):
|
|
for pathline in result:
|
|
path = pathline.split('\t')
|
|
if len(path) == 2:
|
|
yield path[1].rstrip()
|
|
|
|
return gen_list(result)
|
|
|