mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
fix #4270
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
|
||||||
import time
|
import time
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
@@ -17,19 +16,22 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class TMDb(object):
|
class TMDb(object):
|
||||||
TMDB_API_KEY = "TMDB_API_KEY"
|
|
||||||
TMDB_LANGUAGE = "TMDB_LANGUAGE"
|
|
||||||
TMDB_SESSION_ID = "TMDB_SESSION_ID"
|
|
||||||
TMDB_WAIT_ON_RATE_LIMIT = "TMDB_WAIT_ON_RATE_LIMIT"
|
|
||||||
TMDB_DEBUG_ENABLED = "TMDB_DEBUG_ENABLED"
|
|
||||||
TMDB_CACHE_ENABLED = "TMDB_CACHE_ENABLED"
|
|
||||||
TMDB_PROXIES = "TMDB_PROXIES"
|
|
||||||
TMDB_DOMAIN = "TMDB_DOMAIN"
|
|
||||||
|
|
||||||
_req = None
|
_req = None
|
||||||
_session = None
|
_session = None
|
||||||
|
|
||||||
def __init__(self, obj_cached=True, session=None):
|
def __init__(self, obj_cached=True, session=None):
|
||||||
|
self._api_key = None
|
||||||
|
self._language = "en-US"
|
||||||
|
self._session_id = None
|
||||||
|
self._wait_on_rate_limit = True
|
||||||
|
self._debug_enabled = False
|
||||||
|
self._cache_enabled = True
|
||||||
|
self._proxies = None
|
||||||
|
self._domain = None
|
||||||
|
self._page = None
|
||||||
|
self._total_results = None
|
||||||
|
self._total_pages = None
|
||||||
|
|
||||||
if session is not None:
|
if session is not None:
|
||||||
self._req = RequestUtils(session=session, proxies=self.proxies)
|
self._req = RequestUtils(session=session, proxies=self.proxies)
|
||||||
else:
|
else:
|
||||||
@@ -39,103 +41,88 @@ class TMDb(object):
|
|||||||
self._reset = None
|
self._reset = None
|
||||||
self._timeout = 15
|
self._timeout = 15
|
||||||
self.obj_cached = obj_cached
|
self.obj_cached = obj_cached
|
||||||
if os.environ.get(self.TMDB_LANGUAGE) is None:
|
|
||||||
os.environ[self.TMDB_LANGUAGE] = "en-US"
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def page(self):
|
def page(self):
|
||||||
return os.environ["page"]
|
return self._page
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def total_results(self):
|
def total_results(self):
|
||||||
return os.environ["total_results"]
|
return self._total_results
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def total_pages(self):
|
def total_pages(self):
|
||||||
return os.environ["total_pages"]
|
return self._total_pages
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def api_key(self):
|
def api_key(self):
|
||||||
return os.environ.get(self.TMDB_API_KEY)
|
return self._api_key
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def domain(self):
|
def domain(self):
|
||||||
return os.environ.get(self.TMDB_DOMAIN)
|
return self._domain
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def proxies(self):
|
def proxies(self):
|
||||||
proxy = os.environ.get(self.TMDB_PROXIES)
|
return self._proxies
|
||||||
if proxy is not None:
|
|
||||||
proxy = eval(proxy)
|
|
||||||
return proxy
|
|
||||||
|
|
||||||
@proxies.setter
|
@proxies.setter
|
||||||
def proxies(self, proxies):
|
def proxies(self, proxies):
|
||||||
if proxies is not None:
|
self._proxies = proxies
|
||||||
os.environ[self.TMDB_PROXIES] = str(proxies)
|
|
||||||
|
|
||||||
@api_key.setter
|
@api_key.setter
|
||||||
def api_key(self, api_key):
|
def api_key(self, api_key):
|
||||||
os.environ[self.TMDB_API_KEY] = str(api_key)
|
self._api_key = str(api_key)
|
||||||
|
|
||||||
@domain.setter
|
@domain.setter
|
||||||
def domain(self, domain):
|
def domain(self, domain):
|
||||||
os.environ[self.TMDB_DOMAIN] = str(domain)
|
self._domain = str(domain)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def language(self):
|
def language(self):
|
||||||
return os.environ.get(self.TMDB_LANGUAGE)
|
return self._language
|
||||||
|
|
||||||
@language.setter
|
@language.setter
|
||||||
def language(self, language):
|
def language(self, language):
|
||||||
os.environ[self.TMDB_LANGUAGE] = language
|
self._language = language
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def has_session(self):
|
def has_session(self):
|
||||||
return True if os.environ.get(self.TMDB_SESSION_ID) else False
|
return True if self._session_id else False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def session_id(self):
|
def session_id(self):
|
||||||
if not os.environ.get(self.TMDB_SESSION_ID):
|
if not self._session_id:
|
||||||
raise TMDbException("Must Authenticate to create a session run Authentication(username, password)")
|
raise TMDbException("Must Authenticate to create a session run Authentication(username, password)")
|
||||||
return os.environ.get(self.TMDB_SESSION_ID)
|
return self._session_id
|
||||||
|
|
||||||
@session_id.setter
|
@session_id.setter
|
||||||
def session_id(self, session_id):
|
def session_id(self, session_id):
|
||||||
os.environ[self.TMDB_SESSION_ID] = session_id
|
self._session_id = session_id
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def wait_on_rate_limit(self):
|
def wait_on_rate_limit(self):
|
||||||
if os.environ.get(self.TMDB_WAIT_ON_RATE_LIMIT) == "False":
|
return self._wait_on_rate_limit
|
||||||
return False
|
|
||||||
else:
|
|
||||||
return True
|
|
||||||
|
|
||||||
@wait_on_rate_limit.setter
|
@wait_on_rate_limit.setter
|
||||||
def wait_on_rate_limit(self, wait_on_rate_limit):
|
def wait_on_rate_limit(self, wait_on_rate_limit):
|
||||||
os.environ[self.TMDB_WAIT_ON_RATE_LIMIT] = str(wait_on_rate_limit)
|
self._wait_on_rate_limit = bool(wait_on_rate_limit)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def debug(self):
|
def debug(self):
|
||||||
if os.environ.get(self.TMDB_DEBUG_ENABLED) == "True":
|
return self._debug_enabled
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
@debug.setter
|
@debug.setter
|
||||||
def debug(self, debug):
|
def debug(self, debug):
|
||||||
os.environ[self.TMDB_DEBUG_ENABLED] = str(debug)
|
self._debug_enabled = bool(debug)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cache(self):
|
def cache(self):
|
||||||
if os.environ.get(self.TMDB_CACHE_ENABLED) == "False":
|
return self._cache_enabled
|
||||||
return False
|
|
||||||
else:
|
|
||||||
return True
|
|
||||||
|
|
||||||
@cache.setter
|
@cache.setter
|
||||||
def cache(self, cache):
|
def cache(self, cache):
|
||||||
os.environ[self.TMDB_CACHE_ENABLED] = str(cache)
|
self._cache_enabled = bool(cache)
|
||||||
|
|
||||||
@cached(maxsize=settings.CACHE_CONF["tmdb"], ttl=settings.CACHE_CONF["meta"])
|
@cached(maxsize=settings.CACHE_CONF["tmdb"], ttl=settings.CACHE_CONF["meta"])
|
||||||
def cached_request(self, method, url, data, json,
|
def cached_request(self, method, url, data, json,
|
||||||
@@ -197,30 +184,30 @@ class TMDb(object):
|
|||||||
else:
|
else:
|
||||||
raise TMDbException("达到请求频率限制,将在 %d 秒后重试..." % sleep_time)
|
raise TMDbException("达到请求频率限制,将在 %d 秒后重试..." % sleep_time)
|
||||||
|
|
||||||
json = req.json()
|
json_data = req.json()
|
||||||
|
|
||||||
if "page" in json:
|
if "page" in json_data:
|
||||||
os.environ["page"] = str(json["page"])
|
self._page = json_data["page"]
|
||||||
|
|
||||||
if "total_results" in json:
|
if "total_results" in json_data:
|
||||||
os.environ["total_results"] = str(json["total_results"])
|
self._total_results = json_data["total_results"]
|
||||||
|
|
||||||
if "total_pages" in json:
|
if "total_pages" in json_data:
|
||||||
os.environ["total_pages"] = str(json["total_pages"])
|
self._total_pages = json_data["total_pages"]
|
||||||
|
|
||||||
if self.debug:
|
if self.debug:
|
||||||
logger.info(json)
|
logger.info(json_data)
|
||||||
logger.info(self.cached_request.cache_info())
|
logger.info(self.cached_request.cache_info())
|
||||||
|
|
||||||
if "errors" in json:
|
if "errors" in json_data:
|
||||||
raise TMDbException(json["errors"])
|
raise TMDbException(json_data["errors"])
|
||||||
|
|
||||||
if "success" in json and json["success"] is False:
|
if "success" in json_data and json_data["success"] is False:
|
||||||
raise TMDbException(json["status_message"])
|
raise TMDbException(json_data["status_message"])
|
||||||
|
|
||||||
if key:
|
if key:
|
||||||
return json.get(key)
|
return json_data.get(key)
|
||||||
return json
|
return json_data
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
if self._session:
|
if self._session:
|
||||||
|
|||||||
Reference in New Issue
Block a user