diff --git a/cps/metadata_provider/comicvine.py b/cps/metadata_provider/comicvine.py
new file mode 100644
index 00000000..0bc67488
--- /dev/null
+++ b/cps/metadata_provider/comicvine.py
@@ -0,0 +1,37 @@
+# -*- coding: utf-8 -*-
+
+# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
+# Copyright (C) 2021 OzzieIsaacs
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+
+import requests
+from cps.services.Metadata import Metadata
+
+apikey = "57558043c53943d5d1e96a9ad425b0eb85532ee6"
+
+class ComicVine(Metadata):
+ __name__ = "ComicVine"
+
+ def search(self, query):
+ if self.active:
+ headers = {
+ 'User-Agent': 'Not Evil Browser' # ,
+ }
+ result = requests.get("https://comicvine.gamespot.com/api/search?api_key="
+ + apikey + "&resources=issue&query=" + query + "&sort=name:desc&format=json", headers=headers)
+ return [result.json()['results']]
+
+
diff --git a/cps/metadata_provider/toogle.py b/cps/metadata_provider/google.py
similarity index 84%
rename from cps/metadata_provider/toogle.py
rename to cps/metadata_provider/google.py
index b205e62b..d22b1f4d 100644
--- a/cps/metadata_provider/toogle.py
+++ b/cps/metadata_provider/google.py
@@ -20,12 +20,12 @@
import requests
from cps.services.Metadata import Metadata
-class Toogle(Metadata):
+class Google(Metadata):
__name__ = "Google"
def search(self, query):
if self.active:
- return [1]
- return []
+ result = requests.get("https://www.googleapis.com/books/v1/volumes?q="+query.replace(" ","+"))
+ return [result.json()['items']]
diff --git a/cps/metadata_provider/scholar.py b/cps/metadata_provider/scholar.py
new file mode 100644
index 00000000..3314ba62
--- /dev/null
+++ b/cps/metadata_provider/scholar.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+
+# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
+# Copyright (C) 2021 OzzieIsaacs
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+from scholarly import scholarly
+
+import json
+from cps.services.Metadata import Metadata
+#try:
+
+#except ImportError:
+# have_scholar = False
+# pass
+
+
+
+class scholar(Metadata):
+ __name__ = "ComicVine"
+
+ def search(self, query):
+ if self.active:
+ if True:
+ scholar_gen = scholarly.search_pubs(' '.join(query.split('+')))
+ i = 0
+ result = []
+ for publication in scholar_gen:
+ del publication['source']
+ result.append(publication)
+ i += 1
+ if (i >= 10):
+ break
+ return json.dumps(result)
+ return "[]"
+
+
+
diff --git a/cps/search_metadata.py b/cps/search_metadata.py
index bb924dba..655e63b5 100644
--- a/cps/search_metadata.py
+++ b/cps/search_metadata.py
@@ -17,49 +17,45 @@
# along with this program. If not, see .
from __future__ import division, print_function, unicode_literals
-import sys
-import datetime
-from functools import wraps
+from cps.services.Metadata import Metadata
import os
-from flask import Blueprint, request, render_template, Response, g, make_response, abort
+from flask import Blueprint
from flask_login import login_required
-from flask_login import current_user
-from sqlalchemy.sql.expression import func, text, or_, and_, true
-from werkzeug.security import check_password_hash
-from . import constants, logger, config, db, calibre_db, ub, services, get_locale, isoLanguages
-# from .metadata_provider
+from . import constants, logger
+from os.path import basename, isfile
+import importlib
+import sys, inspect
opds = Blueprint('metadata', __name__)
log = logger.create()
-
-#for module in os.listdir(os.join(constants.BASE_DIR, "metadata_provider")):
-# if module == '__init__.py' or module[-3:] != '.py':
-# continue
-# __import__(module[:-3], locals(), globals())
-#del module
-
-from os.path import basename, isfile
-# import glob
+new_list = list()
meta_dir = os.path.join(constants.BASE_DIR, "cps", "metadata_provider")
modules = os.listdir(os.path.join(constants.BASE_DIR, "cps", "metadata_provider")) #glob.glob(join(dirname(__file__), "*.py"))
-__all__ = [ basename(f)[:-3] for f in modules if isfile(os.path.join(meta_dir, f)) and not f.endswith('__init__.py')]
+for f in modules:
+ if isfile(os.path.join(meta_dir, f)) and not f.endswith('__init__.py'):
+ a = basename(f)[:-3]
+ try:
+ importlib.import_module("cps.metadata_provider." + a)
+ new_list.append(a)
+ except ImportError:
+ log.error("Import error for metadata source: {}".format(a))
+ pass
-import importlib
-for a in __all__:
- importlib.import_module("cps.metadata_provider." + a)
+def list_classes(provider_list):
+ classes = list()
+ for element in provider_list:
+ for name, obj in inspect.getmembers(sys.modules["cps.metadata_provider." + element]):
+ if inspect.isclass(obj) and name != "Metadata" and issubclass(obj, Metadata):
+ classes.append(obj())
+ return classes
-import sys, inspect
-def print_classes():
- for a in __all__:
- for name, obj in inspect.getmembers(sys.modules["cps.metadata_provider." + a]):
- if inspect.isclass(obj):
- print(obj)
-
-print_classes()
+cl = list_classes(new_list)
+for c in cl:
+ print(c.search("Walking"))
@opds.route("/metadata/provider")
@login_required
diff --git a/cps/services/Metadata.py b/cps/services/Metadata.py
index 05778c25..d6e4e7d5 100644
--- a/cps/services/Metadata.py
+++ b/cps/services/Metadata.py
@@ -25,8 +25,3 @@ class Metadata():
def set_status(self, state):
self.active = state
-
- def search(self, query):
- if self.active:
- return [1]
- return []