name: "Nubiles"

# Nubiles Porn sites: https://nubilesporn.com/page/series
# Nubile Films sites: https://nubilefilms.com/page/series
# Standalone sites: https://nubilescash.com/page/about (contains all network sites)

sceneByURL:
  # Nubiles Porn sites
  - action: scrapeXPath
    scraper: nubilesPornMultiScraper
    url:
      - badteenspunished.com/video/watch/
      - bountyhunterporn.com/video/watch/
      - brattymilf.com/video/watch/
      - caughtmycoach.com/video/watch/
      - cheatingsis.com/video/watch/
      - cumswappingsis.com/video/watch/
      - daddyslilangel.com/video/watch/
      - datingmystepson.com/video/watch/
      - detentiongirls.com/video/watch/
      - driverxxx.com/video/watch/
      - familyswap.xxx/video/watch/
      - imnotyourmommy.com/video/watch/
      - lilsis.com/video/watch/
      - momlover.com/video/watch/
      - momsboytoy.com/video/watch/
      - momsfamilysecrets.com/video/watch/
      - momsteachsex.com/video/watch/
      - momstight.com/video/watch/
      - momswapped.com/video/watch/
      - momwantscreampie.com/video/watch/
      - momwantstobreed.com/video/watch/
      - myfamilypies.com/video/watch/
      - nubiles-casting.com/video/watch/
      - nubiles-porn.com/video/watch/
      - nubileset.com/video/watch/
      - nubilesporn.com/video/watch/
      - nubilesunscripted.com/video/watch/
      - petiteballerinasfucked.com/video/watch/
      - petitehdporn.com/video/watch/
      - princesscum.com/video/watch/
      - stepsiblingscaught.com/video/watch/
      - teacherfucksteens.com/video/watch/
      - youngermommy.com/video/watch

  # Nubile Films sites
  - action: scrapeXPath
    scraper: nubileFilmsMultiScraper
    url:
      - girlsonlyporn.com/video/watch/
      - hotcrazymess.com/video/watch/
      - nubilefilms.com/video/watch/
      - thatsitcomshow.com/video/watch/

  # Standalone sites
  - action: scrapeXPath
    scraper: standaloneMultiScraper
    url:
      - anilos.com/video/watch/
      - brattysis.com/video/watch/
      - deeplush.com/video/watch/
      - nfbusty.com/video/watch/
      - nubiles.net/video/watch/
      - smashed.xxx/video/watch/

galleryByURL:
  # Nubiles Porn sites
  - action: scrapeXPath
    scraper: nubilesPornMultiScraper
    url:
      - badteenspunished.com/photo/gallery/
      - bountyhunterporn.com/photo/gallery/
      - brattymilf.com/photo/gallery/
      - daddyslilangel.com/photo/gallery/
      - detentiongirls.com/photo/gallery/
      - driverxxx.com/photo/gallery/
      - familyswap.xxx/photo/gallery/
      - imnotyourmommy.com/photo/gallery/
      - momlover.com/photo/gallery/
      - momsboytoy.com/photo/gallery/
      - momsfamilysecrets.com/photo/gallery/
      - momsteachsex.com/photo/gallery/
      - momstight.com/photo/gallery/
      - momswapped.com/photo/gallery/
      - momwantscreampie.com/photo/gallery/
      - momwantstobreed.com/photo/gallery/
      - myfamilypies.com/photo/gallery/
      - nubiles-casting.com/photo/gallery/
      - nubiles-porn.com/photo/gallery/
      - nubileset.com/photo/gallery/
      - nubilesporn.com/photo/gallery/
      - nubilesunscripted.com/photo/gallery/
      - petiteballerinasfucked.com/photo/gallery/
      - petitehdporn.com/photo/gallery/
      - princesscum.com/photo/gallery/
      - stepsiblingscaught.com/photo/gallery/
      - teacherfucksteens.com/photo/gallery/
      - youngermommy.com/photo/gallery/

  # Nubile Films sites
  - action: scrapeXPath
    scraper: nubileFilmsMultiScraper
    url:
      - girlsonlyporn.com/photo/gallery/
      - nubilefilms.com/photo/gallery/
      - thatsitcomshow.com/photo/gallery/

  # Standalone sites
  - action: scrapeXPath
    scraper: standaloneMultiScraper
    url:
      - anilos.com/photo/gallery/
      - brattysis.com/photo/gallery/
      - deeplush.com/photo/gallery/
      - nfbusty.com/photo/gallery/
      - nubiles.net/photo/gallery/
      - smashed.xxx/photo/gallery/

xPathScrapers:
  # Nubiles Porn sites
  nubilesPornMultiScraper:
    common: &commonSelectors
      $contentpane: //div[contains(@class, "content-pane-title")]

    scene:
      Title: &titleSelector //h2/text()
      Code: &codeSelector $contentpane//div[contains(@class,"star-rating-wrapper")]/@data-id
      Date: &dateAttr
        selector: $contentpane//span[@class="date"]/text()
        postProcess:
          - parseDate: Jan 2, 2006
      Details: &detailsAttr
        selector: //div[contains(@class, "content-pane-column")]//p/text()|//div[contains(@class, "content-pane-column")]/div/text()
        concat: "\n\n"
      Performers: &performersAttr
        Name: //div[@class="content-pane-performers"]/a/text()
      Studio: &studioFromSiteLinkAttr
        Name:
          selector: $contentpane//a[@class="site-link"]/text() | $contentpane//span[@class="site-link"]/text()
          postProcess:
            - replace:
                - regex: (.+?)\.(com|xxx)
                  with: $1
                # 'StepSiblingsCaught' => 'Step Siblings Caught'
                - regex: ([a-z])-?([A-Z])
                  with: $1 $2
                # 'Petite HDPorn' => 'Petite HD Porn'
                - regex: ([A-Z]+)(Porn)
                  with: $1 $2
            # Fix special cases
            - map:
                Daddys Lil Angel: Daddy's Lil Angel
                Im Not Your Mommy: I'm Not Your Mommy
                Moms Boy Toy: Mom's Boy Toy
                Moms Family Secrets: Mom's Family Secrets
                Moms Tight: Mom's Tight

                Nubiles ET: NubilesET
      Tags: &tagsAttr
        Name: //div[@class="categories"]/a/text()
      Image: &imageAttr
        selector: //img[@class="fake-video-player-cover"]/@src
        postProcess:
          - replace:
              - regex: ^
                with: "https:"

    gallery:
      Title: &galleryTitleAttr
        selector: *titleSelector
        postProcess:
          - replace:
              # Remove - S11:E11 part
              - regex: \s-\sS\d+:E\d+$
                with:
      Code: *codeSelector
      Details: *detailsAttr
      Date: *dateAttr
      Performers: *performersAttr
      Tags: *tagsAttr
      Studio: *studioFromSiteLinkAttr

  # Nubile Films sites
  nubileFilmsMultiScraper:
    common: *commonSelectors

    scene:
      Title: *titleSelector
      Code: *codeSelector
      Date: *dateAttr
      Details: *detailsAttr
      Performers: *performersAttr
      Studio: &nubileFilmsStudioAttr
        Name:
          selector: //link[@rel="canonical"]/@href
          postProcess:
            - replace:
                - regex: ^.*//(?:www\.)?(.+?)/.+$
                  with: $1
            - map:
                girlsonlyporn.com: Girls Only Porn
                hotcrazymess.com: Hot Crazy Mess
                nubilefilms.com: Nubile Films
                thatsitcomshow.com: That Sitcom Show
      Tags: *tagsAttr
      Image: *imageAttr

    gallery:
      Title: *galleryTitleAttr
      Details: *detailsAttr
      Date: *dateAttr
      Performers: *performersAttr
      Tags: *tagsAttr
      Studio: *nubileFilmsStudioAttr

  # Standalone sites
  standaloneMultiScraper:
    common: *commonSelectors

    scene:
      Title: *titleSelector
      Code: *codeSelector
      Date: *dateAttr
      Details: *detailsAttr
      Performers: *performersAttr
      Studio: &studioFromTitleAttr
        Name:
          selector: //title/text()
          postProcess:
            - replace:
                - regex: ^(.+?)\s-.+$
                  with: $1
      Tags: *tagsAttr
      Image: *imageAttr

    gallery:
      Title: *galleryTitleAttr
      Code: *codeSelector
      Details: *detailsAttr
      Date: *dateAttr
      Performers: *performersAttr
      Tags: *tagsAttr
      Studio: *studioFromTitleAttr
# Last Updated April 2, 2024
