github peterdu1109/NotifySync v5.5.10.0
🔔 NotifySync v5.5.10.0

latest releases: v5.5.11.2, v5.5.11.1, v5.5.11.0...
7 hours ago

🇬🇧 English

📝 In Short

When a file is replaced, the bell now tells you why (Quality / Codec / Audio / Minor) instead of just "UPD". No more wondering whether the notification means "go re-watch in 4K" or "someone just added a subtitle".

✨ What's New

The UPD badge now comes with a label so you can tell at a glance what changed:

Label What it means Real example
UPD • Quality Real upgrade — better resolution, better source Movie WEB-DL 1080p → BluRay 4K
UPD • Codec Same quality, more efficient codec x264 → HEVC (smaller file)
UPD • Audio Dubbing was added VOSTFR → MULTI / VFF
UPD • Minor Small change, probably not worth re-watching Subtitle file added, metadata refresh

Why this matters: if you see UPD • Minor, you can skip it. If you see UPD • Quality, that's your signal to re-watch in better quality.


🔧 Technical details for the curious

Classification logic (heuristic, path-based, no extra API calls):

  • quality — file size grew ≥ 1.5×, OR filename picks up 2160p/4k/uhd (no→yes), OR 1080p (no→yes, not already 4K), OR bluray/remux (no→yes)
  • codec — filename picks up hevc/x265/h265/av1 (no→yes) AND size is not bigger
  • audio — filename picks up vf/vff/vfq/vfi/multi/truefrench/dubbed (no→yes)
  • minor — same path, ΔSize < 50 MB (typically: external .srt, metadata refresh, light audio re-mux)
  • null (no sub-label) — pattern not recognized; client falls back to plain UPD

Priority order is Quality > Codec > Audio > Minor. Word-boundary regex prevents false matches (vf inside vfx won't trigger Audio).

Schema migration: new nullable column Notifications.UpgradeKind (TEXT). Added via ALTER TABLE ADD COLUMN. Existing rows keep NULL until re-detected as upgrades.

Delete + re-import scenario (Sonarr/Radarr): UpgradeKind remains null because there's no "before" record to compare against. The client renders plain UPD.

Phase B (not in this release) would use item.GetMediaStreams() for precise messages like "UPD • Video (1080p H.264 → 4K HEVC HDR)" or "UPD • Audio (+FR Atmos)". Held until we see if the heuristic above covers enough cases.


🇫🇷 Français

📝 En bref

Quand un fichier est remplacé, la cloche te dit maintenant pourquoi (Qualité / Codec / Audio / Mineur) au lieu de juste "MAJ". Plus besoin de deviner si la notif veut dire "va re-regarder en 4K" ou "quelqu'un a juste ajouté un sous-titre".

✨ Quoi de Neuf

Le badge MAJ a maintenant un sous-label pour savoir d'un coup d'œil ce qui a changé :

Label Ce que ça veut dire Exemple concret
MAJ • Qualité Vraie amélioration — meilleure résolution, meilleure source Film WEB-DL 1080p → BluRay 4K
MAJ • Codec Même qualité, codec plus efficace x264 → HEVC (fichier plus petit)
MAJ • Audio Doublage ajouté VOSTFR → MULTI / VFF
MAJ • Mineur Petit changement, probablement pas la peine de re-regarder Sous-titre ajouté, refresh metadata

Pourquoi c'est utile : si tu vois MAJ • Mineur, tu passes. Si tu vois MAJ • Qualité, c'est ton signal pour re-regarder en meilleure qualité.


🔧 Détails techniques pour les curieux

Logique de classification (heuristique, basée sur le path, sans appel API supplémentaire) :

  • quality — taille a augmenté de ≥ 1.5×, OU le filename passe à 2160p/4k/uhd (non→oui), OU 1080p (non→oui, pas déjà 4K), OU bluray/remux (non→oui)
  • codec — filename passe à hevc/x265/h265/av1 (non→oui) ET taille pas plus grande
  • audio — filename passe à vf/vff/vfq/vfi/multi/truefrench/dubbed (non→oui)
  • minor — path identique, ΔSize < 50 MB (typiquement : .srt externe, refresh metadata, re-mux audio léger)
  • null (pas de sous-label) — pattern non reconnu ; le client affiche MAJ tout court

Ordre de priorité : Qualité > Codec > Audio > Mineur. Une regex avec word-boundaries évite les faux matchs (vf dans vfx ne déclenche pas Audio).

Migration schéma : nouvelle colonne nullable Notifications.UpgradeKind (TEXT). Ajoutée via ALTER TABLE ADD COLUMN. Les lignes existantes restent NULL jusqu'à être re-détectées comme upgrades.

Scénario delete + ré-import (Sonarr/Radarr) : UpgradeKind reste null parce qu'il n'y a pas de version "avant" à comparer. Le client affiche MAJ tout court.

Phase B (pas dans cette release) utiliserait item.GetMediaStreams() pour des messages précis comme "MAJ • Vidéo (1080p H.264 → 4K HEVC HDR)" ou "MAJ • Audio (+FR Atmos)". Reportée tant qu'on ne sait pas si l'heuristique ci-dessus suffit.

Don't miss a new NotifySync release

NewReleases is sending notifications on new releases.