stash
This commit is contained in:
94
stash/config/scrapers/community/BangBros/BangBros.py
Normal file
94
stash/config/scrapers/community/BangBros/BangBros.py
Normal file
@@ -0,0 +1,94 @@
|
||||
import json
|
||||
import sys
|
||||
from requests import head
|
||||
from typing import Any
|
||||
from py_common import log
|
||||
from py_common.util import dig, replace_all, replace_at
|
||||
from AyloAPI.scrape import (
|
||||
gallery_from_url,
|
||||
scraper_args,
|
||||
scene_from_url,
|
||||
scene_search,
|
||||
scene_from_fragment,
|
||||
performer_from_url,
|
||||
performer_from_fragment,
|
||||
performer_search,
|
||||
movie_from_url,
|
||||
)
|
||||
|
||||
studio_map = {
|
||||
"AvaSpice": "Ava Spice",
|
||||
"MomIsHorny": "Mom Is Horny",
|
||||
}
|
||||
|
||||
|
||||
def redirect(url: str) -> str:
|
||||
if not url or "/video/" not in url:
|
||||
return url
|
||||
if (res := head(url)) and (redirect := res.headers.get("Location", url)):
|
||||
return redirect if not redirect.endswith("404") else url
|
||||
return url
|
||||
|
||||
|
||||
def bangbros(obj: Any, _) -> Any:
|
||||
domain = (
|
||||
"virtualporn.com"
|
||||
if dig(obj, "studio", "name") == "Virtual Porn"
|
||||
else "bangbros.com"
|
||||
)
|
||||
|
||||
# All bangbros URLs omit the standard www. subdomain prefix
|
||||
# and all scene URLs use /video/ instead of the standard /scene/
|
||||
fixed = replace_all(
|
||||
obj,
|
||||
"url",
|
||||
lambda x: x.replace("/scene/", "/video/").replace("www.bangbros.com", domain),
|
||||
)
|
||||
|
||||
# Rename certain studios according to the map
|
||||
fixed = replace_at(
|
||||
fixed, "studio", "name", replacement=lambda x: studio_map.get(x, x)
|
||||
)
|
||||
|
||||
return fixed
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
domains = [
|
||||
"bangbros",
|
||||
"virtualporn",
|
||||
]
|
||||
op, args = scraper_args()
|
||||
result = None
|
||||
|
||||
match op, args:
|
||||
case "gallery-by-url" | "gallery-by-fragment", {"url": url} if url:
|
||||
url = redirect(url)
|
||||
result = gallery_from_url(url, postprocess=bangbros)
|
||||
case "scene-by-url", {"url": url} if url:
|
||||
url = redirect(url)
|
||||
result = scene_from_url(url, postprocess=bangbros)
|
||||
case "scene-by-name", {"name": name} if name:
|
||||
result = scene_search(name, search_domains=domains, postprocess=bangbros)
|
||||
case "scene-by-fragment" | "scene-by-query-fragment", args:
|
||||
args = replace_all(args, "url", redirect)
|
||||
result = scene_from_fragment(
|
||||
args, search_domains=domains, postprocess=bangbros
|
||||
)
|
||||
case "performer-by-url", {"url": url}:
|
||||
url = redirect(url)
|
||||
result = performer_from_url(url, postprocess=bangbros)
|
||||
case "performer-by-fragment", args:
|
||||
result = performer_from_fragment(args)
|
||||
case "performer-by-name", {"name": name} if name:
|
||||
result = performer_search(
|
||||
name, search_domains=domains, postprocess=bangbros
|
||||
)
|
||||
case "movie-by-url", {"url": url} if url:
|
||||
url = redirect(url)
|
||||
result = movie_from_url(url, postprocess=bangbros)
|
||||
case _:
|
||||
log.error(f"Operation: {op}, arguments: {json.dumps(args)}")
|
||||
sys.exit(1)
|
||||
|
||||
print(json.dumps(result))
|
||||
78
stash/config/scrapers/community/BangBros/BangBros.yml
Normal file
78
stash/config/scrapers/community/BangBros/BangBros.yml
Normal file
@@ -0,0 +1,78 @@
|
||||
name: BangBros
|
||||
# requires: py_common, AyloAPI
|
||||
# scrapes: Ass Parade, Ava Spice, Back Room Facials, Backroom MILF, Ball Honeys, Bang Bus, Bang Casting, Bang POV, Bang Tryouts, BangBros 18, BangBros Angels, Bangbros Clips, BangBros Remastered, BangBros Vault, Big Mouthfuls, Big Tit Cream Pie, Big Tits, Round Asses, BlowJob Fridays, Blowjob Ninjas, Boob Squad, Brown Bunnies, Can He Score, Casting, Chongas, Colombia Fuck Fest, Dirty World Tour, Dorm Invasion, Facial Fest, Fuck Team Five, Glory Hole Loads, Latina Rampage, Living With Anna, MILF Lessons, Milf Soup, Magical Feet, Mom Is Horny, Monsters of Cock, Mr CamelToe, Mr. Anal, My Dirty Maid, My Life In Brazil, Newbie Black, Pawg, Party of 3, Penny Show, Porn Star Spa, Power Munch, Public Bang, Slutty White Girls, Stepmom Videos, Street Ranger, Tugjobs, Virtual Porn, Working Latinas
|
||||
galleryByURL:
|
||||
- action: script
|
||||
url:
|
||||
- bangbros.com/video
|
||||
- virtualporn.com/video
|
||||
script:
|
||||
- python
|
||||
- BangBros.py
|
||||
- gallery-by-url
|
||||
galleryByFragment:
|
||||
action: script
|
||||
script:
|
||||
- python
|
||||
- BangBros.py
|
||||
- gallery-by-fragment
|
||||
sceneByURL:
|
||||
- action: script
|
||||
url:
|
||||
- bangbros.com/video
|
||||
- virtualporn.com/video
|
||||
script:
|
||||
- python
|
||||
- BangBros.py
|
||||
- scene-by-url
|
||||
sceneByFragment:
|
||||
action: script
|
||||
script:
|
||||
- python
|
||||
- BangBros.py
|
||||
- scene-by-fragment
|
||||
sceneByName:
|
||||
action: script
|
||||
script:
|
||||
- python
|
||||
- BangBros.py
|
||||
- scene-by-name
|
||||
sceneByQueryFragment:
|
||||
action: script
|
||||
script:
|
||||
- python
|
||||
- BangBros.py
|
||||
- scene-by-query-fragment
|
||||
performerByName:
|
||||
action: script
|
||||
script:
|
||||
- python
|
||||
- BangBros.py
|
||||
- performer-by-name
|
||||
performerByURL:
|
||||
- action: script
|
||||
url:
|
||||
- bangbros.com/model/
|
||||
script:
|
||||
- python
|
||||
- BangBros.py
|
||||
- performer-by-url
|
||||
performerByFragment:
|
||||
action: script
|
||||
script:
|
||||
- python
|
||||
- BangBros.py
|
||||
- performer-by-fragment
|
||||
movieByURL:
|
||||
- action: script
|
||||
url:
|
||||
- bangbros.com/movie
|
||||
- virtualporn.com/movie
|
||||
# Since scenes link to the movie we can scrape movies from scenes
|
||||
- bangbros.com/video
|
||||
- virtualporn.com/video
|
||||
script:
|
||||
- python
|
||||
- BangBros.py
|
||||
- movie-by-url
|
||||
# Last Updated January 14, 2024
|
||||
10
stash/config/scrapers/community/BangBros/manifest
Executable file
10
stash/config/scrapers/community/BangBros/manifest
Executable file
@@ -0,0 +1,10 @@
|
||||
id: BangBros
|
||||
name: BangBros
|
||||
metadata: {}
|
||||
version: c2abfdf
|
||||
date: "2024-02-03 17:45:33"
|
||||
requires: []
|
||||
source_repository: https://stashapp.github.io/CommunityScrapers/stable/index.yml
|
||||
files:
|
||||
- BangBros.py
|
||||
- BangBros.yml
|
||||
Reference in New Issue
Block a user