name: ThePornDB performerByName: action: scrapeJson queryURL: https://api.metadataapi.net/performers?q={} scraper: performerSearch performerByURL: - action: scrapeJson url: - metadataapi.net/performers/ queryURL: "{url}" queryURLReplace: url: - regex: ^(.+metadataapi.net)/ with: https://api.metadataapi.net/ scraper: performerScraper sceneByURL: - action: scrapeJson url: - metadataapi.net/scenes/ queryURL: "{url}" queryURLReplace: url: - regex: ^(.+metadataapi.net)/ with: https://api.metadataapi.net/ scraper: sceneScraper sceneByName: action: scrapeJson queryURL: https://api.metadataapi.net/scenes?parse={} scraper: sceneSearch sceneByQueryFragment: action: scrapeJson queryURL: "{url}" scraper: sceneScraper sceneByFragment: action: scrapeJson queryURL: https://api.metadataapi.net/scenes?parse={filename}&hash={oshash}&limit=1 scraper: sceneQueryScraper queryURLReplace: filename: - regex: "[^a-zA-Z\\d\\-._~]" # clean filename so that it can construct a valid url with: "." # "%20" - regex: \.+ with: "." movieByURL: - action: scrapeJson url: - metadataapi.net/movies/ scraper: movieScraper queryURL: "{url}" queryURLReplace: url: - regex: ^(.+metadataapi.net)/ with: https://api.metadataapi.net/ jsonScrapers: sceneSearch: scene: Title: # Prevent having duplicated title so it don't get ignored by stash selector: data.#.[title,_id] postProcess: - replace: - regex: \[|\" with: "" - regex: \, with: " [" Date: data.#.date URL: selector: data.#.id postProcess: - replace: - regex: ^ with: "https://api.metadataapi.net/scenes/" Image: data.#.background.small Details: data.#.description performerSearch: performer: Name: data.#.name URL: selector: data.#.id postProcess: - replace: - regex: ^ with: https://api.metadataapi.net/performers/ performerScraper: common: $extras: data.extras performer: Name: data.name Details: data.bio Gender: $extras.gender Birthdate: $extras.birthday Country: $extras.nationality Ethnicity: $extras.ethnicity HairColor: $extras.hair_colour Weight: selector: $extras.weight postProcess: - replace: - regex: kg with: Height: selector: $extras.height postProcess: - replace: - regex: cm with: Measurements: $extras.measurements Tattoos: $extras.tattoos Piercings: $extras.piercings Aliases: data.aliases Image: selector: data.image postProcess: - replace: - regex: .+male\.png$ with: sceneScraper: common: $performers: data.performers scene: Title: data.title Details: data.description Date: data.date URL: data.url Image: selector: data.background.full postProcess: - replace: - regex: .+default\d+\.png$ with: Performers: Name: data.performers.#.parent.name URL: selector: data.performers.#.parent.id postProcess: - replace: - regex: ^ with: "https://api.metadataapi.net/performers/" Studio: Name: data.site.name Tags: Name: data.tags.#.tag sceneQueryScraper: common: $data: data.0 $performers: data.0.performers scene: Title: $data.title Details: $data.description Date: $data.date URL: $data.url Image: $data.background.full Performers: Name: $data.performers.#.parent.name URL: selector: $data.performers.#.parent.id postProcess: - replace: - regex: ^ with: "https://api.metadataapi.net/performers/" Studio: Name: $data.site.name Tags: Name: selector: $data.id postProcess: - replace: - regex: ^ with: "https://api.metadataapi.net/scenes/" - subScraper: selector: data.tags.#.tag concat: "|" split: "|" movieScraper: movie: Name: data.title Studio: Name: data.site.name FrontImage: data.background.full Synopsis: data.description Date: data.date Duration: data.duration Director: data.director.name driver: headers: - Key: User-Agent Value: stashjson/1.0.0 #- Key: Authorization # Uncomment and add a valid API Key after the `Bearer ` part # Value: Bearer zUotW1dT5ESmpIpMnccUNczf8q4C9Thzn07ZqygE # Last Updated October 02, 2022