def validate_anidb_ids(self, anidb_ids, language): anidb_list = util.get_int_list(anidb_ids, "AniDB ID") anidb_values = [] for anidb_id in anidb_list: try: anidb_values.append(self._validate(anidb_id, language)) except Failed as e: logger.error(e) if len(anidb_values) > 0: return anidb_values raise Failed(f"AniDB Error: No valid AniDB IDs in {anidb_list}")
def validate_tmdb_ids(self, tmdb_ids, tmdb_method): tmdb_list = util.get_int_list(tmdb_ids, f"TMDb {type_map[tmdb_method]} ID") tmdb_values = [] for tmdb_id in tmdb_list: try: tmdb_values.append(self.validate_tmdb(tmdb_id, tmdb_method)) except Failed as e: logger.error(e) if len(tmdb_values) == 0: raise Failed(f"TMDb Error: No valid TMDb IDs in {tmdb_list}") return tmdb_values
def validate_anilist_ids(self, anilist_ids, studio=False): anilist_id_list = util.get_int_list(anilist_ids, "AniList ID") anilist_values = [] query = f"query ($id: Int) {{{'Studio(id: $id) {name}' if studio else 'Media(id: $id) {id}'}}}" for anilist_id in anilist_id_list: try: self._request(query, {"id": anilist_id}) anilist_values.append(anilist_id) except Failed as e: logger.error(e) if len(anilist_values) > 0: return anilist_values raise Failed(f"AniList Error: No valid AniList IDs in {anilist_ids}")
def _tag(self, tag, limit, language): anidb_ids = [] current_url = f"{urls['tag']}/{tag}" while True: response = self._request(current_url, language=language) anidb_ids.extend( util.get_int_list( response.xpath("//td[@class='name main anime']/a/@href"), "AniDB ID")) next_page_list = response.xpath("//li[@class='next']/a/@href") if len(anidb_ids) >= limit or len(next_page_list) == 0: break time.sleep(2) current_url = f"{base_url}{next_page_list[0]}" return anidb_ids[:limit]
def _relations(self, anidb_id, language): response = self._request( f"{urls['anime']}/{anidb_id}{urls['relation']}", language=language) return util.get_int_list(response.xpath("//area/@href"), "AniDB ID")
def _popular(self, language): response = self._request(urls["popular"], language=language) return util.get_int_list( response.xpath("//td[@class='name anime']/a/@href"), "AniDB ID")
def get_anidb_relations(self, anidb_id, language): response = self.send_request( "{}/{}{}".format(self.urls["anime"], anidb_id, self.urls["relation"]), language) return util.get_int_list(response.xpath("//area/@href"), "AniDB ID")