mirror of
https://github.com/stashapp/CommunityScrapers.git
synced 2025-12-16 00:40:37 -06:00
101 lines
3.0 KiB
Python
101 lines
3.0 KiB
Python
import base64
|
|
import imghdr
|
|
import json
|
|
import mimetypes
|
|
import sys
|
|
import sqlite3
|
|
from os import path
|
|
|
|
'''
|
|
This script uses the sqlite database from another stash database and allows you to parse performers
|
|
Copy stash-go.sqlite to the scrapers directory
|
|
|
|
This script needs python3
|
|
'''
|
|
|
|
def query_performers(name):
|
|
c = conn.cursor()
|
|
c.execute('SELECT name FROM performers WHERE lower(name) like lower(?)',('%' + name + '%',))
|
|
rec=[]
|
|
for row in c.fetchall():
|
|
res={}
|
|
res['name']= row[0]
|
|
rec.append(res)
|
|
return rec
|
|
|
|
def make_image_data_url(image_data):
|
|
# type: (bytes,) -> str
|
|
img_type = imghdr.what(None, h=image_data) or 'jpeg'
|
|
mime = mimetypes.types_map.get('.' + img_type, 'image/jpeg')
|
|
encoded = base64.b64encode(image_data).decode()
|
|
return 'data:{0};base64,{1}'.format(mime, encoded)
|
|
|
|
def fetch_performer_name(name):
|
|
c = conn.cursor()
|
|
c.execute('SELECT name,gender,url,twitter,instagram,date(birthdate),ethnicity,country,eye_color,height,measurements,fake_tits,career_length,tattoos,piercings,aliases,id FROM performers WHERE lower(name) = lower(?)', (name,))
|
|
|
|
row =c.fetchone()
|
|
res={}
|
|
if row == None:
|
|
return res
|
|
res['name']= row[0]
|
|
res['gender']=row[1]
|
|
res['url']=row[2]
|
|
res['twitter']=row[3]
|
|
res['instagram']=row[4]
|
|
res['birthdate']=row[5]
|
|
res['ethnicity']=row[6]
|
|
res['country']=row[7]
|
|
res['eye_color']=row[8]
|
|
res['height']=row[9]
|
|
res['measurements']=row[10]
|
|
res['fake_tits']=row[11]
|
|
res['career_length']=row[12]
|
|
res['tattoos']=row[13]
|
|
res['piercings']=row[14]
|
|
res['aliases']=row[15]
|
|
|
|
performer_id=row[16]
|
|
c.execute('select image from performers_image where performer_id=?',(performer_id,))
|
|
row=c.fetchone()
|
|
if row == None:
|
|
return res
|
|
|
|
image = make_image_data_url(row[0])
|
|
res['images']=[image]
|
|
|
|
return res
|
|
|
|
|
|
if not path.exists("stash-go.sqlite"):
|
|
print("Error, the sqlite database stash-go.sqlite does not exist in the scrapers directory.",file=sys.stderr)
|
|
print("Copy this database from another stash instance and place this in the scrapers directory",file=sys.stderr)
|
|
exit(1)
|
|
|
|
|
|
conn = sqlite3.connect('stash-go.sqlite',detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)
|
|
|
|
if sys.argv[1] == "query":
|
|
fragment = json.loads(sys.stdin.read())
|
|
print("input: " + json.dumps(fragment),file=sys.stderr)
|
|
result = query_performers(fragment['name'])
|
|
if not result:
|
|
print(f"Could not determine details for performer: `{fragment['name']}`",file=sys.stderr)
|
|
print("{}")
|
|
else:
|
|
print (json.dumps(result))
|
|
conn.close()
|
|
|
|
if sys.argv[1] == "fetch":
|
|
fragment = json.loads(sys.stdin.read())
|
|
print("input: " + json.dumps(fragment),file=sys.stderr)
|
|
result = fetch_performer_name(fragment['name'])
|
|
if not result:
|
|
print(f"Could not determine details for performer: `{fragment['name']}`",file=sys.stderr)
|
|
print("{}")
|
|
else:
|
|
print (json.dumps(result))
|
|
conn.close()
|
|
|
|
# Last Updated March 31, 2021
|