name: "MyFreeCams"
sceneByURL:
  - action: scrapeXPath
    url:
      - share.myfreecams.com/a/
    scraper: sceneScraper
galleryByURL:
  - action: scrapeXPath
    url:
      - share.myfreecams.com/a/
    scraper: galleryScraper
performerByURL:
  - action: scrapeXPath
    url:
      - profiles.myfreecams.com/
    scraper: performerScraper
xPathScrapers:
  sceneScraper:
    scene:
      Title: //h3/text()
      Studio:
        Name:
          fixed: "MFC Share"
      Date: //span[@class[contains(., "album-at")]]/@title
      Details: //div[@class="description-view"]/text()
      Tags:
        Name:
          selector: //div[@class[contains(., "tags-container")]]/a/text()
          postProcess:
            - replace:
              - regex: ^#
                with: ""
      Performers:
        Name: //a[@class="user-link"]
      Image:
        selector: //meta[@name="twitter:image"]/@content
  galleryScraper:
    gallery:
      Title: //h3/text()
      Studio:
        Name:
          fixed: "MFC Share"
      Date: //span[@class[contains(., "album-at")]]/@title
      Details: //div[@class="description-view"]/text()
      Tags:
        Name:
          selector: //div[@class[contains(., "tags-container")]]/a/text()
          postProcess:
            - replace:
              - regex: ^#
                with: ""
      Performers:
        Name: //a[@class="user-link"]
  performerScraper:
    performer:
      Name: //span[@id="username_value"]/text()
      Country: //span[@id="country_value"]/text()
      Ethnicity: //span[@id="ethnicity_value"]/text()
      Gender: //span[@id="gender_value"]/text()
      HairColor: //span[@id="hair_value"]/text()
      EyeColor: //span[@id="eyes_value"]/text()
      Height:
        selector: //span[@id="height_value"][contains(text(), "centimeters")]/text() # only get metric because we can't handle both; it's one or the other
        postProcess:
          - replace:
            - regex: ((\d+)\s(.*))
              with: $2
      Weight:
        selector: //span[@id="weight_value"][contains(text(), "kilos")]/text() # only get metric because we can't handle both; it's one or the other
        postProcess:
          - replace:
            - regex: ((\d+)\s(.*))
              with: $2
      Image:
        selector: //img[@id="main_photo"]/@src | //img[@id="profile_avatar"]/@src
        postProcess:
          - replace: # main photo 250px size modifier can be removed to get full size image; 300px avatar can be fetched instead of the 90px one
            - regex: \.250\.jpg
              with: .jpg
            - regex: \.90x90\.jpg
              with: .300x300.jpg
# Last Updated December 13, 2023
