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__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
_TELEMETRY_WINDOW_DAYS = 7
|
_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
|
_EVENT_RETENTION_DAYS = 30
|
||||||
# Richness: wagi składowych (suma=1.0). thumb to minimum higieny, canonical-bogactwo
|
# Richness: wagi składowych (suma=1.0). thumb to minimum higieny, canonical-bogactwo
|
||||||
# (desc/studio/tag/perf) waży więcej. dur średnio.
|
# (desc/studio/tag/perf) waży więcej. dur średnio.
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,13 @@ export type ChangelogEntry = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const CHANGELOG: 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',
|
id: '2026-06-26',
|
||||||
date: 'June 2026',
|
date: 'June 2026',
|
||||||
|
|
|
||||||
|
|
@ -872,6 +872,22 @@ const INJECTED_JS = `
|
||||||
if (window.__goonPatched) return;
|
if (window.__goonPatched) return;
|
||||||
window.__goonPatched = true;
|
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 --------------------------------------
|
// -- 0. Anti-adblock detection bypass --------------------------------------
|
||||||
// Hostery sprawdzają czy ad-script się załadował (np. /js/dnsads.js ustawia
|
// 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
|
// \`window.cRAds\`). Blokujemy te requesty na poziomie AD_HOSTS, więc flag
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue