SayUncle Network Scraper

SayUncle Network Scraper

Summary

A comprehensive Python scraper for the entire SayUncle network, supporting 29+ gay adult sites including Bromo, Yes Father, Missionary Boys, Family Dick, Brother Crush, and more. Uses the SayUncle Elasticsearch API for fast scene/performer search.

Source URL

Features

  • Scene scraping by URL - Scrape any SayUncle network video URL
  • Scene scraping by code - Extract scene codes from filenames (e.g., brc0199 from brother-crush_brc0199_full_1080)
  • Scene scraping by name - Search scenes by title using the SayUncle Elasticsearch API
  • Performer scraping by URL - Full performer details with images and bio
  • Performer scraping by name - Search performers using Elasticsearch
  • Full performer auto-population - Clicking “+” on performers auto-fills all their data
  • 29 site prefixes supported - Covers the entire SayUncle network
  • Fast Elasticsearch search - Direct API access for instant results

What It Does

The SayUncle scraper extracts metadata from the entire SayUncle network (React SPA platform). It:

  1. Scrapes scene metadata from any sayuncle.com video URL
  2. Extracts scene codes from filenames (e.g., brc0199) and looks them up via Elasticsearch
  3. Searches for scenes and performers by name using the public Elasticsearch API
  4. Fetches complete performer data inline so clicking “+” auto-fills everything
  5. Converts body measurements (height in feet/inches → cm, weight in lbs → kg)
  6. Extracts scene codes from cover images for reliable scene identification

Example filename:

brother-crush_brc0199_full_1080.mp4

Extracts code brc0199 and fetches:

  • Title: Full scene title
  • Studio: Brother Crush
  • Code: brc0199
  • Description: Scene description
  • Date: Release date
  • Performers: Full cast with photos, bios, measurements, ethnicity, hair color
  • Tags: Scene tags
  • Cover: High-quality poster image

Supported Sites

The scraper supports all 29+ SayUncle network sites via scene code prefixes:

  • fdk - Family Dick
  • brc - Brother Crush
  • yps - Yes Father
  • mbz - Missionary Boys
  • lle - Brotherly Love
  • bgz - Big Boys
  • yfr - Young Friends
  • dcp - Daddy Cop
  • bmg - Boy Massage
  • shb - Show Homies
  • slb - Stepson Love Boys
  • twk - Twink
  • bac - Bad Cop
  • dct - Doctor
  • byh - Boy Hood
  • suc - SayUncle
  • mtd - Method
  • sas - Say Ass
  • tdk - The Dick
  • vgp - Vegas
  • pig - Piggyback
  • drs - Dress
  • rub - Rub
  • suf - Surf
  • fut - Fut
  • ano - Another
  • bvs - Boys
  • sco - Scout
  • eur - Euro
  • And more…

Installation (Docker)

Files required:

  • SayUncle.yml (attached)
  • SayUncle.py (attached)

Folder Structure

docker/
└── docker-compose.yml
└── scrapers/
    └── SayUncle/
        ├── SayUncle.yml
        └── SayUncle.py

Docker Compose Configuration

Add the following under volumes in your docker-compose.yml:

- ./scrapers/SayUncle:/root/.stash/scrapers/SayUncle

Restart the Stash container:

docker compose up -d

The scraper will appear in Stash’s scraper list.

Usage

Scraping by URL

  1. Edit a scene in Stash
  2. Enter a sayuncle.com URL in the URL field
  3. Click “Scrape with… > SayUncle”

Scraping by Scene Code (from filename)

  1. Your file is named something like brother-crush_brc0199_full_1080.mp4
  2. Click “Scrape with… > SayUncle”
  3. The scraper extracts brc0199 and fetches the scene automatically

Scraping by Search

  1. Edit a scene in Stash
  2. Click the search icon next to “Scrape with…”
  3. Search for the scene title
  4. Select the correct scene from results

Performer Search

  1. When creating a performer, click the search icon
  2. Search by performer name
  3. Select the correct performer - all details are auto-filled

Technical Details

  • Language: Python 3
  • Dependencies: requests (auto-installed via py_common)
  • Platform: React SPA (extracts window.__INITIAL_STATE__ JSON)
  • Search API: https://tours-store.psmcdn.net/sau_network/_search (Elasticsearch)
  • Scene code pattern: (prefix)(3-5 digits) where prefix is 2-4 letters

Notes

  • The scraper uses the public SayUncle Elasticsearch API for searches
  • Scene codes are extracted from cover image URLs for reliable identification
  • Performer data includes body measurements automatically converted to metric
  • All scene codes are normalized to lowercase for consistency
  • The regex pattern handles various filename formats (underscores, dashes, spaces)

Attachments:

Enjoy!

Submitted to CommunityScrapers.

Sayuncle.com and network sites are currently supported in PaperStreetMedia.yml and Teamskeet scrapers. I would to add improvements there.