Пример #1
0
 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}")
Пример #2
0
 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
Пример #3
0
 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}")
Пример #4
0
 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]
Пример #5
0
 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")
Пример #6
0
 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")
Пример #7
0
 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")