MCPcopy Create free account
hub / github.com/Dispatcharr/Dispatcharr / _background_refresh

Method _background_refresh

apps/channels/api_views.py:3641–3688  ·  view source on GitHub ↗
(rec_id)

Source from the content-addressed store, hash-verified

3639 instance = self.get_object()
3640
3641 def _background_refresh(rec_id):
3642 try:
3643 from .tasks import _resolve_poster_for_program
3644 from .models import Recording
3645 from core.utils import send_websocket_update
3646 from django.db import close_old_connections
3647
3648 rec = Recording.objects.select_related("channel").get(id=rec_id)
3649 cp = rec.custom_properties or {}
3650 program = cp.get("program") or {}
3651
3652 poster_logo_id, poster_url = _resolve_poster_for_program(
3653 rec.channel.name, program, channel_logo_id=rec.channel.logo_id,
3654 )
3655
3656 # Refresh and merge to avoid overwriting concurrent changes.
3657 # Only upgrade — never replace a real poster with a channel logo fallback.
3658 rec.refresh_from_db()
3659 fresh_cp = rec.custom_properties or {}
3660 updated = False
3661 is_channel_logo_fallback = (
3662 poster_logo_id == rec.channel.logo_id
3663 and not poster_url
3664 )
3665 if program and program.get("id"):
3666 fresh_cp["program"] = program
3667 updated = True
3668 if not is_channel_logo_fallback:
3669 if poster_logo_id and fresh_cp.get("poster_logo_id") != poster_logo_id:
3670 fresh_cp["poster_logo_id"] = poster_logo_id
3671 updated = True
3672 if poster_url and fresh_cp.get("poster_url") != poster_url:
3673 fresh_cp["poster_url"] = poster_url
3674 updated = True
3675
3676 if updated:
3677 rec.custom_properties = fresh_cp
3678 rec.save(update_fields=["custom_properties"])
3679
3680 send_websocket_update('updates', 'update', {
3681 "success": True,
3682 "type": "recording_updated",
3683 "recording_id": rec_id,
3684 })
3685 except Exception as e:
3686 logger.debug(f"refresh-artwork background failed for {rec_id}: {e}")
3687 finally:
3688 close_old_connections()
3689
3690 t = threading.Thread(target=_background_refresh, args=(instance.id,), daemon=True)
3691 t.start()

Callers

nothing calls this directly

Calls 4

send_websocket_updateFunction · 0.90
getMethod · 0.45
saveMethod · 0.45

Tested by

no test coverage detected