]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
fanart: Allow grabbers to report mandatory config
authorE.Smith <31170571+azlm8t@users.noreply.github.com>
Wed, 3 Oct 2018 14:11:49 +0000 (15:11 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 8 Oct 2018 12:01:16 +0000 (14:01 +0200)
This allows them to specify that they need a user key, etc.

lib/py/tvh/tv_meta_tmdb.py
support/tvhmeta

index f28a240543a2521c8679365ff7b72d928c321a54..7341ee968b739ba6e14d92fa8bc839b90c63bdbf 100755 (executable)
@@ -28,6 +28,9 @@ def get_capabilities():
         "description": "Grab movie details from TMDB.",
         "supports_tv": False,
         "supports_movie": True,
+        "required_config" : {
+            "tmdb-key" : "string"
+        },
     }
 
 
index 727a29b962ddcaf654114002a967a47f55736277..792a2d882bc2b2e59c3c5627bc0d31f3e18179d9 100755 (executable)
@@ -56,6 +56,7 @@ import os
 # right)
 sys.path.insert(0, os.path.join(os.path.dirname(__file__), '.'))
 sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'lib', 'py', "tvh"))
+sys.path.append("/usr/local/bin")
 
 class TvhMeta(object):
   def __init__(self, host, port, user, password, grabber_args):
@@ -64,7 +65,7 @@ class TvhMeta(object):
     self.user = user
     self.password = password
     self.grabber_args = grabber_args
-    logging.info("grabber_args=%s" % grabber_args)
+    logging.debug("grabber_args=%s" % grabber_args)
 
   @staticmethod
   def get_meta_grabbers():
@@ -77,7 +78,7 @@ class TvhMeta(object):
         grabbers.add(filename)
     return sorted(list(grabbers))
 
-  def _get_meta_grabbers_for_capability_common(self, capability):
+  def _get_meta_grabbers_for_capability_common(self, capability = None, addfn = None):
     grabbers = self.get_meta_grabbers()
     logging.debug("Got grabbers %s" % grabbers)
     ret = set()
@@ -89,8 +90,11 @@ class TvhMeta(object):
         cap_fn = getattr(mod, "get_capabilities")
         capabilities = cap_fn()
         logging.debug("Module %s has capabilities %s", module_name, capabilities)
-        if capabilities[capability]:
-          ret.add(module_name)
+        if capability is None or capabilities[capability]:
+          if addfn:
+            addfn(mod, module_name, capabilities)
+          else:
+            ret.add(module_name)
       except Exception as e:
         logging.exception("Could not import module %s when searching for %s: %s" % (module_name, capability, e))
     return sorted(list(ret))
@@ -101,6 +105,12 @@ class TvhMeta(object):
   def get_meta_grabbers_for_tv(self):
       return self._get_meta_grabbers_for_capability_common("supports_tv")
 
+  def get_meta_grabbers_capabilities(self):
+      ret = {}
+      def addit(mod,module_name,capabilities): ret[module_name] = capabilities
+      self._get_meta_grabbers_for_capability_common(addfn = addit)
+      return ret
+
   def _get_module_init_args(self, module_name):
     """Return initialization arguments suitable for the module."""
     if self.grabber_args is None:
@@ -346,7 +356,9 @@ So for "tv_meta_tmdb" we would have "tmdb-key", "tmdb-user", etc.
     optp.add_argument('--modules-tv', default=None,
                     help='Specify comma-separated list of modules for fetching artwork.')
     optp.add_argument('--list-grabbers', default=None, action="store_true",
-                    help='Generate a list of available grabbers'),
+                    help='Generate a list of available grabbers.'),
+    optp.add_argument('--list-grabber-capabilities', default=None, action="store_true",
+                    help='Generate a list of available grabbers with their capabilities.'),
     optp.add_argument('--debug', default=None, action="store_true",
                     help='Enable debug.')
 
@@ -360,7 +372,11 @@ So for "tv_meta_tmdb" we would have "tmdb-key", "tmdb-user", etc.
     grabber_args = parse_remaining_args(remaining_args)
     tvhmeta = TvhMeta(opts.host, opts.port, opts.user, opts.password, grabber_args)
     if (opts.list_grabbers):
-      print(json.dumps(tvhmeta.get_meta_grabbers()))
+      print(json.dumps(tvhmeta.get_meta_grabbers(), sort_keys=True))
+      return 0
+
+    if (opts.list_grabber_capabilities):
+      print(json.dumps(tvhmeta.get_meta_grabbers_capabilities(), sort_keys=True))
       return 0
 
     if (opts.uuid is None):