stash
This commit is contained in:
10
stash/config/scrapers/community/stash-sqlite/manifest
Executable file
10
stash/config/scrapers/community/stash-sqlite/manifest
Executable file
@@ -0,0 +1,10 @@
|
||||
id: stash-sqlite
|
||||
name: stash sqlite
|
||||
metadata: {}
|
||||
version: fbd81c5
|
||||
date: "2023-11-22 00:31:17"
|
||||
requires: []
|
||||
source_repository: https://stashapp.github.io/CommunityScrapers/stable/index.yml
|
||||
files:
|
||||
- stash-sqlite.py
|
||||
- stash-sqlite.yml
|
||||
100
stash/config/scrapers/community/stash-sqlite/stash-sqlite.py
Normal file
100
stash/config/scrapers/community/stash-sqlite/stash-sqlite.py
Normal file
@@ -0,0 +1,100 @@
|
||||
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
|
||||
@@ -0,0 +1,17 @@
|
||||
name: stash sqlite
|
||||
|
||||
performerByFragment:
|
||||
action: script
|
||||
script:
|
||||
- python
|
||||
- stash-sqlite.py
|
||||
- fetch
|
||||
|
||||
performerByName:
|
||||
action: script
|
||||
script:
|
||||
- python
|
||||
- stash-sqlite.py
|
||||
- query
|
||||
|
||||
# Last Updated October 17, 2021
|
||||
Reference in New Issue
Block a user