CommunityScrapers icon indicating copy to clipboard operation
CommunityScrapers copied to clipboard

primalfetishnetwork.com

Open Splash4K opened this issue 8 months ago • 3 comments

Notes

Seems like it might be a studio network restructure for Primal Fetish since that URL now redirects to Sheer.

URLs that you would expect to scrape

(Remove the ones that do not apply)

Performer example URL Scene example URL

Splash4K avatar Apr 20 '25 18:04 Splash4K

https://primalfetishnetwork.com/videos/ still seems to point a non-sheer site

feederbox826 avatar Apr 21 '25 00:04 feederbox826

Oh, I misunderstood. I thought there was an old broken scraper now

feederbox826 avatar Apr 21 '25 00:04 feederbox826

awful site with horribly inconsistent body types, not going to attempt again anytime soon

feederbox826 avatar Apr 21 '25 01:04 feederbox826

I've made this scrapper for scenes with the help of AI (not much of a coder myself) since I'm working on downloading scenes from Primal Fetish right now. Works decently after 150+ uses, the main issue is with Details (Video description), often the last paragraph or more are just a spam of keywords/tags/categories, which I tried filtering, but there's so many different formats it's provided in I gave up trying to catch them all, as it seemed easier to just delete that part manually after scrape. So maybe this will be helpful:

name: Primal Fetish Network
sceneByURL:
  - action: scrapeXPath
    url:
      - primalfetishnetwork.com
    scraper: sceneScraper
xPathScrapers:
  sceneScraper:
    scene:
      Title:
        selector: //h1[contains(@class, 'video__movieTitle')]
      Date:
        selector: //div[contains(@class, 'video__data') and contains(text(), 'Date')]
        postProcess:
          - javascript: |
              // Remove 'Date ' prefix and ordinal suffix from day
              let m = value.match(/Date (\d{1,2})(?:st|nd|rd|th)? (\w{3}) (\d{4})/);
              if (m) {
                // Pad day with leading zero if needed
                let day = m[1].padStart(2, '0');
                return `${day}-${m[2]}-${m[3]}`;
              }
              return value;
          - parseDate: 02-Jan-2006
      Performers:
        Name: //div[contains(@class, 'video__list')]/span[contains(text(), 'Models:')]/following-sibling::div[1]/a/span
      Tags:
        Name: //div[contains(@class, 'video__listLinks--tags')]/a
      Details:
        selector: (//div[contains(@class, 'video-desc')])[1]/p
        concat: "\n\n"
      Image:
        selector: //meta[@property="og:image"]/@content
      Studio:
        Name:
          selector: //div[contains(@class, 'video__listLinks--tags')]/span[contains(text(), 'Studios:')]/following-sibling::a
          postProcess:
            - javascript: |
                if (!value || value.trim() === "") {
                  return "Primal Fetish";
                }
                return value;

Leser91 avatar Jul 10 '25 10:07 Leser91

Thanks for the scraper template, adapted it to work with URLs. The details just can't really be helped

feederbox826 avatar Jul 25 '25 23:07 feederbox826