name: Bang
sceneByURL:
  - action: scrapeXPath
    url:
      - bang.com/video
      - bangpremium.com/video
    scraper: sceneScraper
sceneByName:
  action: scrapeXPath
  queryURL: https://www.bang.com/videos?term={}
  scraper: sceneSearch
sceneByQueryFragment:
  action: scrapeXPath
  queryURL: "{url}"
  scraper: sceneScraper
movieByURL:
  - action: scrapeXPath
    url:
      - bang.com/dvd
      - bangpremium.com/dvd
    scraper: movieScraper
performerByURL:
  - action: scrapeXPath
    url:
      - bang.com/pornstar
      - bangpremium.com/pornstar
    scraper: performerScraper
xPathScrapers:
  sceneSearch:
    common:
      $scenes: //div[contains(@class, "video_container")]
    scene:
      Title: $scenes//a/span
      Date:
        selector: $scenes//span[contains(., "•")]/following-sibling::text()
        postProcess:
          - parseDate: Jan 02, 2006
      Image: $scenes//img/@src
      URL:
        selector: $scenes//a[contains(@href, "/video/")]/@href
        postProcess: &prependHost
          - replace:
              - regex: ^
                with: https://www.bang.com
  sceneScraper:
    common:
      $movie: //div[@data-controller="video-entry"]//a[contains(@href,"/dvd/")]//div[contains(@class,"name")]/span[1]
      $performer: //p[contains(@class,"capitalize") and contains(text(),"With:")]/a[contains(@href,"/pornstar/")]
    scene:
      Title: //meta[@property="og:title"]/@content
      Details: //meta[@name="description"]/@content
      Image:
        selector: //meta[@property="og:image"]/@content
        postProcess:
          - replace:
              - regex: (.+)(\?.+)
                with: $1
      Date:
        selector: //p[contains(text(),"Date:")]/text()
        postProcess:
          - replace:
              - regex: \w+:\s*(\w+\s)(\d+),(\s\d{4}).*
                with: $1$2$3
          - parseDate: Jan 02 2006
      Tags:
        Name:
          selector: //div[@class="actions"]/a
      Performers:
        Name: $performer
        URL:
          selector: $performer/@href
          postProcess: *prependHost
      Studio:
        Name: //p[contains(text(),"Studio:")]//a[contains(@href,"from=")]/img/@alt
      Movies:
        Name: $movie
        URL:
          selector: $movie/@href
          postProcess: *prependHost
  movieScraper:
    common:
      $details: //div[@class="w-full"][1]
      $image: //body/div[contains(@class,"w-full")][3]/div/div/picture//img[contains(@src,"/front")]/@src
    movie:
      Name:
        selector: $details/h1
      Duration:
        selector: //p[contains(text(),"Date:")]/span[2]/text()
      Date:
        selector: //p[contains(text(),"Date:")]/span[1]/text()
        postProcess:
          - parseDate: Jan 02, 2006
      Synopsis: $details//p[contains(@class,"clear-both")]
      Studio:
        Name: $details//p[contains(text(),"Studio")]/a/text()
      FrontImage:
        selector: $image
        postProcess:
          - replace:
              - regex: \?.*$
                with: ""
      BackImage:
        selector: $image
        postProcess:
          - replace:
              - regex: /front\.jpg?.*$
                with: "/back.jpg"
  performerScraper:
    common:
      $overlay: //div[@class="flex flex-col md:items-start items-center"]
    performer:
      Name: $overlay/h2
      URL:
        selector: //link[@rel="canonical"][1]/@href
      Birthdate:
        selector: $overlay//div[contains(text(),"Born")]/span[contains(text(),"old")]
        postProcess:
          - replace:
              - regex: \s*(\w+\s)(\d+),(\s\d{4}).*
                with: $1$2$3
          - parseDate: January 2 2006
      HairColor:
        selector: $overlay//div[contains(@class,"md:text-left")]/text()[contains(.,"Hair Color")]/following-sibling::span[1]
      Ethnicity:
        selector: $overlay//div[contains(@class,"md:text-left")]/text()[contains(.,"Ethnicity")]/following-sibling::span[1]
      EyeColor:
        selector: $overlay//div[contains(@class,"md:text-left")]/text()[contains(.,"Eye Color")]/following-sibling::span[1]
      Aliases:
        selector: $overlay//h1/following-sibling::div
      Image:
        selector: //div[@class="relative"]//img/@src
        postProcess:
          - replace:
              - regex: \?.+$
                with: ""
# Last Updated March 08, 2024
