"Newest ingest" bez filtrow pomija sceny z dociagania archiwum (backfill): deep-crawl tubepornclassic dokladal 7,9 tys. scen z lat 2016-2018 dziennie, a xhamster/xnxx/xvideos/ sxyprn kolejne 3,3 tys., wszystkie na szczycie listy. Po odcieciu eporner (2 tys. anonimowych uploadow dziennie) mial 121 ze 150 pozycji, wiec na pierwszych 8 stronach jedno zrodlo zajmuje najwyzej 1/3 strony, dopoki sa inne; nadmiar zjezdza nizej, nic nie ginie. Pierwsze 3 strony: eporner 51, xvideos 24, xnxx 20, youporn 20, pornxpph 15, fullporner 12. Z filtrami i w sekcjach JAV/Anime bez zmian. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
import uuid
|
|
|
|
from app.api.scenes import _diversify_pages
|
|
|
|
|
|
def _ids(n, origin):
|
|
return [(uuid.uuid4(), origin) for _ in range(n)]
|
|
|
|
|
|
def _mixed(flood_share=0.7, n=300, others=("b", "c", "d")):
|
|
"""Jak feed 2026-09-19: jedno zrodlo zalewa, reszta kapie, wszystko w kolejnosci czasu."""
|
|
items, k = [], 0
|
|
for i in range(n):
|
|
if (i % 10) < flood_share * 10:
|
|
items.append((uuid.uuid4(), "flood"))
|
|
else:
|
|
items.append((uuid.uuid4(), others[k % len(others)]))
|
|
k += 1
|
|
return items
|
|
|
|
|
|
def test_flood_is_capped_while_other_sources_exist():
|
|
items = _mixed()
|
|
pages = _diversify_pages(items, 10, 1 / 3)
|
|
origin = dict(items)
|
|
# 90 scen z innych zrodel wystarcza na 15 stron po 6; tyle stron trzyma limit
|
|
for pg in pages[:15]:
|
|
assert len(pg) == 10
|
|
assert sum(origin[i] == "flood" for i in pg) <= 4
|
|
|
|
|
|
def test_nothing_is_lost_and_pages_are_full():
|
|
items = _mixed()
|
|
pages = _diversify_pages(items, 10, 1 / 3)
|
|
assert sorted(i for pg in pages for i in pg) == sorted(i for i, _ in items)
|
|
assert all(len(pg) == 10 for pg in pages[:-1])
|
|
|
|
|
|
def test_two_sources_still_fill_pages():
|
|
items = _ids(40, "a") + _ids(40, "b")
|
|
pages = _diversify_pages(items, 10, 1 / 3)
|
|
assert all(len(pg) == 10 for pg in pages)
|
|
|
|
|
|
def test_order_within_source_is_kept():
|
|
items = _mixed()
|
|
flat = [i for pg in _diversify_pages(items, 10, 1 / 3) for i in pg]
|
|
for src in ("flood", "b", "c", "d"):
|
|
mine = [i for i, o in items if o == src]
|
|
mine_set = set(mine)
|
|
assert [i for i in flat if i in mine_set] == mine
|