stash
This commit is contained in:
10
stash/config/scrapers/community/xbvrdb/manifest
Executable file
10
stash/config/scrapers/community/xbvrdb/manifest
Executable file
@@ -0,0 +1,10 @@
|
||||
id: xbvrdb
|
||||
name: XBVR DB
|
||||
metadata: {}
|
||||
version: fbd81c5
|
||||
date: "2023-11-22 00:31:17"
|
||||
requires: []
|
||||
source_repository: https://stashapp.github.io/CommunityScrapers/stable/index.yml
|
||||
files:
|
||||
- xbvrdb.py
|
||||
- xbvrdb.yml
|
||||
92
stash/config/scrapers/community/xbvrdb/xbvrdb.py
Normal file
92
stash/config/scrapers/community/xbvrdb/xbvrdb.py
Normal file
@@ -0,0 +1,92 @@
|
||||
import json
|
||||
import sys
|
||||
import sqlite3
|
||||
from os import path
|
||||
|
||||
''' This script uses the sqlite database from xbvr (3d porn manager)
|
||||
Copy main.db from yout xbvr configuration and rename this to xbvr.db
|
||||
docker cp xbvr:/root/.config/xbvr/main.db xbvr.db
|
||||
This script needs python3 and sqlite3
|
||||
'''
|
||||
def lookup_scene(id):
|
||||
c=conn.cursor()
|
||||
c.execute('select title,synopsis,site,cover_url,scene_url,date(release_date, "localtime") from scenes where id=?',(id,))
|
||||
row=c.fetchone()
|
||||
res={}
|
||||
res['title']=row[0]
|
||||
res['details']=row[1]
|
||||
res['studio']={"name":row[2]}
|
||||
res['image']=row[3]
|
||||
res['url']=row[4]
|
||||
res['date']=row[5]
|
||||
c.execute("select tags.name from scene_tags,tags where scene_tags.tag_id=tags.id and scene_tags.scene_id=? ;",(id,))
|
||||
row = c.fetchall()
|
||||
res['tags']=[{"name":x[0]} for x in row]
|
||||
c.execute("select actors.name from scene_cast,actors where actors.id=scene_cast.actor_id and scene_cast.scene_id=? ;",(id,))
|
||||
row = c.fetchall()
|
||||
res['performers']=[{"name":x[0]} for x in row]
|
||||
return res
|
||||
|
||||
def find_scene_id(title):
|
||||
c = conn.cursor()
|
||||
c.execute('SELECT scene_id FROM files WHERE filename=?', (title,))
|
||||
id=c.fetchone()
|
||||
if id == None:
|
||||
c.execute('SELECT id FROM scenes WHERE scene_id=?', (title,))
|
||||
id = c.fetchone()
|
||||
if id is not None:
|
||||
return id[0]
|
||||
if title.endswith(".zip"):
|
||||
title=title[:-4]
|
||||
if title.startswith("wankzvr-") or title.startswith("milfvr-") or title.startswith("povr-originals-"):
|
||||
# file names are in the format wankzvr-choosy-dads-choose-chu-46-hr-2400.zip split on - and discard the first token and last 3
|
||||
t=title.split('-')[1:-3]
|
||||
if 's' in t:
|
||||
t.remove('s')
|
||||
if 't' in t:
|
||||
t.remove('t')
|
||||
if 'originals' in t:
|
||||
t.remove('originals')
|
||||
title='%'.join(t)+'%'
|
||||
c.execute('select id from scenes where title like ?',(title+'%',))
|
||||
id=c.fetchone()
|
||||
if id is not None:
|
||||
return id[0]
|
||||
else:
|
||||
return id[0]
|
||||
return None
|
||||
|
||||
if not path.exists("xbvr.db"):
|
||||
print("Error, the sqlite database xbvr.db does not exist in the scrapers directory.",file=sys.stderr)
|
||||
print("Copy this database from the docker container and give it the name xbvr.db",file=sys.stderr)
|
||||
print("docker cp xbvr:/root/.config/xbvr/main.db xbvr.db",file=sys.stderr)
|
||||
exit(1)
|
||||
|
||||
|
||||
conn = sqlite3.connect('xbvr.db',detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)
|
||||
|
||||
if sys.argv[1] == "query":
|
||||
fragment = json.loads(sys.stdin.read())
|
||||
print(json.dumps(fragment),file=sys.stderr)
|
||||
scene_id = find_scene_id(fragment['title'])
|
||||
if not scene_id:
|
||||
print(f"Could not determine scene id in title: `{fragment['title']}`",file=sys.stderr)
|
||||
print("{}")
|
||||
else:
|
||||
print(f"Found scene id: {scene_id}",file=sys.stderr)
|
||||
result=lookup_scene(scene_id)
|
||||
print(json.dumps(result))
|
||||
conn.close()
|
||||
elif sys.argv[1] == "gallery_query":
|
||||
fragment= json.loads(sys.stdin.read())
|
||||
print(json.dumps(fragment),file=sys.stderr)
|
||||
scene_id = find_scene_id(fragment['title'])
|
||||
if not scene_id:
|
||||
print(f"Could not determine scene id in title: `{fragment['title']}`",file=sys.stderr)
|
||||
print("{}")
|
||||
else:
|
||||
print(f"Found scene id: {scene_id}",file=sys.stderr)
|
||||
result=lookup_scene(scene_id)
|
||||
result.pop("image",None)
|
||||
print(json.dumps(result))
|
||||
conn.close()
|
||||
15
stash/config/scrapers/community/xbvrdb/xbvrdb.yml
Normal file
15
stash/config/scrapers/community/xbvrdb/xbvrdb.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
name: "XBVR DB"
|
||||
sceneByFragment:
|
||||
action: script
|
||||
script:
|
||||
- python
|
||||
# use python3 instead if needed
|
||||
- xbvrdb.py
|
||||
- query
|
||||
galleryByFragment:
|
||||
action: script
|
||||
script:
|
||||
- python3
|
||||
- xbvrdb.py
|
||||
- gallery_query
|
||||
# Last Updated March 13, 2022
|
||||
Reference in New Issue
Block a user