Skip to content

Wasylq/FSS

FSS — FullStudioScraper

CI codecov Go Report Card Go Reference

Scrapes all scenes and metadata from a studio URL. Designed to be easily extended to new sites. Can push scraped metadata into a local Stash instance.

Supported sites

618 sites across 15+ platforms — full list with URL patterns →

Platform Count Examples
Score Group 93 Scoreland, XL Girls, 18Eighteen, Leg Sex, Naughty Mag, 50 Plus MILFs, …
Gamma/Algolia 79 Adult Time, BiPhoria, Burning Angel, Devil's Film, Diabolic, Dogfart Network, Evil Angel, Fame Digital, Girlcore, Modern-Day Sins, OpenLife, Pretty Dirty, Pure Taboo, Transfixed, White Ghetto, Wicked, Zero Tolerance Films, …
WP video-elements 12 DaughterSwap, MommysBoy, PervMom, SisLovesMe, …
SpiceVids collections 1001 AdamAndEveVOD, Crunchboy, 1111Customs, AdultTime, NewSensations, … (Aylo marketplace)
Aylo/Juan 33 Babes, BangBros, BigStr, Brazzers, Dancing Bear, Erito, HentaiPros, Icon Male, Killergram, LetsDoeIt, Metro, MileHigh, Noir Male, Reality Kings, Sean Cody, Sex Selector, SpiceVids, Sweet Sinner, Sweetheart Video, Transsensual, Virtual Porn, WhyNotBi, …
FYC/PornPros 20 Passion HD, Tiny4K, POVD, Casting Couch X, Lubed, SpyFam, Cum4K, Exotic4K, WetVR, BBC Pie, …
WordPress 5 Anal Therapy, Family Therapy, Tara Tainton, …
POVR/WankzVR 4 BrasilVR, MilfVR, TranzVR, WankzVR
Up-Timely CMS 5 DAS!, Idea Pocket, Madonna, MOODYZ, S1 NO.1 STYLE
SexMex Pro CMS 3 Exposed Latinas, SexMex, Trans Queens
ModelCentro 26 Penny Barber, The Jerky Girls, Mugur Porn, Thicc Vision, Cum Trainer, Monster Males, …
MetArt Network 13 MetArt, SexArt, ALS Scan, Viv Thomas, MetArt X, Errotica Archives, Stunning 18, …
Railway/Express 3 Smoking Erotica, Smoking Models, Spanking Glamour
Grooby 42 Grooby Girls, TGirls.xxx, Brazilian Transsexuals, TGirl Japan, Grooby VR, Black TGirls, Femout.xxx, Ladyboy.xxx, …
New Sensations 8 New Sensations, FamilyXXX, Hot Wife XXX, Girl Girl XXX, Fresh Outta High School, Shane Diesel XXX, …
Wow Network 4 WowGirls, Ultra Films, angels.love, sensual.love
Stashbox 1+ StashDB, any stashbox instance (config-driven)
Standalone 54 Anal Vids, APClips, Bare Back Studios, Beautiful Agony, Clips4Sale, Crunchboy, DEEP'S, Fakings, Glory Quest, GrandparentsX, I Feel Myself, I Shot Myself, Jules Jordan, Kink, KM Produce, Lucas Entertainment, ManyVids, Mousouzoku, Naked News, Pornhub, Pure CFNM, r18.dev, Raw Fuck Club, SexLikeReal, Takara TV, VENUS, …

Install

Pick one — pre-built binary is easiest, system packages for auto-updates, Docker if you prefer containers, source if you want to hack on it.

Option 1 — pre-built binary (recommended)

Download the archive for your platform from the latest release, extract, and put the binary on your PATH. All binaries are static (no runtime dependencies).

Asset naming: fss-<version>-<os>-<arch>.tar.gz (or .zip for Windows). Available platforms: linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64.

Linux

# Resolves to the latest tag (e.g. v1.11.0) by following the GitHub redirect.
VERSION=$(curl -sIL -o /dev/null -w '%{url_effective}' https://github.com/Wasylq/FSS/releases/latest | sed 's|.*/||')
ARCH=amd64    # or arm64 for Raspberry Pi 4/5, ARM cloud instances, etc.

curl -LO https://github.com/Wasylq/FSS/releases/download/${VERSION}/fss-${VERSION}-linux-${ARCH}.tar.gz
tar xzf fss-${VERSION}-linux-${ARCH}.tar.gz
sudo install -m 0755 fss /usr/local/bin/fss
fss version

If you don't have sudo, drop fss into ~/.local/bin/ (already on your PATH on most distros) instead.

macOS

VERSION=$(curl -sIL -o /dev/null -w '%{url_effective}' https://github.com/Wasylq/FSS/releases/latest | sed 's|.*/||')
ARCH=arm64    # Apple Silicon (M1+); use amd64 for Intel Macs

curl -LO https://github.com/Wasylq/FSS/releases/download/${VERSION}/fss-${VERSION}-darwin-${ARCH}.tar.gz
tar xzf fss-${VERSION}-darwin-${ARCH}.tar.gz
sudo install -m 0755 fss /usr/local/bin/fss

# Gatekeeper will block unsigned binaries the first time. Either:
xattr -d com.apple.quarantine /usr/local/bin/fss
# or: System Settings → Privacy & Security → "Open anyway" after the first failed run.

fss version

Windows (PowerShell)

$Version = (Invoke-RestMethod -Uri "https://api.github.com/repos/Wasylq/FSS/releases/latest").tag_name

Invoke-WebRequest -Uri "https://github.com/Wasylq/FSS/releases/download/$Version/fss-$Version-windows-amd64.zip" -OutFile fss.zip
Expand-Archive -Path fss.zip -DestinationPath .

# Move into a folder that's on your PATH, e.g.:
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\bin" | Out-Null
Move-Item -Force fss.exe "$env:USERPROFILE\bin\fss.exe"

# Add %USERPROFILE%\bin to your PATH (one-time):
[Environment]::SetEnvironmentVariable("Path", "$env:Path;$env:USERPROFILE\bin", "User")
# Restart your shell, then:
fss version

Option 2 — system package (.deb / .rpm / AUR)

Each release also publishes .deb and .rpm packages. Download them from the latest release.

TAG=$(curl -sIL -o /dev/null -w '%{url_effective}' https://github.com/Wasylq/FSS/releases/latest | sed 's|.*/||')
VERSION=${TAG#v}    # asset filenames drop the leading "v"
ARCH=amd64          # or arm64

# Debian / Ubuntu
curl -LO "https://github.com/Wasylq/FSS/releases/download/${TAG}/fss_${VERSION}_${ARCH}.deb"
sudo dpkg -i "fss_${VERSION}_${ARCH}.deb"

# Fedora / RHEL
curl -LO "https://github.com/Wasylq/FSS/releases/download/${TAG}/fss-${VERSION}-1.x86_64.rpm"
sudo rpm -i "fss-${VERSION}-1.x86_64.rpm"

Arch Linux (AUR)

yay -S fss

Option 3 — Docker (multi-arch image on GHCR)

docker pull ghcr.io/wasylq/fss:latest
docker run --rm ghcr.io/wasylq/fss:latest list-scrapers

See docs/docker.md for volume conventions, the bind-mount UID gotcha, and a docker compose example with Stash.

Option 4 — build from source

Requires Go 1.25+ (matches the go directive in go.mod).

git clone https://github.com/Wasylq/FSS
cd FSS
go build -o fss .
./fss version

Or via go install (binary lands in $GOBIN, typically ~/go/bin/):

go install github.com/Wasylq/FSS@latest

Quick start

# Scrape a studio — outputs JSON by default
fss scrape https://www.manyvids.com/Profile/590705/bettie-bondage/Store/Videos

# Incremental mode (default): only fetches new scenes
fss scrape <url>

# Full re-scrape from scratch
fss scrape --full <url>

# Re-fetch all metadata, soft-delete removed scenes
fss scrape --refresh <url>

# Output both JSON and CSV
fss scrape --output json,csv --out ./data <url>

# Use SQLite as the store
fss scrape --db ./fss.db --name "Bettie Bondage" <url>

# See supported sites
fss list-scrapers

NFO sidecar files

# Dry-run: match video files against FSS metadata
fss identify /path/to/videos --dir ./data

# Write .nfo files next to matched videos
fss identify /path/to/videos --dir ./data --apply

# Optional: install ffprobe (FFmpeg) for duration-based disambiguation
sudo apt install ffmpeg  # or: brew install ffmpeg

Stash integration

# List unmatched scenes in Stash
fss stash unmatched

# Dry-run: show what would be imported
fss stash import --dir ./data

# Apply changes
fss stash import --dir ./data --apply

Config file

Optional YAML config at the platform-specific path:

Platform Path
Linux ~/.config/fss/config.yaml
macOS ~/Library/Application Support/fss/config.yaml
Windows %APPDATA%\fss\config.yaml

See config.example.yaml for all available options with descriptions. To get started, grab it directly and drop it into place:

# Linux
mkdir -p ~/.config/fss
curl -fsSL https://raw.githubusercontent.com/Wasylq/FSS/master/config.example.yaml \
  -o ~/.config/fss/config.yaml

# macOS
mkdir -p ~/Library/Application\ Support/fss
curl -fsSL https://raw.githubusercontent.com/Wasylq/FSS/master/config.example.yaml \
  -o ~/Library/Application\ Support/fss/config.yaml

Or if you already have the repo cloned: cp config.example.yaml ~/.config/fss/config.yaml

CLI flags always override config values. See docs/usage.md for the full reference.

Documentation

Document Contents
docs/scrapers.md Supported sites, URL patterns, shared packages
docs/usage.md CLI reference, data model, output formats, SQLite
docs/identify.md NFO sidecar file generation: matching videos, writing .nfo files
docs/stash.md Stash integration: matching, merging, import workflow
docs/docker.md Running FSS in Docker — image tags, volumes, compose examples
docs/library.md Using FSS as a Go library — registry API, streaming results, Scene model
docs/architecture.md System design, plugin registry, streaming model, store abstraction
CONTRIBUTING.md How to add a new scraper, reference implementations
SECURITY.md Credential handling, network policy, vulnerability reporting

About

fss or Full Studio Scrapper - scrape all videos metadata of your favourite performers or studios

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages