def __init__(self, data) -> None:
        StatsAppend(erina.erinaParsingCount, "SauceNAO")
        # Normalize to get the same type of data everytime
        if isinstance(data, list):
            "\n".join(data)
        else:
            data = str(data)

        self.data = data.split("\n")

        self.similarity = None
        self.database = None
        self.title = None
        self.link = None
        self.author = None
        self.thumbnail = None
        self.is_manga = None
        self.is_anime = None
        self.part = None
        self.year = None
        self.timing = None
        self.cache_timestamp = None

        for element in self.data:
            element = str(element).replace("\n", "")

            if element[:11] == 'Similarity:':
                self.similarity = utils.convert_to_float(element[12:])
            elif element[:9] == 'Index ID:':
                self.database = self.Index(element[10:])
            elif element[:6] == 'Title:':
                self.title = self.AnimeTitle(native_title=element[7:])
            elif element[:4] == 'URL:':
                self.link = str(element[5:])
            elif element[:7] == 'Author:':
                self.author = str(element[8:])
            elif element[:10] == 'Thumbnail:':
                self.thumbnail = str(element[11:])
            elif element[:8] == 'isManga:':
                self.is_manga = utils.convert_to_boolean(element[9:])
            elif element[:5] == 'Part:':
                self.part = utils.convert_to_int(element[6:])
            elif element[:8] == 'isAnime:':
                self.is_anime = utils.convert_to_boolean(element[9:])
            elif element[:
                         8] == 'Episode:':  #### COMPATIBILITY WITH OLD SAUCENAO CACHE
                self.part = utils.convert_to_int(element[9:])
            elif element[:5] == 'Year:':
                self.year = utils.convert_to_int(element[6:])
            elif element[:15] == 'Estimated Time:':
                self.timing = self.Timing(from_time=element[16:],
                                          to=element[16:],
                                          at=element[16:])
            elif element[:16] == 'Cache Timestamp:':
                self.cache_timestamp = self.CacheTimestamp(element[17:])
    def __init__(self, data) -> None:
        StatsAppend(erina.erinaParsingCount, "IQDB")
        # Normalize to get the same type of data everytime
        if isinstance(data, list):
            "\n".join(data)
        else:
            data = str(data)

        self.data = data.split("\n")

        self.tags = None
        self.link = None
        self.title = None
        self.size = None
        self.hentai = None
        self.similarity = None
        self.database = None

        self.author = None

        for element in self.data:
            element = str(element).replace("\n", "")

            if element[:10] == 'IQDB Tags:':
                self.tags = [
                    utils.capitalize_string(tag)
                    for tag in str(element[11:]).split(':::')
                ]
            elif element[:4] == 'URL:':
                self.link = str(element[5:])
            elif element[:6] == 'Title:':
                self.title = str(element[7:])
            elif element[:5] == 'Size:':
                self.size = self.Size(element[6:])
            elif element[:7] == 'isSafe:':
                self.hentai = utils.convert_to_boolean(element[8:])
            elif element[:11] == 'Similarity:':
                self.similarity = utils.convert_to_float(element[12:])
            elif element[:9] == 'Database:':
                self.database = str(element[10:])
            elif element[:16] == 'Cache Timestamp:':
                self.cache_timestamp = self.CacheTimestamp(element[17:])
Example #3
0
    def __init__(self, data) -> None:
        StatsAppend(erina.erinaParsingCount, "AniList")
        # Normalize to get the same type of data everytime
        if isinstance(data, list):
            "\n".join(data)
        else:
            data = str(data)

        self.data = data.split("\n")
        episode_fallback = 0

        ### Data initialization
        self.anilist_id = None
        self.myanimelist_id = None
        self.title = None
        self.type = None
        self.format = None
        self.status = None
        self.description = None
        self.season = None
        self.year = None
        self.number_of_episodes = None
        self.episode_duration = None
        self.first_episode_release_date = None
        self.last_episode_release_date = None
        self.country = None
        self.source_type = None
        self.licensed = None
        self.hentai = None
        self.twitter_hashtag = None
        self.average_score = None
        self.cover_image = None
        self.average_cover_color = None
        self.banner_image = None
        self.trailer = None
        self.genres = None
        self.studios = None
        self.tags = None
        self.relations = None
        self.characters = None
        self.staff = None
        self.recommendations = None
        self.link = None
        self.streaming_links = None
        self.external_links = None
        self.cache_timestamp = None

        for element in self.data:
            element = str(element).replace("\n", "")
            #print(element)

            if element[:11] == "AniList ID:":
                self.anilist_id = utils.convert_to_int(element[12:])
            elif element[:15] == "MyAnimeList ID:":
                self.myanimelist_id = utils.convert_to_int(element[16:])
            elif element[:13] == 'Romaji Title:':
                if self.title is None:
                    self.title = self.AnimeTitle(element[14:])
                else:
                    self.title.addTitle(romaji_title=element[14:])
            elif element[:14] == 'English Title:':
                if self.title is None:
                    self.title = self.AnimeTitle(english_title=element[15:])
                else:
                    self.title.addTitle(english_title=element[15:])
            elif element[:13] == 'Native Title:':
                if self.title is None:
                    self.title = self.AnimeTitle(native_title=element[14:])
                else:
                    self.title.addTitle(native_title=element[14:])
            elif element[:21] == 'Alternative Title(s):':
                if self.title is None:
                    self.title = self.AnimeTitle(
                        alternative_titles=element[22:].split(':::'))
                else:
                    self.title.addAlternativeTitle(element[22:].split(':::'))
            elif element[:5] == 'Type:':
                self.type = str(element[6:])
            elif element[:7] == 'Format:':
                self.format = str(element[8:])
            elif element[:7] == 'Status:':
                self.status = str(element[8:])
            elif element[:12] == 'Description:':
                self.description = self.AnimeDescription(element[13:])
            elif element[:7] == 'Season:':
                self.season = str(element[8:])
            elif element[:5] == 'Year:':
                self.year = utils.convert_to_int(element[6:])
            elif element[:9] == 'Episodes:':
                self.number_of_episodes = utils.convert_to_int(element[10:])
            elif element[:17] == 'Average Duration:':
                self.episode_duration = utils.convert_to_int(element[18:])
            elif element[:27] == 'First Episode Release Date:':
                self.first_episode_release_date = self.AnimeDate(element[28:])
            elif element[:26] == 'Last Episode Release Date:':
                self.last_episode_release_date = self.AnimeDate(element[27:])
            elif element[:8] == 'Country:':
                self.country = str(element[9:])
            elif element[:18] == 'Source Media Type:':
                self.source_type = str(element[19:])
            elif element[:9] == 'Licensed?':
                self.licensed = utils.convert_to_boolean(element[10:])
            elif element[:7] == 'Hentai?':
                self.hentai = utils.convert_to_boolean(element[8:])
            elif element[:16] == 'Twitter Hashtag:':
                self.twitter_hashtag = str(element[17:])
            elif element[:14] == 'Average Score:':
                self.average_score = utils.convert_to_int(element[15:])
            elif element[:12] == 'Cover Image:':
                self.cover_image = str(element[13:])
            elif element[:20] == 'Average Cover Color:':
                self.average_cover_color == str(element[21:])
            elif element[:13] == 'Banner Image:':
                self.banner_image = str(element[14:])
            elif element[:8] == 'Trailer:':
                self.trailer = str(element[9:])
            elif element[:7] == 'Genres:':
                self.genres = self.AnimeGenres(element[8:].split(':::'))
            elif element[:8] == '[STUDIO]':
                if self.studios is None:
                    self.studios = [self.AnimeStudio(element[9:].split('|||'))]
                else:
                    self.studios.append(
                        self.AnimeStudio(element[9:].split('|||')))
            elif element[:5] == '[TAG]':
                if self.tags is None:
                    self.tags = [self.AnimeTag(element[6:].split('|||'))]
                else:
                    self.tags.append(self.AnimeTag(element[6:].split('|||')))
            elif element[:10] == '[RELATION]':
                if self.relations is None:
                    self.relations = [
                        self.AnimeRelation(element[11:].split('|||'))
                    ]
                else:
                    self.relations.append(
                        self.AnimeRelation(element[11:].split('|||')))
            elif element[:11] == '[CHARACTER]':
                if self.characters is None:
                    self.characters = [
                        self.AnimeCharacter(element[12:].split('|||'))
                    ]
                else:
                    self.characters.append(
                        self.AnimeCharacter(element[12:].split('|||')))
            elif element[:7] == '[STAFF]':
                if self.staff is None:
                    self.staff = [self.AnimeStaff(element[8:].split('|||'))]
                else:
                    self.staff.append(self.AnimeStaff(
                        element[8:].split('|||')))
            elif element[:16] == '[RECOMMENDATION]':
                if self.recommendations is None:
                    self.recommendations = [
                        self.AnimeRecommendation(element[17:].split('|||'))
                    ]
                else:
                    self.recommendations.append(
                        self.AnimeRecommendation(element[17:].split('|||')))
            elif element[:16] == '[streaming link]':
                episode_fallback += 1
                # Info extraction
                try:
                    element = element[17:]
                    link = re.findall("(https?:\/\/\S+)", element)[0]
                    if link.find('www.crunchyroll.com') != -1:
                        element = element.split(": http")[0].split(" - ")
                        episode = utils.convert_to_int(
                            element[0].lower().replace("episode", ""))
                        title = str(element[1])
                    else:
                        element = element.split(": http")[0]
                        episode = episode_fallback + 1
                        title = str(element[0])

                    # Appending results
                    if self.streaming_links is None:
                        self.streaming_links = [
                            self.AnimeStreamingLink(link=link,
                                                    episode=episode,
                                                    title=title)
                        ]
                    else:
                        self.streaming_links.append(
                            self.AnimeStreamingLink(link=link,
                                                    episode=episode,
                                                    title=title))
                except:
                    pass

            elif element[:15] == '[external link]':
                element = element[16:]
                link = re.findall("(https?:\/\/\S+)", element)[0]
                site = element.split(": ")[0]
                if self.external_links is None:
                    self.external_links = [
                        self.AnimeExternalLink(link=link, site=site)
                    ]
                else:
                    self.external_links.append(
                        self.AnimeExternalLink(link=link, site=site))
            elif element[:16] == 'Cache Timestamp:':
                self.cache_timestamp = self.CacheTimestamp(
                    utils.convert_to_float(element[17:]))
        if self.anilist_id is not None:
            self.link = "https://anilist.co/anime/" + str(self.anilist_id)
Example #4
0
 def __init__(self, data) -> None:
     self.name = str(data[0])
     self.rank = utils.convert_to_int(data[1])
     self.is_spoiler = utils.convert_to_boolean(data[2])
     self.is_adult = utils.convert_to_boolean(data[3])
     self.category = str(data[4])
Example #5
0
 def __init__(self, data) -> None:
     #print(data)
     self.is_main = utils.convert_to_boolean(data[0])
     self.anilist_id = utils.convert_to_int(data[1])
     self.name = str(data[2])
     self.is_animation_studio = utils.convert_to_boolean(data[3])
Example #6
0
    def __init__(self, data) -> None:
        StatsAppend(erina.erinaParsingCount, "trace.moe")
        # Normalize to get the same type of data everytime
        if isinstance(data, list):
            "\n".join(data)
        else:
            data = str(data)

        self.data = data.split("\n")

        self.anilist_id = None
        self.myanimelist_id = None
        self.title = None
        self.season = None
        self.episode = None
        self.hentai = None
        self.filename = None
        self.timing = None
        self.similarity = None
        self.tokenthumb = None
        self.cache_timestamp = None

        for element in self.data:
            element = str(element).replace("\n", "")

            if element[:11] == 'AniList ID:':
                self.anilist_id = utils.convert_to_int(element[12:])
            elif element[:15] == 'MyAnimeList ID:':
                self.myanimelist_id = utils.convert_to_int(element[16:])

            elif element[:6] == 'Title:':
                self.title = self.AnimeTitle(romaji_title=element[7:])
            elif element[:13] == 'Title Native:':
                if self.title is not None:
                    self.title.addTitle(native_title=element[14:])
                else:
                    self.title = self.AnimeTitle(native_title=element[14:])
            elif element[:14] == 'Title Chinese:':
                if self.title is not None:
                    self.title.addTitle(chinese_title=element[15:])
                else:
                    self.title = self.AnimeTitle(chinese_title=element[15:])
            elif element[:14] == 'Title English:':
                if self.title is not None:
                    self.title.addTitle(english_title=element[15:])
                else:
                    self.title = self.AnimeTitle(english_title=element[15:])
            elif element[:13] == 'Title Romaji:':
                if self.title is not None:
                    self.title.addTitle(romaji_title=element[14:])
                else:
                    self.title = self.AnimeTitle(romaji_title=element[14:])
            elif element[:6] == 'Anime:':
                if self.title is not None:
                    self.title.addAlternativeTitle(element[7:])
                else:
                    self.title = self.AnimeTitle(
                        alternative_titles=element[7:])
            elif element[:9] == 'Synonyms:':
                if self.title is not None:
                    self.title.addAlternativeTitle(element[10:].split(':::'))
                else:
                    self.title = self.AnimeTitle(
                        alternative_titles=element[10:].split(':::'))
            elif element[:17] == 'Synonyms Chinese:':
                if self.title is not None:
                    self.title.addAlternativeTitle(element[18:].split(':::'))
                else:
                    self.title = self.AnimeTitle(
                        alternative_titles=element[18:].split(':::'))
            elif element[:7] == 'Season:':
                self.season = str(element[8:])
            elif element[:8] == 'Episode:':
                self.episode = utils.convert_to_int(element[9:])
            elif element[:8] == 'isAdult:':
                self.hentai = utils.convert_to_boolean(element[9:])
            elif element[:9] == 'Filename:':
                self.filename = str(element[10:])
            elif element[:5] == 'From:':
                if self.timing is None:
                    self.timing = self.Timing(from_time=element[6:])
                else:
                    self.timing.addTiming(from_time=element[6:])
            elif element[:3] == 'To:':
                if self.timing is None:
                    self.timing = self.Timing(to=element[4:])
                else:
                    self.timing.addTiming(to=element[4:])
            elif element[:3] == 'At:':
                if self.timing is None:
                    self.timing = self.Timing(at=element[4:])
                else:
                    self.timing.addTiming(at=element[4:])
            elif element[:11] == 'Similarity:':
                self.similarity = utils.convert_to_float(element[12:])
            elif element[:11] == 'TokenThumb:':
                self.tokenthumb = str(element[12:])
            elif element[:16] == 'Cache Timestamp:':
                self.cache_timestamp = self.CacheTimestamp(element[17:])