diff --git a/misskaty/plugins/imdb_search.py b/misskaty/plugins/imdb_search.py index ca8d3b48..f59ca496 100644 --- a/misskaty/plugins/imdb_search.py +++ b/misskaty/plugins/imdb_search.py @@ -349,106 +349,59 @@ async def imdb_en_callback(bot, query): try: url = f"https://www.imdb.com/title/tt{movie}/" resp = await http.get( - url, + f"https://yasirapi.eu.org/imdb-page?url={url}", headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10"}, ) - sop = BeautifulSoup(resp, "lxml") - r_json = json.loads(sop.find("script", attrs={"type": "application/ld+json"}).contents[0]) + r_json = resp.json().get("result") res_str = "" - type = f"{r_json['@type']}" if r_json.get("@type") else "" - if r_json.get("name"): - try: - tahun = sop.select('ul[data-testid="hero-title-block__metadata"]')[0].find("span", class_="sc-8c396aa2-2 jwaBvf").text - except: - tahun = "N/A" - res_str += f"📹 Title: {r_json['name']} [{tahun}] ({type})\n" - if r_json.get("alternateName"): - res_str += f"đŸ“ĸ AKA: {r_json.get('alternateName')}\n\n" + if judul := r_json.get("title"): + res_str += f"📹 Title: {judul}\n" + if aka := r_json.get("aka"): + res_str += f"đŸ“ĸ AKA: {aka}\n\n" else: res_str += "\n" - if durasi := sop.select('li[data-testid="title-techspec_runtime"]'): - durasi = durasi[0].find(class_="ipc-metadata-list-item__content-container").text + if durasi := r_json.get("duration"): res_str += f"Duration: {durasi}\n" - if r_json.get("contentRating"): - res_str += f"Category: {r_json['contentRating']} \n" - if r_json.get("aggregateRating"): - res_str += f"Rating: {r_json['aggregateRating']['ratingValue']}â­ī¸ from {r_json['aggregateRating']['ratingCount']} user \n" - if release := sop.select('li[data-testid="title-details-releasedate"]'): - rilis = release[0].find(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link").text - rilis_url = release[0].find(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link")["href"] - res_str += f"Release Data: {rilis}\n" - if r_json.get("genre"): - genre = "".join(f"{GENRES_EMOJI[i]} #{i.replace('-', '_').replace(' ', '_')}, " if i in GENRES_EMOJI else f"#{i.replace('-', '_').replace(' ', '_')}, " for i in r_json["genre"]) - genre = genre[:-2] + if kategori := r_json.get("category"): + res_str += f"Category: {kategori} \n" + if rating := r_json.get("rating"): + res_str += f"Rating: {rating}\n" + if release := r_json.get("release_date"): + res_str += f"Release Data: {release}\n" + if genre := r_json.get("genre"): res_str += f"Genre: {genre}\n" - if negara := sop.select('li[data-testid="title-details-origin"]'): - country = "".join( - f"{demoji(country.text)} #{country.text.replace(' ', '_').replace('-', '_')}, " - for country in negara[0].findAll(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link") - ) - country = country[:-2] + if country := r_json.get("country"): res_str += f"Country: {country}\n" - if bahasa := sop.select('li[data-testid="title-details-languages"]'): - language = "".join( - f"#{lang.text.replace(' ', '_').replace('-', '_')}, " for lang in bahasa[0].findAll(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link") - ) - language = language[:-2] + if language := r_json.get("language"): res_str += f"Language: {language}\n" res_str += "\n🙎 Cast Info:\n" if r_json.get("director"): - director = "" - for i in r_json["director"]: - name = i["name"] - url = i["url"] - director += f"{name}, " - director = director[:-2] res_str += f"Director: {director}\n" - if r_json.get("creator"): - creator = "" - for i in r_json["creator"]: - if i["@type"] == "Person": - name = i["name"] - url = i["url"] - creator += f"{name}, " - creator = creator[:-2] - res_str += f"Penulis: {creator}\n" - if r_json.get("actor"): - actors = "" - for i in r_json["actor"]: - name = i["name"] - url = i["url"] - actors += f"{name}, " - actors = actors[:-2] + if director := r_json.get("creator"): + res_str += f"Writer: {director}\n" + if actors := r_json.get("actors"): res_str += f"Stars: {actors}\n\n" - if r_json.get("description"): - res_str += f"📜 Summary: {r_json['description'].replace(' ', ' ')}\n\n" - if r_json.get("keywords"): - keywords = r_json["keywords"].split(",") - key_ = "" - for i in keywords: - i = i.replace(" ", "_").replace("-", "_") - key_ += f"#{i}, " - key_ = key_[:-2] + if description := r_json.get("description"): + res_str += f"📜 Summary: {description}\n\n" + if key_ := r_json.get("keyword"): res_str += f"đŸ”Ĩ Keywords: {key_} \n" - if award := sop.select('li[data-testid="award_information"]'): - awards = award[0].find(class_="ipc-metadata-list-item__list-content-item").text - res_str += f"🏆 Awards: {awards}\n\n" + if award := r_json.get("awards"): + res_str += f"🏆 Awards: {award}\n\n" else: res_str += "\n" res_str += f"ÂŠī¸ IMDb by @{BOT_USERNAME}" - if r_json.get("trailer"): - trailer_url = r_json["trailer"]["url"] + if trailer := r_json.get("trailer_url"): markup = InlineKeyboardMarkup( [ [ - InlineKeyboardButton("đŸŽŦ Open IMDB", url=f"https://www.imdb.com{r_json['url']}"), - InlineKeyboardButton("â–ļī¸ Trailer", url=trailer_url), + InlineKeyboardButton("đŸŽŦ Open IMDB", url=url), + InlineKeyboardButton("â–ļī¸ Trailer", url=trailer), ] ] ) else: - markup = InlineKeyboardMarkup([[InlineKeyboardButton("đŸŽŦ Open IMDB", url=f"https://www.imdb.com{r_json['url']}")]]) - if thumb := r_json.get("image"): + markup = InlineKeyboardMarkup([[InlineKeyboardButton("đŸŽŦ Open IMDB", url=url)]]) + if thumb := r_json.get("thumb"): try: await query.message.edit_media(InputMediaPhoto(thumb, caption=res_str), reply_markup=markup) except (MediaEmpty, PhotoInvalidDimensions, WebpageMediaEmpty):