You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.3 KiB
37 lines
1.3 KiB
3 years ago
|
from modules import util
|
||
|
from modules.util import Failed
|
||
|
|
||
|
logger = util.logger
|
||
|
|
||
|
builders = ["reciperr_list", "stevenlu_popular"]
|
||
|
|
||
|
stevenlu_url = "https://s3.amazonaws.com/popular-movies/movies.json"
|
||
|
|
||
|
class Reciperr:
|
||
|
def __init__(self, config):
|
||
|
self.config = config
|
||
|
|
||
|
def _request(self, url, name="Reciperr"):
|
||
|
response = self.config.get(url)
|
||
|
if response.status_code >= 400:
|
||
|
raise Failed(f"{name} Error: JSON not found at {url}")
|
||
|
return response.json()
|
||
|
|
||
|
def validate_list(self, data):
|
||
|
valid_lists = []
|
||
|
for reciperr_list in util.get_list(data, split=False):
|
||
|
if "imdb_id" not in self._request(reciperr_list)[0]:
|
||
|
raise Failed(f"Reciperr Error: imdb_id not found in the JSON at {reciperr_list}")
|
||
|
valid_lists.append(reciperr_list)
|
||
|
return valid_lists
|
||
|
|
||
|
def get_imdb_ids(self, method, data):
|
||
|
if method == "reciperr_list":
|
||
|
logger.info(f"Processing Reciperr Movies")
|
||
|
return [(i["imdb_id"], "imdb") for i in self._request(data)]
|
||
|
elif method == "stevenlu_popular":
|
||
|
logger.info(f"Processing StevenLu Popular Movies")
|
||
|
return [(i["imdb_id"], "imdb") for i in self._request(stevenlu_url, name="StevenLu")]
|
||
|
else:
|
||
|
raise Failed(f"Reciperr Error: Method {method} not supported")
|