mirror of
https://github.com/Dispatcharr/Dispatcharr.git
synced 2026-01-23 02:35:14 +00:00
Metadata test
This commit is contained in:
parent
de53c88486
commit
ddec17b430
2 changed files with 27 additions and 9 deletions
|
|
@ -1,6 +1,7 @@
|
|||
import logging
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
import requests
|
||||
import tmdbsimple as tmdb
|
||||
from dateutil import parser as date_parser
|
||||
from django.conf import settings
|
||||
|
|
@ -15,6 +16,12 @@ logger = logging.getLogger(__name__)
|
|||
TMDB_API_KEY_SETTING = "tmdb-api-key"
|
||||
TMDB_IMAGE_BASE = "https://image.tmdb.org/t/p/original"
|
||||
METADATA_CACHE_TIMEOUT = 60 * 60 * 6 # 6 hours
|
||||
_REQUESTS_SESSION = requests.Session()
|
||||
_REQUESTS_SESSION.mount(
|
||||
"https://",
|
||||
requests.adapters.HTTPAdapter(pool_connections=20, pool_maxsize=40, max_retries=3),
|
||||
)
|
||||
tmdb.REQUESTS_SESSION = _REQUESTS_SESSION
|
||||
|
||||
|
||||
def get_tmdb_api_key() -> Optional[str]:
|
||||
|
|
@ -89,12 +96,12 @@ def fetch_tmdb_metadata(media_item: MediaItem) -> Optional[Dict[str, Any]]:
|
|||
try:
|
||||
if media_item.is_movie:
|
||||
movie = tmdb.Movies(lookup_id)
|
||||
info = movie.info()
|
||||
credits = movie.credits()
|
||||
info = movie.info(append_to_response="credits,images")
|
||||
credits = info.get("credits", {})
|
||||
elif media_item.item_type == MediaItem.TYPE_SHOW:
|
||||
tv = tmdb.TV(lookup_id)
|
||||
info = tv.info()
|
||||
credits = tv.credits()
|
||||
info = tv.info(append_to_response="credits,images")
|
||||
credits = info.get("credits", {})
|
||||
except Exception: # noqa: BLE001
|
||||
logger.exception(
|
||||
"Failed to retrieve TMDB info for %s using id %s", media_item, tmdb_id
|
||||
|
|
@ -131,12 +138,12 @@ def fetch_tmdb_metadata(media_item: MediaItem) -> Optional[Dict[str, Any]]:
|
|||
try:
|
||||
if media_item.is_movie:
|
||||
movie = tmdb.Movies(tmdb_id)
|
||||
info = movie.info()
|
||||
credits = movie.credits()
|
||||
info = movie.info(append_to_response="credits,images")
|
||||
credits = info.get("credits", {})
|
||||
elif media_item.item_type == MediaItem.TYPE_SHOW:
|
||||
tv = tmdb.TV(tmdb_id)
|
||||
info = tv.info()
|
||||
credits = tv.credits()
|
||||
info = tv.info(append_to_response="credits,images")
|
||||
credits = info.get("credits", {})
|
||||
else:
|
||||
return None
|
||||
except Exception: # noqa: BLE001
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ from celery import shared_task
|
|||
from celery.result import AsyncResult
|
||||
from asgiref.sync import async_to_sync
|
||||
from channels.layers import get_channel_layer
|
||||
from django.conf import settings
|
||||
from django.db import transaction
|
||||
from django.db.models import Q
|
||||
from django.utils import timezone
|
||||
|
|
@ -30,6 +31,9 @@ from apps.media_library.vod_sync import (
|
|||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
METADATA_TASK_QUEUE = getattr(settings, "CELERY_METADATA_QUEUE", None)
|
||||
METADATA_TASK_PRIORITY = getattr(settings, "CELERY_METADATA_PRIORITY", None)
|
||||
|
||||
|
||||
def _start_next_scan(library: Library) -> None:
|
||||
if library.scans.filter(status=LibraryScan.STATUS_RUNNING).exists():
|
||||
|
|
@ -391,7 +395,14 @@ def scan_library_task(
|
|||
if item.id in metadata_queue_ids:
|
||||
return False
|
||||
metadata_queue_ids.add(item.id)
|
||||
sync_metadata_task.delay(item.id, scan_id=str(scan.id))
|
||||
args = (item.id,)
|
||||
kwargs = {"scan_id": str(scan.id)}
|
||||
options = {}
|
||||
if METADATA_TASK_QUEUE:
|
||||
options["queue"] = METADATA_TASK_QUEUE
|
||||
if METADATA_TASK_PRIORITY is not None:
|
||||
options["priority"] = METADATA_TASK_PRIORITY
|
||||
sync_metadata_task.apply_async(args=args, kwargs=kwargs, **options)
|
||||
return True
|
||||
|
||||
def refresh_stage_counters() -> None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue