fix(sources): require 25 telemetry attempts before a source can show OFFLINE
freshporno (5★ fresh+rich, verified working — 206/507MB) was labeled OFFLINE off 10 playback attempts that all failed in one unlucky window (a CDN-node blip; it resolves fine now). 10 was too thin a sample to zero out a known-good source's stars. Raised the telemetry-trust threshold 10→25; below it we fall back to the proxy/heuristic health instead of declaring offline (user-report cb526949). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
19483c026b
commit
cc163e13a7
3 changed files with 29 additions and 1 deletions
|
|
@ -26,7 +26,12 @@ from app.db import session_scope
|
|||
log = logging.getLogger(__name__)
|
||||
|
||||
_TELEMETRY_WINDOW_DAYS = 7
|
||||
_TELEMETRY_MIN_ATTEMPTS = 10 # poniżej tego telemetria niemiarodajna → proxy
|
||||
# Poniżej tego telemetria niemiarodajna → proxy. Próg podniesiony 10→25 (2026-06-29):
|
||||
# freshporno (5★ fresh+rich, realnie gra — zweryfikowane 206/507MB) dostało health=0 →
|
||||
# "OFFLINE" na podstawie 10 prób z jednego pechowego okna (CDN-node blip), user-report
|
||||
# cb526949. 25 prób to sensowniejszy próg pewności zanim ogłosimy źródło offline; przy
|
||||
# mniejszej próbce lecimy na proxy/heurystykę (nie zerujemy gwiazdek znanemu-dobremu).
|
||||
_TELEMETRY_MIN_ATTEMPTS = 25
|
||||
_EVENT_RETENTION_DAYS = 30
|
||||
# Richness: wagi składowych (suma=1.0). thumb to minimum higieny, canonical-bogactwo
|
||||
# (desc/studio/tag/perf) waży więcej. dur średnio.
|
||||
|
|
|
|||
|
|
@ -16,6 +16,13 @@ export type ChangelogEntry = {
|
|||
};
|
||||
|
||||
export const CHANGELOG: ChangelogEntry[] = [
|
||||
{
|
||||
id: '2026-06-29',
|
||||
date: 'June 2026',
|
||||
items: [
|
||||
'No more brief blast of sound when a video page is opening — it stays muted until you tap.',
|
||||
],
|
||||
},
|
||||
{
|
||||
id: '2026-06-26',
|
||||
date: 'June 2026',
|
||||
|
|
|
|||
|
|
@ -872,6 +872,22 @@ const INJECTED_JS = `
|
|||
if (window.__goonPatched) return;
|
||||
window.__goonPatched = true;
|
||||
|
||||
// -- 0a. Mute autoplay until the FIRST user gesture (kills the brief unmuted-audio
|
||||
// flash gdy WebView otwiera stronę żeby przechwycić stream — report dccc05e4).
|
||||
// Override play() PRZED page JS: bez gestu → muted; po tapie usera → dźwięk
|
||||
// dozwolony (zgodne z "dźwięk dopiero po geście usera"). Element-level mute
|
||||
// niżej łapał za późno (autoplay z dźwiękiem zdążył ruszyć).
|
||||
try {
|
||||
var _goonOrigPlay = HTMLMediaElement.prototype.play;
|
||||
HTMLMediaElement.prototype.play = function() {
|
||||
if (!window.__goonUserGestured) { try { this.muted = true; } catch (e) {} }
|
||||
return _goonOrigPlay.apply(this, arguments);
|
||||
};
|
||||
var _goonAllowSound = function() { window.__goonUserGestured = true; };
|
||||
window.addEventListener('touchstart', _goonAllowSound, { once: true, capture: true });
|
||||
window.addEventListener('click', _goonAllowSound, { once: true, capture: true });
|
||||
} catch (e) {}
|
||||
|
||||
// -- 0. Anti-adblock detection bypass --------------------------------------
|
||||
// Hostery sprawdzają czy ad-script się załadował (np. /js/dnsads.js ustawia
|
||||
// \`window.cRAds\`). Blokujemy te requesty na poziomie AD_HOSTS, więc flag
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue