Goon — self-hosted aggregator for adult-content scene metadata. Indexes scenes from TPDB, StashDB, and 30+ public adult tube sites. Cross-source deduplication via perceptual hash + Levenshtein distance. FastAPI backend + APScheduler worker + React Native (Expo) mobile client. FOSS, ad-free, donation-funded. See README for details.
48 lines
2 KiB
Python
48 lines
2 KiB
Python
"""Connector registry helpers.
|
|
|
|
Lazy factories — importy connectorów wykonują się dopiero w `get_movie_connectors()`
|
|
żeby uniknąć circular imports (modeles/db). Każdy entry: `(name, class)` w porządku
|
|
ingestu (primary FIRST, mirrory potem — `resolve_movie` wtedy ma do czego dokleić
|
|
mirror playback sources).
|
|
|
|
## Jak dodać nowe movie site
|
|
|
|
1. Napisz subclass `DooplayConnector` w `app/connectors/dooplay.py` (jeśli site używa
|
|
dooplay/PsyPlay WP theme) — wystarczy `name` + `base_url`. Jeśli inny theme,
|
|
napisz osobny connector implementujący `BaseMovieConnector.fetch_movies()`.
|
|
2. Dodaj entry do `_MOVIE_CONNECTORS` poniżej.
|
|
3. Backend job `_job_movie_ingest` w `app/scheduler/jobs.py` automatycznie weźmie
|
|
nowy connector przy następnym tick (24h domyślnie).
|
|
4. Do ad-hoc backfillu: `python -m app.scheduler.worker --once --strategy=movies
|
|
--performers=<nowa_nazwa>`.
|
|
|
|
## Czemu paradisehill first
|
|
|
|
Paradisehill jest jedynym sourcem z chapter markerami i pełnym metadata (director,
|
|
rating, country) → idealnie kanoniczny. Dooplay mirrory rzadko mają chaptery i
|
|
release_year zwykle pusty. Resolver `resolve_movie` po title-similarity matchuje
|
|
mirror → primary paradisehill, dodając tylko playback sources (mangoporn:luluvid,
|
|
:voe, …) które rozpakowują się na bezpośredni stream URL przez
|
|
`extract_stream_from_hoster`.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
|
|
def get_movie_connectors() -> list[tuple[str, type]]:
|
|
"""Zwraca listę (name, ConnectorCls) tuples w kolejności ingestu.
|
|
|
|
Lazy import — uniknięcie circular import bo connectory zaczepiają db/models.
|
|
"""
|
|
from app.connectors.dooplay import (
|
|
MangopornConnector,
|
|
PandamoviesConnector,
|
|
StreampornConnector,
|
|
)
|
|
from app.connectors.paradisehill import ParadisehillConnector
|
|
|
|
return [
|
|
("paradisehill", ParadisehillConnector),
|
|
("streamporn", StreampornConnector),
|
|
("pandamovies", PandamoviesConnector),
|
|
("mangoporn", MangopornConnector),
|
|
]
|