예제 #1
0
async def get_schuled(message: Message):
    """ Get List of Scheduled Anime """
    var = {"notYetAired": True}
    await message.edit("`Fetching Scheduled Animes`")
    result = await return_json_senpai(AIRING_QUERY, var)
    error = result.get("errors")
    if error:
        await CLOG.log(f"**ANILIST RETURNED FOLLOWING ERROR:**\n\n{error}")
        error_sts = error[0].get("message")
        await message.err(f"[{error_sts}]")
        return

    data = result["data"]["Page"]["airingSchedules"]
    c = 0
    totl_schld = len(data)
    out = ""
    for air in data:
        romaji = air["media"]["title"]["romaji"]
        english = air["media"]["title"]["english"]
        mid = air["mediaId"]
        epi_air = air["episode"]
        air_at = make_it_rw(air["airingAt"], True)
        site = air["media"]["siteUrl"]
        title_ = english or romaji
        out += f"<h3>[🇯🇵]{title_}</h3>"
        out += f" • <b>ID:</b> {mid}<br>"
        out += f" • <b>Airing Episode:</b> {epi_air}<br>"
        out += f" • <b>Next Airing:</b> {air_at}<br>"
        out += f" • <a href='{site}'>[Visit on anilist.co]</a><br><br>"
        c += 1
    if out:
        out_p = f"<h1>Showing [{c}/{totl_schld}] Scheduled Animes:</h1><br><br>{out}"
        link = post_to_tp("Scheduled Animes", out_p)
        await message.edit(f"[Open in Telegraph]({link})")
예제 #2
0
async def get_char(var):
    result = await return_json_senpai(CHARACTER_QUERY, var)
    error = result.get("errors")
    if error:
        await CLOG.log(f"**ANILIST RETURNED FOLLOWING ERROR:**\n\n`{error}`")
        error_sts = error[0].get("message")
        return [f"[{error_sts}]"]
    data = result["data"]["Character"]
    # Character Data
    id_ = data["id"]
    name = data["name"]["full"]
    native = data["name"]["native"]
    img = data["image"]["large"]
    site_url = data["siteUrl"]
    description = data["description"]
    featured = data["media"]["nodes"]
    snin = "\n"
    sninal = ""
    sninml = ""
    for ani in featured:
        k = ani["title"]["english"] or ani["title"]["romaji"]
        kk = ani["type"]
        if kk=="MANGA":
            sninml += f"    • {k}\n"
    for ani in featured:
        kkk = ani["title"]["english"] or ani["title"]["romaji"]
        kkkk = ani["type"]
        if kkkk=="ANIME":
            sninal += f"    • {kkk}\n"
    sninal += "\n"
    sninm = "  `MANGAS`\n" if len(sninml)!=0 else ""
    snina = "  `ANIMES`\n" if len(sninal)!=0 else ""
    snin = f"\n{snina}{sninal}{sninm}{sninml}"
    sp = 0
    cntnt = ""
    for cf in featured:
        out = "<br>"
        out += f"""<img src="{cf['coverImage']['extraLarge']}"/>"""
        out += "<br>"
        title = cf["title"]["english"] or cf["title"]["romaji"]
        out += f"<h3>{title}</h3>"
        out += f"<em>[🇯🇵] {cf['title']['native']}</em><br>"
        out += f"""<a href="{cf['siteUrl']}>{cf['type']}</a><br>"""
        out += f"<b>Media ID:</b> {cf['id']}<br>"
        out += f"<b>SCORE:</b> {cf['averageScore']}/100<br>"
        out += cf.get("description", "N/A") + "<br>"
        cntnt += out
        sp += 1
        out = ""
        if sp > 5:
            break
    html_cntnt = f"<img src='{img}' title={name}/>"
    html_cntnt += f"<h1>[🇯🇵] {native}</h1>"
    html_cntnt += "<h3>About Character:</h3>"
    html_cntnt += description
    html_cntnt += "<br>"
    if cntnt:
        html_cntnt += "<h2>Top Featured Anime</h2>"
        html_cntnt += cntnt
        html_cntnt += "<br><br>"
    url_ = post_to_tp(name, html_cntnt)
    cap_text = f"""[🇯🇵] __{native}__
    (`{name}`)
**ID:** {id_}

**Featured in:** __{snin}__

[About Character]({url_})
[Visit Website]({site_url})"""
    return img, cap_text
예제 #3
0
async def get_ani(vars_):
    result = await return_json_senpai(ANIME_QUERY, vars_)
    error = result.get("errors")
    if error:
        await CLOG.log(f"**ANILIST RETURNED FOLLOWING ERROR:**\n\n`{error}`")
        error_sts = error[0].get("message")
        return [f"[{error_sts}]"]

    data = result["data"]["Media"]

    # Data of all fields in returned json
    # pylint: disable=possibly-unused-variable
    idm = data.get("id")
    idmal = data.get("idMal")
    romaji = data["title"]["romaji"]
    english = data["title"]["english"]
    native = data["title"]["native"]
    formats = data.get("format")
    status = data.get("status")
    episodes = data.get("episodes")
    synopsis = data.get("description")
    duration = data.get("duration")
    country = data.get("countryOfOrigin")
    c_flag = cflag.flag(country)
    source = data.get("source")
    prqlsql = data.get("relations").get('edges')
    bannerImg = data.get("bannerImage")
    s_date = data.get("startDate")
    adult = data.get("isAdult")
    trailer_link = "N/A"
    if data["title"]["english"] is not None:
        name = f'''[{c_flag}]**{romaji}**
        __{english}__
        {native}'''
    else:
        name = f'''[{c_flag}]**{romaji}**
        {native}'''
    prql, prql_id, sql, sql_id = "", "None", "", "None"
    for i in prqlsql:
        if i['relationType']=="PREQUEL":
            pname = i["node"]["title"]["english"] if i["node"]["title"]["english"] is not None else i["node"]["title"]["romaji"]
            prql += f"**PREQUEL:** `{pname}`\n"
            prql_id = f"{i['node']['id']}"
            break
    for i in prqlsql:
        if i['relationType']=="SEQUEL":
            sname = i["node"]["title"]["english"] if i["node"]["title"]["english"] is not None else i["node"]["title"]["romaji"]
            sql += f"**SEQUEL:** `{sname}`\n"
            sql_id = f"{i['node']['id']}"
            break
    additional = f"{prql}{sql}"
    dura = f"\n➤ **DURATION:** `{duration} min/ep`" if duration!=None else ""
    charlist = []
    for char in data["characters"]["nodes"]:
        charlist.append(f"    •{char['name']['full']}")
    chrctrs = "\n"
    chrctrs += ("\n").join(charlist[:10])
    chrctrsls = f"\n➤ **CHARACTERS:** `{chrctrs}`" if len(charlist)!=0 else ""
    air_on = None
    if data["nextAiringEpisode"]:
        nextAir = data["nextAiringEpisode"]["airingAt"]
        air_on = make_it_rw(nextAir)
        eps = data['nextAiringEpisode']['episode']
        ep_ = list(str(eps))
        x = ep_.pop()
        th = "th"
        if len(ep_)>=1:
            if ep_.pop()!="1":
                th = pos_no(x)
        else:
            th = pos_no(x)
        air_on += f" | {eps}{th} eps"
    if air_on==None:
        eps_ =  f" | {episodes} eps" if episodes!=None else ""
        status_air = f"➤ <b>STATUS:</b> `{status}{eps_}`"
    else:
        status_air = f"➤ <b>STATUS:</b> `{status}`\n➤ <b>NEXT AIRING:</b> `{air_on}`"
    if data["trailer"] and data["trailer"]["site"] == "youtube":
        trailer_link = f"[Trailer](https://youtu.be/{data['trailer']['id']})"
    html_char = ""
    for character in data["characters"]["nodes"]:
        html_ = ""
        html_ += "<br>"
        html_ += f"""<a href="{character['siteUrl']}">"""
        html_ += f"""<img src="{character['image']['large']}"/></a>"""
        html_ += "<br>"
        html_ += f"<h3>{character['name']['full']}</h3>"
        html_ += f"<em>{c_flag} {character['name']['native']}</em><br>"
        html_ += f"<b>Character ID</b>: {character['id']}<br>"
        html_ += (
            f"<h4>About Character and Role:</h4>{character.get('description', 'N/A')}"
        )
        html_char += f"{html_}<br><br>"
    studios = "".join("<a href='{}'>• {}</a> ".format(studio["siteUrl"], studio["name"]) for studio in data["studios"]["nodes"])
    url = data.get("siteUrl")
    title_img = f"https://img.anili.st/media/{idm}"
    # Telegraph Post mejik
    html_pc = ""
    html_pc += f"<img src='{title_img}' title={romaji}/>"
    html_pc += f"<h1>[{c_flag}] {native}</h1>"
    html_pc += "<h3>Synopsis:</h3>"
    html_pc += synopsis
    html_pc += "<br>"
    if html_char:
        html_pc += "<h2>Main Characters:</h2>"
        html_pc += html_char
        html_pc += "<br><br>"
    html_pc += "<h3>More Info:</h3>"
    html_pc += f"<b>Started On:</b> {s_date['day']}/{s_date['month']}/{s_date['year']}"
    html_pc += f"<br><b>Studios:</b> {studios}<br>"
    html_pc += f"<a href='https://myanimelist.net/anime/{idmal}'>View on MAL</a>"
    html_pc += f"<a href='{url}'> View on anilist.co</a>"
    html_pc += f"<img src='{bannerImg}'/>"
    title_h = english or romaji
    synopsis_link = post_to_tp(title_h, html_pc)
    try:
        finals_ = ANIME_TEMPLATE.format(**locals())
    except KeyError as kys:
        return [f"{kys}"]
    return title_img, finals_, prql_id, sql_id, adult, romaji, idm
예제 #4
0
async def character_search(message: Message):
    """ Get Info about a Character """
    query = message.input_str
    if not query:
        await message.err("NameError: 'query' not defined")
        return
    var = {"search": query, "asHtml": True}
    result = await return_json_senpai(CHARACTER_QUERY, var)
    error = result.get("errors")
    if error:
        await CLOG.log(f"**ANILIST RETURNED FOLLOWING ERROR:**\n\n`{error}`")
        error_sts = error[0].get("message")
        await message.err(f"[{error_sts}]")
        return

    data = result["data"]["Character"]

    # Character Data
    id_ = data["id"]
    name = data["name"]["full"]
    native = data["name"]["native"]
    img = data["image"]["large"]
    site_url = data["siteUrl"]
    description = data["description"]
    featured = data["media"]["nodes"]

    sp = 0
    cntnt = ""
    for cf in featured:
        out = "<br>"
        out += f"""<img src="{cf['coverImage']['extraLarge']}"/>"""
        out += "<br>"
        title = cf["title"]["english"] or cf["title"]["romaji"]
        out += f"<h3>{title}</h3>"
        out += f"<em>[🇯🇵] {cf['title']['native']}</em><br>"
        out += f"""<a href="{cf['siteUrl']}>{cf['type']}</a><br>"""
        out += f"<b>Media ID:</b> {cf['id']}<br>"
        out += f"<b>SCORE:</b> {cf['averageScore']}/100<br>"
        out += cf.get("description", "N/A") + "<br>"
        cntnt += out
        sp += 1
        out = ""
        if sp > 5:
            break

    html_cntnt = f"<img src='{img}' title={name}/>"
    html_cntnt += f"<h1>[🇯🇵] {native}</h1>"
    html_cntnt += "<h3>About Character:</h3>"
    html_cntnt += description
    html_cntnt += "<br>"
    if cntnt:
        html_cntnt += "<h2>Top Featured Anime</h2>"
        html_cntnt += cntnt
        html_cntnt += "<br><br>"
    url_ = post_to_tp(name, html_cntnt)
    cap_text = f"""[🇯🇵] __{native}__
    (`{name}`)
**ID:** {id_}
[About Character]({url_})

[Visit Website]({site_url})"""

    await message.reply_photo(img, caption=cap_text)
    await message.delete()
예제 #5
0
async def anim_arch(message: Message):
    """ Search Anime Info """
    query = message.filtered_input_str
    if not query:
        await message.err("NameError: 'query' not defined")
        return
    vars_ = {"search": query, "asHtml": True, "type": "ANIME"}
    if query.isdigit():
        vars_ = {"id": int(query), "asHtml": True, "type": "ANIME"}
        if "-mid" in message.flags:
            vars_ = {"idMal": int(query), "asHtml": True, "type": "ANIME"}

    result = await return_json_senpai(ANIME_QUERY, vars_)
    error = result.get("errors")
    if error:
        await CLOG.log(f"**ANILIST RETURNED FOLLOWING ERROR:**\n\n`{error}`")
        error_sts = error[0].get("message")
        await message.err(f"[{error_sts}]")
        return

    data = result["data"]["Media"]

    # Data of all fields in returned json
    # pylint: disable=possibly-unused-variable
    idm = data.get("id")
    idmal = data.get("idMal")
    romaji = data["title"]["romaji"]
    english = data["title"]["english"]
    native = data["title"]["native"]
    formats = data.get("format")
    status = data.get("status")
    synopsis = data.get("description")
    season = data.get("season")
    episodes = data.get("episodes")
    duration = data.get("duration")
    country = data.get("countryOfOrigin")
    c_flag = cflag.flag(country)
    source = data.get("source")
    coverImg = data.get("coverImage")["extraLarge"]
    bannerImg = data.get("bannerImage")
    genres = data.get("genres")
    genre = genres[0]
    if len(genres) != 1:
        genre = ", ".join(genres)
    score = data.get("averageScore")
    air_on = None
    if data["nextAiringEpisode"]:
        nextAir = data["nextAiringEpisode"]["airingAt"]
        air_on = make_it_rw(nextAir)
    s_date = data.get("startDate")
    adult = data.get("isAdult")
    trailer_link = "N/A"

    if data["trailer"] and data["trailer"]["site"] == "youtube":
        trailer_link = f"[Trailer](https://youtu.be/{data['trailer']['id']})"
    html_char = ""
    for character in data["characters"]["nodes"]:
        html_ = ""
        html_ += "<br>"
        html_ += f"""<a href="{character['siteUrl']}">"""
        html_ += f"""<img src="{character['image']['large']}"/></a>"""
        html_ += "<br>"
        html_ += f"<h3>{character['name']['full']}</h3>"
        html_ += f"<em>{c_flag} {character['name']['native']}</em><br>"
        html_ += f"<b>Character ID</b>: {character['id']}<br>"
        html_ += (
            f"<h4>About Character and Role:</h4>{character.get('description', 'N/A')}"
        )
        html_char += f"{html_}<br><br>"

    studios = ""
    for studio in data["studios"]["nodes"]:
        studios += "<a href='{}'>• {}</a> ".format(studio["siteUrl"],
                                                     studio["name"])
    url = data.get("siteUrl")

    title_img = coverImg or bannerImg
    # Telegraph Post mejik
    html_pc = ""
    html_pc += f"<img src='{title_img}' title={romaji}/>"
    html_pc += f"<h1>[{c_flag}] {native}</h1>"
    html_pc += "<h3>Synopsis:</h3>"
    html_pc += synopsis
    html_pc += "<br>"
    if html_char:
        html_pc += "<h2>Main Characters:</h2>"
        html_pc += html_char
        html_pc += "<br><br>"
    html_pc += "<h3>More Info:</h3>"
    html_pc += f"<b>Started On:</b> {s_date['day']}/{s_date['month']}/{s_date['year']}"
    html_pc += f"<br><b>Studios:</b> {studios}<br>"
    html_pc += f"<a href='https://myanimelist.net/anime/{idmal}'>View on MAL</a>"
    html_pc += f"<a href='{url}'> View on anilist.co</a>"
    html_pc += f"<img src='{bannerImg}'/>"

    title_h = english or romaji
    synopsis_link = post_to_tp(title_h, html_pc)
    try:
        finals_ = ANIME_TEMPLATE.format(**locals())
    except KeyError as kys:
        await message.err(kys)
        return

    if "-wp" in message.flags:
        finals_ = f"[\u200b]({title_img}) {finals_}"
        await message.edit(finals_)
        return
    await message.reply_photo(title_img, caption=finals_)
    await message.delete()