zone8

package
v1.30.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 20, 2026 License: GPL-3.0 Imports: 14 Imported by: 0

Documentation

Overview

Package zone8 scrapes Zone 8 Media's two tours, englishlads.com and fityoungmen.com.

Neither has a paginated listing worth walking: English Lads' updates are reachable only through its sitemap, and Fit Young Men's `/videos` page is a rotating selection. Both publish a complete `sitemap.xml`, and both encode the shoot id — and on English Lads the publication date — directly in the URL, so the sitemap alone gives an ordered work list before a single detail page is fetched.

The two sites share a publisher and a URL convention but not a page template, so each has its own detail parser:

  • English Lads: `/video-{YYYY-MM-DD}-{id}-{N|Y}-{slug}`, with an `<h3 class="title">` naming the model, a `<p class="description">`, and a `premium-descriptive-tags` list carrying the runtime and, on pay-per-view updates, a price in GBP.
  • Fit Young Men: `/{section}-{id}-{slug}`, with the model, sport and title split across spans of one `<h1>`, a `Published: 9 Aug 26` line, and a `model-profile-model-description` paragraph.

Photo sets share the URL space on both sites and are excluded: English Lads prefixes them `photo-`, and on Fit Young Men only the sections listed in `sceneSections` are shoots rather than index pages.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Scraper

type Scraper struct {
	Client *http.Client
	// contains filtered or unexported fields
}

func New

func New(cfg SiteConfig) *Scraper

func (*Scraper) ID

func (s *Scraper) ID() string

func (*Scraper) ListScenes

func (s *Scraper) ListScenes(ctx context.Context, studioURL string, opts scraper.ListOpts) (<-chan scraper.SceneResult, error)

func (*Scraper) MatchesURL

func (s *Scraper) MatchesURL(u string) bool

func (*Scraper) Patterns

func (s *Scraper) Patterns() []string

type SiteConfig

type SiteConfig struct {
	SiteID     string
	Domain     string
	StudioName string
	Template   Template
	// Currency is the ISO code prices on this tour are quoted in; empty means
	// the tour quotes none, which is what gates price recording. It is not
	// stored with the snapshot — models.PriceSnapshot has no currency field —
	// so it exists to say out loud that English Lads' figures are pounds, not
	// the dollars every other priced scraper in FSS records.
	Currency string
}

SiteConfig describes one tour.

type Template

type Template int

Template selects the detail parser for a site.

const (
	// TemplateEnglishLads is the `shoot-listing` page with an h3 title.
	TemplateEnglishLads Template = iota
	// TemplateFitYoungMen is the `model-profile` page with a split h1.
	TemplateFitYoungMen
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL