aboutsummaryrefslogtreecommitdiff
path: root/addons/metadata.tvshows.themoviedb.org.python/libs/imdbratings.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/metadata.tvshows.themoviedb.org.python/libs/imdbratings.py')
-rw-r--r--addons/metadata.tvshows.themoviedb.org.python/libs/imdbratings.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/addons/metadata.tvshows.themoviedb.org.python/libs/imdbratings.py b/addons/metadata.tvshows.themoviedb.org.python/libs/imdbratings.py
new file mode 100644
index 0000000000..331e55bae1
--- /dev/null
+++ b/addons/metadata.tvshows.themoviedb.org.python/libs/imdbratings.py
@@ -0,0 +1,62 @@
+# -*- coding: UTF-8 -*-
+#
+# Copyright (C) 2020, Team Kodi
+#
+# 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 <https://www.gnu.org/licenses/>.
+#
+# IMDb ratings based on code in metadata.themoviedb.org.python by Team Kodi
+# pylint: disable=missing-docstring
+
+
+import re
+from . import api_utils
+from . import settings
+
+IMDB_RATINGS_URL = 'https://www.imdb.com/title/{}/'
+IMDB_RATING_REGEX = re.compile(r'itemprop="ratingValue".*?>.*?([\d.]+).*?<')
+IMDB_VOTES_REGEX = re.compile(r'itemprop="ratingCount".*?>.*?([\d,]+).*?<')
+
+
+def get_details(imdb_id):
+ if not imdb_id:
+ return {}
+ votes, rating = _get_ratinginfo(imdb_id)
+ return _assemble_imdb_result(votes, rating)
+
+def _get_ratinginfo(imdb_id):
+ response = api_utils.load_info(IMDB_RATINGS_URL.format(imdb_id), default = '', resp_type='text', verboselog=settings.VERBOSELOG)
+ return _parse_imdb_result(response)
+
+def _assemble_imdb_result(votes, rating):
+ result = {}
+ if votes and rating:
+ result['ratings'] = {'imdb': {'votes': votes, 'rating': rating}}
+ return result
+
+def _parse_imdb_result(input_html):
+ rating = _parse_imdb_rating(input_html)
+ votes = _parse_imdb_votes(input_html)
+ return votes, rating
+
+def _parse_imdb_rating(input_html):
+ match = re.search(IMDB_RATING_REGEX, input_html)
+ if (match):
+ return float(match.group(1))
+ return None
+
+def _parse_imdb_votes(input_html):
+ match = re.search(IMDB_VOTES_REGEX, input_html)
+ if (match):
+ return int(match.group(1).replace(',', ''))
+ return None