This commit is contained in:
Christoph Califice
2025-10-09 20:05:31 -03:00
parent ed22ef22bc
commit 0a5f88d75a
1442 changed files with 101562 additions and 0 deletions

View 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()