fix(listy): prog dlugosci nie ukrywa juz scen o NIEZNANEJ dlugosci w drill-downach
Zgloszenia 2026-08-20 ("hentaimama dalej 0 scen", "porndish zaprzestal ingestu",
"czemu sexu ma tylko 38 scen"). Trzy razy ten sam pierwotny powod, i to NIE ingest.
`api.ts` doklejal `min_duration_sec=60` do KAZDEGO listScenes bez wlasnej wartosci.
W SQL `duration_sec >= 60` jest nieprawda takze dla NULL, wiec prog wycinal nie tylko
krotkie sceny, ale wszystkie o NIEZNANEJ dlugosci. Zmierzone na produkcji:
supjav, hentaigasm, hentaimama, hentaiplay, javflix, xanimeporn 100% NULL
xhamster 90,3% (360 709) porndish 88,9% (37 736) porntrex 76,8% (616 345)
latestpornvideo 68,4% xnxx 65,2% (226 217) xvideos 63,8% (258 711)
Czyli wejscie w konkretny serwis ukrywalo ponad 1,5 mln scen i wygladalo jak martwy
albo zatrzymany tube. Ekrany drill-down (SiteScenes, PerformerScenes, StudioScenes,
TagScenes) przekazuja teraz 0: user wszedl JAWNIE w te pozycje, wiec ma zobaczyc jej
zawartosc. Glowny feed zostaje z progiem 60s, bo tam chroni przed teaserami.
Zweryfikowane na produkcji: hentaimama / supjav / xanimeporn 0 -> 50 pozycji.
Pulapka NULL opisana w api.ts, zeby ktos nie "uproscil" tego z powrotem.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
20c04698b1
commit
ae3c4ac9bb
6 changed files with 31 additions and 0 deletions
|
|
@ -134,6 +134,14 @@ export class GoonClient {
|
|||
// "Takie sceny po 1 min to można wywalić". Pornapp/freshporno czasem
|
||||
// zassuje teasery/trailery 30-50s, które są bezużyteczne na listach.
|
||||
// Caller może override przez explicit 0 (lub null), np. admin browse.
|
||||
//
|
||||
// UWAGA, drugie dno: w SQL `duration_sec >= 60` jest NIEPRAWDĄ dla NULL, więc ten
|
||||
// próg wycina też sceny o NIEZNANEJ długości, a nie tylko krótkie. Dla głównego
|
||||
// feedu to akceptowalne, ale przy wejściu w KONKRETNY serwis/performera/tag ukrywał
|
||||
// ogromne części katalogu i wyglądał jak zatrzymany ingest (zgłoszenia 2026-08-20:
|
||||
// hentaimama 0 scen, porndish "zaprzestał ingestu"). Pomiar: 100% scen supjav,
|
||||
// hentaigasm, hentaimama, hentaiplay, javflix i xanimeporn ma duration NULL, do tego
|
||||
// xhamster 90%, porndish 89%, porntrex 77%. Ekrany drill-down przekazują więc 0.
|
||||
const minDur = params.min_duration_sec ?? 60;
|
||||
if (minDur > 0) qs.set('min_duration_sec', String(minDur));
|
||||
if (params.max_duration_sec !== undefined)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,13 @@ export type ChangelogEntry = {
|
|||
};
|
||||
|
||||
export const CHANGELOG: ChangelogEntry[] = [
|
||||
{
|
||||
id: '2026-08-20',
|
||||
date: 'August 2026',
|
||||
items: [
|
||||
'Sites, performers, studios and tags were hiding a large part of the catalogue. The "minimum length" rule was also dropping every scene whose length we simply do not know, which is most of them on some sites: hentaimama, supjav, hentaigasm, hentaiplay, javflix and xanimeporn showed nothing at all, and xhamster, porndish and porntrex showed a fraction. Opening one of those now shows everything it has.',
|
||||
],
|
||||
},
|
||||
{
|
||||
id: '2026-08-18i',
|
||||
date: 'August 2026',
|
||||
|
|
|
|||
|
|
@ -148,6 +148,10 @@ export function PerformerScenesScreen() {
|
|||
client.listScenes({
|
||||
performer_ids: [id],
|
||||
vertical: vertical ?? undefined,
|
||||
// 0 = nie nakładaj progu długości. User wszedł JAWNIE w tę pozycję, więc
|
||||
// ukrywanie scen o nieznanej długości (w SQL NULL nie przechodzi `>= 60`)
|
||||
// wyglądało jak pusty albo zatrzymany serwis. Patrz komentarz w api.ts.
|
||||
min_duration_sec: 0,
|
||||
tags: selectedTag ? [selectedTag.slug] : undefined,
|
||||
sort: 'release_date',
|
||||
per_page: 200,
|
||||
|
|
|
|||
|
|
@ -64,6 +64,10 @@ export function SiteScenesScreen() {
|
|||
origin,
|
||||
tags: selectedTags.length > 0 ? selectedTags : undefined,
|
||||
sort: 'release_date',
|
||||
// 0 = nie nakładaj progu długości. User wszedł JAWNIE w tę pozycję, więc
|
||||
// ukrywanie scen o nieznanej długości (w SQL NULL nie przechodzi `>= 60`)
|
||||
// wyglądało jak pusty albo zatrzymany serwis. Patrz komentarz w api.ts.
|
||||
min_duration_sec: 0,
|
||||
page: pageParam,
|
||||
per_page: PER_PAGE,
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -125,6 +125,10 @@ export function StudioScenesScreen() {
|
|||
client.listScenes({
|
||||
studio_slugs: [slug],
|
||||
vertical: vertical ?? undefined,
|
||||
// 0 = nie nakładaj progu długości. User wszedł JAWNIE w tę pozycję, więc
|
||||
// ukrywanie scen o nieznanej długości (w SQL NULL nie przechodzi `>= 60`)
|
||||
// wyglądało jak pusty albo zatrzymany serwis. Patrz komentarz w api.ts.
|
||||
min_duration_sec: 0,
|
||||
sort: 'release_date',
|
||||
per_page: 200,
|
||||
has_playback: true,
|
||||
|
|
|
|||
|
|
@ -35,6 +35,10 @@ export function TagScenesScreen() {
|
|||
queryFn: () =>
|
||||
client.listScenes({
|
||||
tags: [slug],
|
||||
// 0 = nie nakładaj progu długości. User wszedł JAWNIE w tę pozycję, więc
|
||||
// ukrywanie scen o nieznanej długości (w SQL NULL nie przechodzi `>= 60`)
|
||||
// wyglądało jak pusty albo zatrzymany serwis. Patrz komentarz w api.ts.
|
||||
min_duration_sec: 0,
|
||||
// Wertykał przyniesiony ze sceny. Bez niego backend wycina wszystkie sekcje
|
||||
// poboczne, więc tag kliknięty w anime pokazywał sceny spoza anime (e9de414c).
|
||||
vertical: vertical ?? undefined,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue