perverzija fixed
This commit is contained in:
@@ -35,7 +35,7 @@ This is the current implementation inventory as of this snapshot of the repo. Us
|
|||||||
| `omgxxx` | `studio-network` | yes | no | Best template for sites/networks/stars filter catalogs. |
|
| `omgxxx` | `studio-network` | yes | no | Best template for sites/networks/stars filter catalogs. |
|
||||||
| `paradisehill` | `mainstream-tube` | no | no | Simple page scraper. |
|
| `paradisehill` | `mainstream-tube` | no | no | Simple page scraper. |
|
||||||
| `perfectgirls` | `studio-network` | no | no | Studio archive. |
|
| `perfectgirls` | `studio-network` | no | no | Studio archive. |
|
||||||
| `perverzija` | `studio-network` | no | no | Multi-format/HLS examples. |
|
| `perverzija` | `studio-network` | no | no | WordPress (Generatepress/quick-view) HTML scraper for tube.perverzija.com (mirrors top-tier studio releases: MommysGirl, PureTaboo, VXN, AdultTime, etc). Default feed `/` (page N: `/page/N/`), `featured=featured` option swaps in `featured-scenes/` prefix before the page segment. Search is native WordPress `/?s=query` (page N: `/page/N/?s=query`), but `tag:`/`stars:`/`studio:`/`genre:` query prefixes and a background-learned title→slug map (populated from `studio`/`stars`/`tag`/`genre` links seen on every listing/detail page, normalized lowercase) route a bare keyword straight to the matching `/{kind}/{slug}/page/N/` archive when it matches — e.g. `milf` resolves via the learned `stars-milf` class to `/stars/milf/` rather than falling back to `?s=milf`. Listing cards (`class="video-item post..."`) carry everything needed (`data-url` = canonical WP detail page, `data-embed`-encoded `<iframe src="…xtremestream.xyz/player/index.php?data=ID">`, `tag-*`/`stars-*` CSS classes, `class="time_dur"` duration, studio link) so the default/tag/page feeds need no per-item enrichment; only the generic `?s=` search path is card-light (no embed/tags inline) and fetches each detail page concurrently (`futures::join_all`) for the iframe src plus `Studio:`/`Stars:`/`Tags:`/`Genres:` `<strong>` blocks — resolved detail data is cached in the `videos` SQLite table (`db::insert_video`/`get_video`) keyed by the WP page URL to skip re-fetching on repeat searches. `video.url` is the WordPress detail page (`data-url`/card href) — confirmed NOT yt-dlp-resolvable (the player loads via the quick-view AJAX iframe, not static HTML) — so `formats` carries the real media: the embed `index.php` path is rewritten to `xs1.php` (returns an HLS `.m3u8` master) and requires `Referer: https://xtremestream.xyz/` on every request (segments and master alike) or the host CDN returns `403`; **regression note**: an earlier revision set `video.url` to this same `xs1.php` media link, which then 403'd in `check.py`/any plain `GET` because the bare `url` field carries no header contract — fixed by separating `video.url` (page) from `formats[0].url` (media+Referer). Thumbnails (`tube.perverzija.com/wp-content/uploads/...jpg`) load directly, no proxy/referer. No `/api/uploaders` (studio/stars are folded into `tags`, no dedicated profile page schema confirmed). No proxy needed. |
|
||||||
| `pimpbunny` | `onlyfans` | no | yes | Proxy-backed playback and thumbnail handling. |
|
| `pimpbunny` | `onlyfans` | no | yes | Proxy-backed playback and thumbnail handling. |
|
||||||
| `pmvhaven` | `pmv-compilation` | no | no | PMV grouping example. |
|
| `pmvhaven` | `pmv-compilation` | no | no | PMV grouping example. |
|
||||||
| `porn00` | `mainstream-tube` | no | no | Lightweight scraper. |
|
| `porn00` | `mainstream-tube` | no | no | Lightweight scraper. |
|
||||||
|
|||||||
@@ -512,10 +512,15 @@ impl PerverzijaProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let page_url = if id_url.is_empty() {
|
||||||
|
url_str.clone()
|
||||||
|
} else {
|
||||||
|
id_url.clone()
|
||||||
|
};
|
||||||
let mut video_item = VideoItem::new(
|
let mut video_item = VideoItem::new(
|
||||||
id,
|
id,
|
||||||
title,
|
title,
|
||||||
url_str.clone(),
|
page_url,
|
||||||
"perverzija".to_string(),
|
"perverzija".to_string(),
|
||||||
thumb,
|
thumb,
|
||||||
duration,
|
duration,
|
||||||
@@ -622,7 +627,7 @@ impl PerverzijaProvider {
|
|||||||
let mut video_item = VideoItem::new(
|
let mut video_item = VideoItem::new(
|
||||||
id,
|
id,
|
||||||
title,
|
title,
|
||||||
url_str.clone(),
|
lookup_url.clone(),
|
||||||
"perverzija".to_string(),
|
"perverzija".to_string(),
|
||||||
thumb,
|
thumb,
|
||||||
duration,
|
duration,
|
||||||
@@ -795,7 +800,7 @@ impl PerverzijaProvider {
|
|||||||
let mut video_item = VideoItem::new(
|
let mut video_item = VideoItem::new(
|
||||||
id,
|
id,
|
||||||
title,
|
title,
|
||||||
url_str.clone(),
|
lookup_url.clone(),
|
||||||
"perverzija".to_string(),
|
"perverzija".to_string(),
|
||||||
thumb,
|
thumb,
|
||||||
duration,
|
duration,
|
||||||
|
|||||||
Reference in New Issue
Block a user