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