абузы: free-панели new-api на вкладке (роут /api/panels + грид), CSS вынесен из JS, панельный классификатор даёт freeapi-вес, тесты
This commit is contained in:
@@ -19,6 +19,7 @@ from .sources_tg_abuse import TG_ABUSE
|
||||
from .sources_ext4 import EXTRA5
|
||||
from .sources_ext5 import EXTRA6
|
||||
from .sources_fresh import fresh as _fresh_sources
|
||||
from .sources_quality import quality_sources as _quality_sources
|
||||
from .sources_x import X_SOURCES
|
||||
|
||||
|
||||
@@ -298,7 +299,7 @@ def _gen_sources():
|
||||
return out
|
||||
|
||||
|
||||
def all_sources():
|
||||
def all_sources(include_fresh=True):
|
||||
"""Реестр + пользовательские источники из панели, без дублей по url и по имени.
|
||||
|
||||
Дедуп по двум ключам обязателен:
|
||||
@@ -306,8 +307,10 @@ def all_sources():
|
||||
* name — имя источника является первичным ключом в source_flags/runs, поэтому
|
||||
зеркала одного и того же ресурса (rss.arxiv vs export.arxiv, old.reddit vs
|
||||
www.reddit) обязаны схлопываться, иначе переключение/состояние «плывут».
|
||||
Побеждает первое вхождение; порядок: реестр → сгенерированные → свежая волна →
|
||||
Побеждает первое вхождение; порядок: реестр → сгенерированные → свежая и quality-волны →
|
||||
пользовательские → abuse-radar → panels.json.
|
||||
|
||||
include_fresh=False исключает текущий generated fresh-модуль при регенерации.
|
||||
"""
|
||||
from . import source_state
|
||||
extra = []
|
||||
@@ -318,7 +321,8 @@ def all_sources():
|
||||
("name", "category", "kind", "url", "adapter", "tags", "limit", "detail", "extra")}
|
||||
extra.append(Source(**d))
|
||||
seen_url, seen_name, out = set(), set(), []
|
||||
for s in SOURCES + _gen_sources() + _fresh_sources(S) + extra + radar_sources() + panel_sources():
|
||||
fresh = _fresh_sources(S) if include_fresh else []
|
||||
for s in SOURCES + _gen_sources() + fresh + _quality_sources(S) + extra + radar_sources() + panel_sources():
|
||||
key = (s.url or "").rstrip("/").lower()
|
||||
name = (s.name or "").strip().lower()
|
||||
if (key and key in seen_url) or (name and name in seen_name):
|
||||
|
||||
Reference in New Issue
Block a user