name: private
sceneByURL:
  - action: scrapeXPath
    url:
      - private.com
    scraper: sceneScraper
movieByURL:
  - action: scrapeXPath
    url:
      - private.com
    scraper: movieScraper
performerByName:
  action: scrapeXPath
  queryURL: https://www.private.com/search.php?query={}
  scraper: performerSearch
performerByURL:
  - action: scrapeXPath
    url:
      - private.com
    scraper: performerScraper
xPathScrapers:
  movieScraper:
    movie:
      Name: &movieName //div[@class="dvds-wrapper"]/h1/text()
      Director: &movieDirector //p[@class="director"]/span[@itemprop="name"]/text()
      Duration:
        selector: &movieDuration //p[em[contains(text(), "Duration:")]]/text()
        postProcess:
          - replace:
              - regex: ^(\d+).+$
                with: 00:$1:00
      Date: &movieDate //span[@itemprop="datePublished"]/text()
      Studio:
        Name: &movieStudioName //div[@class="dvds-wrapper"]/p[@class="line-dvd"]
      Synopsis: &movieSynopsis //p[@class="sinopsys"]
      FrontImage: &movieFrontImage //div[@class="dvds-wrapper"]//img[@class="img-responsive"]/@src
  performerSearch:
    common:
      $searchData: //a[@data-track="PORNSTAR_NAME"]
    performer:
      Name: $searchData
      URL: $searchData/@href
  sceneScraper:
    common:
      $content: //section[@class="video-description-and-tags clearfix"]
    scene:
      Title: //div[@class="title-zone"]/h1
      Code:
        selector: //meta[@property="og:video"]/@content
        postProcess:
          - replace:
              - regex: .+\/(.+)\/trailers\/.+
                with: $1
      Date:
        selector: //meta[@itemprop="uploadDate"]/@content
        postProcess:
          # The format changes when another language is selected
          - parseDate: 01/02/2006
      Details:
        selector: $content//p[@id="description-section"]/text()
        concat: "\n"
      Tags:
        Name: //li[@class="tag-tags"]//a/text()
      Performers:
        Name: //li[@class="tag-models"]//a/text()
      Movies:
        Name:
          selector: //strong[contains(.,'Full Movie')]/../@href
          postProcess:
            - subScraper: *movieName
        Director:
          selector: //strong[contains(.,'Full Movie')]/../@href
          postProcess:
            - subScraper: *movieDirector
        Duration:
          selector: //strong[contains(.,'Full Movie')]/../@href
          postProcess:
            - subScraper: *movieDuration
            - replace:
                - regex: ^(\d+).+$
                  with: 00:$1:00
        URL: //strong[contains(.,'Full Movie')]/../@href
        Studio:
          Name:
            selector: //strong[contains(.,'Full Movie')]/../@href
            postProcess:
              - subScraper: *movieStudioName
        Synopsis:
          selector: //strong[contains(.,'Full Movie')]/../@href
          postProcess:
            - subScraper: *movieSynopsis
        FrontImage:
          selector: //strong[contains(.,'Full Movie')]/../@href
          postProcess:
            - subScraper: *movieFrontImage

      Studio:
        Name:
          selector: //div[@class="title-zone"]//li/a/span[@class="title-site"]/text()|/html/@lang
          postProcess:
            - replace:
                - regex: ^en$
                  with: Private
      Image: //meta[@property="og:image"]/@content
  performerScraper:
    common:
      $performerData: //div[contains(concat(' ',normalize-space(@class),' '),' pornstar-wrapper ')]
    performer:
      Name: $performerData//h1
      URL: //meta[@property="og:url"]/@content
      Aliases: $performerData//p[@class="aka"]/text()
      Details: $performerData//li[@class="model-facts-long"]/div
      Measurements: $performerData//em[text()="Measurements:"]/../text()
      Height:
        selector: $performerData//em[text()="Height:"]/../text()
        postProcess:
          - replace:
              - regex: (\d+)cm.+
                with: $1
          - map:
              -: ""
      Weight:
        selector: $performerData//em[text()="Weight:"]/../text()
        postProcess:
          - replace:
              - regex: (\d+)kg.+
                with: $1
          - map:
              -: ""
      Country: $performerData//em[text()="Birth place:"]/../text()
      HairColor: $performerData//em[text()="Hair Color:"]/../text()
      EyeColor:
        selector: $performerData//em[text()="Eye color:"]/../text()
        postProcess:
          - map:
              -: ""
      Tattoos:
        selector: $performerData//em[text()="Tattoos:"]/../text()
        postProcess:
          - map:
              -: ""
      Piercings:
        selector: $performerData//em[text()="Piercings:"]/../text()
        postProcess:
          - map:
              -: ""
      Image: $performerData//img/@src
      Gender:
        fixed: "Female"
driver:
  cookies:
    - CookieURL: https://private.com
      Cookies:
        - Name: "customLang"
          Domain: ".private.com"
          Value: "en"
          Path: "/"
        - Name: "agreed18"
          Domain: ".private.com"
          Value: "true"
          Path: "/"
  headers:
    - Key: User-Agent
      Value: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0)
# Last Updated January 06, 2024
