name: Hotmovies sceneByName: action: scrapeXPath queryURL: https://www.hotmovies.com/adult-clips/search?sort=score&q={} scraper: sceneSearch sceneByQueryFragment: action: scrapeXPath queryURL: "{url}" scraper: sceneScraper sceneByURL: - action: scrapeXPath url: - hotmovies.com scraper: sceneScraper movieByURL: - action: scrapeXPath url: - hotmovies.com scraper: movieScraper performerByURL: - action: scrapeXPath url: - hotmovies.com scraper: performerScraper performerByName: action: scrapeXPath queryURL: https://www.hotmovies.com/porn-star/search?sort=rank&q={} scraper: performerSearch xPathScrapers: sceneScraper: scene: Title: //h1 Tags: Name: //meta[@property="og:video:tag"]/@content Performers: Name: //meta[@property="og:video:actor"]/@content URL: //meta[@name="og:url"]/@content Movies: Name: //a[@id="front-cover"]/img/@title URL: selector: //a[@id="front-cover"]/@href postProcess: &baseUrl - replace: - regex: ^/ with: https://www.hotmovies.com/ FrontImage: //a[@id="front-cover"]/img/@src Studio: Name: //a[@data-tl="studio"] URL: selector: //a[@data-tl="studio"]/@href postProcess: *baseUrl Image: //meta[@property="og:image"]/@content Date: //meta[@property="og:video:release_date"]/@content movieScraper: movie: Name: //h1 URL: //meta[@name="og:url"]/@content Director: //a[@label="Director"][1] Duration: selector: //strong[contains(text(), "Run Time")]/following-sibling::text()[1] postProcess: - replace: - regex: " hrs. " with: ":" - regex: " mins." with: ":00" Studio: Name: //a[@label="Studio"][1] URL: selector: //a[@label="Studio"][1]/@href postProcess: *baseUrl Synopsis: //article FrontImage: //a[@id="front-cover"]/@href BackImage: //a[@id="front-cover"]/following-sibling::a/@href Date: //meta[@property="og:video:release_date"]/@content performerSearch: performer: Name: //div[@id="performerlist"]//picture/img/@title URL: selector: //div[@id="performerlist"]//a[@class="performer-grid-list__performer__thumb"]/@href postProcess: *baseUrl Image: //div[@id="performerlist"]//picture/img/@src performerScraper: performer: URL: //meta[@name="og:url"]/@content Name: //meta[@name="og:title"]/@content Gender: //meta[@property="og:profile:gender"]/@content Birthdate: selector: //title[contains(text(), 'Born:')] postProcess: - replace: - regex: ^.*Born:\s([^\.]*).*$ with: $1 - parseDate: January 2 2006 Country: selector: //small[text()="From:"]/following-sibling::text()[1] postProcess: - replace: - regex: .*,\s with: "" EyeColor: selector: //small[text()="Eyes:"]/following-sibling::text()[1] postProcess: - replace: - regex: \sEyes with: "" Height: selector: //small[text()="Height:"]/following-sibling::text()[1] postProcess: - feetToCm: true Measurements: selector: //small[text()="Stats:"]/following-sibling::text()[1] postProcess: - replace: - regex: "[ \"]" with: "" Image: //a[@class="star__profile__headshot fancy"]/@href HairColor: selector: //title[contains(text(), ' hair')] postProcess: - replace: - regex: ^.*?(\w*)\shair.*$ with: $1 Details: //article Aliases: selector: //title[contains(text(), 'AKA:')] postProcess: - replace: - regex: ^.*AKA:\s([^\.]*).*$ with: $1 split: ", " Weight: selector: //title[contains(text(), ' pounds')] postProcess: - replace: - regex: ^.*?(\w*)\spounds.*$ with: $1 - lbToKg: true sceneSearch: scene: Title: //div[@class="animated-scene-title"] URL: selector: //a[@class="animated-screen"]/@href postProcess: *baseUrl Image: //img[@class="animate screenshot"]/@src Movies: Name: //div[@class="animated-scene-hiddentxt"]/a/i URL: selector: //div[@class="animated-scene-hiddentxt"]/a/@href postProcess: *baseUrl # Last Updated January 18, 2024