name: Modelhub
performerByName:
  action: scrapeXPath
  queryURL: https://modelhub.com/model/search?q={}
  scraper: performerSearch
performerByURL:
  - action: scrapeXPath
    url:
      - modelhub.com
    scraper: performerScraper
sceneByURL:
  - action: scrapeXPath
    url:
      - modelhub.com/video/
    scraper: sceneScraper

xPathScrapers:
  performerSearch:
    performer:
      Name: //div[@class="modelInfo"]/a/h3/text()
      URL:
        selector: //li[@class="modelBox"]/a/@href
        postProcess:
          - replace:
              - regex: ^(.*)$
                with: "https://www.modelhub.com$1/bio"

  performerScraper:
    common:
      $infoPiece: //div[@class="modelContent"]
      $modelAttributes: //ul[@class="modelAttributes"]/li
    performer:
      Name: //div[@class="infoSection"]/h1/text()
      Birthdate:
        selector: //span[@class='bday js_lazy_bkg']/text()
        postProcess:
          - parseDate: January 2, 2006
      Gender:
        selector: //ul[@class="allStats"]/li[contains(.,"Gender")]/span
        postProcess:
          - replace:
              - regex: "Couple"
                with:
      Ethnicity:
        selector: $modelAttributes/div[contains(.,"Ethnicity")]/span
        postProcess:
          - map:
              Latin: "hispanic"
              Other: ""
      Twitter:
        selector: //a[@class='twitter js_lazy_bkg']/@href
        postProcess:
          - replace:
              - regex: .+(twitter.com)/(.+)
                with: $2
              - regex: (.+)\?(.*)
                with: $1
      Instagram:
        selector: //a[@class="insta js_lazy_bkg"]/@href
        postProcess:
          - replace:
              - regex: .+(instagram.com/)(.+)
                with: $2
      Height:
        selector: $modelAttributes/div[contains(.,"Height")]/span
        postProcess:
          - replace:
              - regex: .*\((\d+)cm\)
                with: $1
      FakeTits:
        selector: $modelAttributes/div[contains(.,"Breast Type")]/span
        postProcess:
          - map:
              Natural: "No"
              Fake: "Yes"
      Piercings: $modelAttributes/div[contains(.,"Piercing")]/span
      EyeColor: $modelAttributes/div[contains(.,"Eye Color")]/span
      Tattoos: $modelAttributes/div[contains(.,"Tattoo")]/span
      URL: //meta[@name="twitter:url"]/@content
      Image: //img[@class='profileImg lazy']/@data-src
      Country:
        selector: //ul[@class="info"]/li/span[@class="location js_lazy_bkg"]/text()
        postProcess:
          - map:
              "AR": "Argentina"
              "AT": "Austria"
              "AU": "Australia"
              "BR": "Brazil"
              "CA": "Canada"
              "colombia, CO": "Colombia"
              "CO": "Colombia"
              "CZ": "Czech Republic"
              "DE": "Germany"
              "ES": "Spain"
              "FR": "France"
              "GB": "United Kingdom"
              "HU": "Hungary"
              "IT": "Italy"
              "Peru, PE": "Peru"
              "PE": "Peru"
              "PH": "Philippines"
              "RO": "Romania"
              "RU": "Russia"
              "US": "United States"

  sceneScraper:
    scene:
      Title: //div[@class='videoShortInfo']/div[1]/h1/text()
      Tags:
        Name: //div[@class='videoCategories']/div/a/text()
      Image: //meta[@property="og:image"]/@content
      Details: //p[@ class="videoDescription"]
      Performers:
        Name: //div[@class='videoAvatar']/div[1]/a[2]
# Last Updated November 08, 2020
