84 lines
2.4 KiB
Python
84 lines
2.4 KiB
Python
import base64
|
|
import json
|
|
import mimetypes
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
'''
|
|
This script is here to allow you to search for performer images based on a directory.
|
|
The query will be a folder name and the lookup will be the image based on preference.
|
|
This is designed to work with the accress pics project on github:
|
|
https://github.com/Trizkat/actress-pics
|
|
|
|
This script needs python3
|
|
|
|
Clone the actress-pics github project to a folder within stash such as a sub directory in the scrapers folder:
|
|
cd /root/.stash/scrapers/
|
|
git clone https://github.com/Trizkat/actress-pics.git
|
|
|
|
update path and preference below as needed
|
|
'''
|
|
|
|
path = r'/root/.stash/scrapers/actress-pics/'
|
|
preference = ['Front_Topless', 'Front_Nude', 'Front_NN']
|
|
|
|
debug = True
|
|
|
|
# ======================
|
|
|
|
def query():
|
|
fragment = json.loads(sys.stdin.read())
|
|
if debug:
|
|
print("input: " + json.dumps(fragment), file=sys.stderr)
|
|
|
|
res = []
|
|
for root, dirs, files in os.walk(path):
|
|
for dir in dirs:
|
|
if fragment['name'].lower() in dir.lower():
|
|
res.append({'name': dir})
|
|
|
|
print(json.dumps(res))
|
|
|
|
def fetch():
|
|
fragment = json.loads(sys.stdin.read())
|
|
if debug:
|
|
print("input: " + json.dumps(fragment), file=sys.stderr)
|
|
|
|
candidates = []
|
|
for root, dirs, files in os.walk(path):
|
|
if fragment['name'] in root:
|
|
for f in files:
|
|
candidates.append(str(Path(root, f)))
|
|
|
|
# Look throuh preferences for an image that matches the preference
|
|
candidates.sort()
|
|
for pattern in preference:
|
|
for f in candidates:
|
|
if pattern in f:
|
|
# return first candiate that matches pattern, replace space with %20 for url encoding
|
|
fragment['images'] = [make_image_data_url(f)]
|
|
print(json.dumps(fragment))
|
|
exit(0)
|
|
|
|
# Just use the first image in the folder as a fall back
|
|
if candidates:
|
|
fragment['images'] = [make_image_data_url(candidates[0])]
|
|
|
|
print(json.dumps(fragment))
|
|
|
|
def make_image_data_url(image_path):
|
|
# type: (str,) -> str
|
|
mime, _ = mimetypes.guess_type(image_path)
|
|
with open(image_path, 'rb') as img:
|
|
encoded = base64.b64encode(img.read()).decode()
|
|
return 'data:{0};base64,{1}'.format(mime, encoded)
|
|
|
|
|
|
if sys.argv[1] == 'query':
|
|
query()
|
|
elif sys.argv[1] == 'fetch':
|
|
fetch()
|
|
|
|
# Last Updated March 28, 2021
|