119 lines
3.0 KiB
Python
119 lines
3.0 KiB
Python
import json
|
|
import sys
|
|
import requests
|
|
import re
|
|
|
|
try:
|
|
import py_common.graphql as graphql
|
|
import py_common.log as log
|
|
except ModuleNotFoundError:
|
|
print(
|
|
"You need to download the folder 'py_common' from the community repo! (CommunityScrapers/tree/master/scrapers/py_common)",
|
|
file=sys.stderr,
|
|
)
|
|
sys.exit()
|
|
|
|
|
|
def debugPrint(t):
|
|
log.debug(t + "\n");
|
|
|
|
def scrape_scene(url):
|
|
query = """
|
|
query scrapeSceneURL($url: String!) {
|
|
scrapeSceneURL(url: $url) {
|
|
title
|
|
details
|
|
code
|
|
date
|
|
image
|
|
urls
|
|
studio {
|
|
name
|
|
url
|
|
image
|
|
parent {
|
|
name
|
|
url
|
|
image
|
|
}
|
|
}
|
|
tags {
|
|
name
|
|
}
|
|
performers {
|
|
aliases
|
|
birthdate
|
|
career_length
|
|
country
|
|
death_date
|
|
details
|
|
ethnicity
|
|
eye_color
|
|
fake_tits
|
|
gender
|
|
hair_color
|
|
height
|
|
instagram
|
|
images
|
|
measurements
|
|
name
|
|
piercings
|
|
tags {
|
|
name
|
|
}
|
|
tattoos
|
|
twitter
|
|
url
|
|
weight
|
|
}
|
|
}
|
|
}"""
|
|
|
|
variables = {"url": url}
|
|
result = graphql.callGraphQL(query, variables)
|
|
log.debug(f"result {result}")
|
|
res = result["scrapeSceneURL"]
|
|
res["url"] = url
|
|
return res
|
|
|
|
|
|
fragment = json.loads(sys.stdin.read())
|
|
debugPrint(json.dumps(fragment))
|
|
title = fragment.get("title")
|
|
|
|
debugPrint("title is " + title)
|
|
if m := re.match(r"(\d+)_[a-z]+_[a-z]+_\d+_([A-Z]+).*", title):
|
|
#Turn the content id from the filename into a scene id
|
|
contentId = int(m.group(1))
|
|
siteCode = m.group(2)
|
|
debugPrint("Site code is " + siteCode)
|
|
if siteCode.casefold() == "WBP".casefold():
|
|
apiUrl = "https://www.worstbehaviorproductions.com/api/site/21/updates/0"
|
|
sceneUrlFragment = "https://worstbehaviorproductions.com/trailer?updateId="
|
|
elif siteCode.casefold() == "ATP".casefold():
|
|
apiUrl = "https://assumethepositionstudios.com/api/site/13/updates/0"
|
|
sceneUrlFragment = "https://assumethepositionstudios.com/trailer?updateId="
|
|
else:
|
|
debugPrint("Unknown site code " + siteCode)
|
|
sys.exit();
|
|
|
|
debugPrint("Searching for " + str(contentId) + " on " + apiUrl)
|
|
page = requests.get(apiUrl)
|
|
updates = json.loads(page.content)
|
|
matches = [scene for scene in updates["data"] if scene["scene"]["id"] == contentId]
|
|
if len(matches) != 1:
|
|
debugPrint("Couldn't find match for " + str(contentId) + " found " + str(len(matches)) + " matches")
|
|
sys.exit()
|
|
debugPrint("Match is " + json.dumps(matches[0]))
|
|
sceneId = matches[0]["id"]
|
|
|
|
#Build a scene url from the sceneId
|
|
sceneUrl = sceneUrlFragment + str(sceneId)
|
|
debugPrint("Scene URL is " + sceneUrl)
|
|
|
|
result = scrape_scene(sceneUrl)
|
|
print(json.dumps(result))
|
|
else:
|
|
debugPrint("title didn't match")
|
|
print(json.dumps({}))
|