from bs4 import BeautifulSoup from rsi_scraper import Ship import requests import discord import pprint async def get_ship(ship_name): base_url = "https://robertspaceindustries.com" wiki_url = "https://starcitizen.tools/" ship = await Ship(name=ship_name).get_ships_pages_async() ship = ship[0] pp = pprint.PrettyPrinter(indent=4) pp.pprint(ship) ship_picture = ship["media"][0]["images"]["wallpaper_thumb"] wiki_ship_name = ship["url"].split("/")[-1].split("-")[0] headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64)"} response = requests.get(wiki_url + wiki_ship_name, headers=headers).text soup = BeautifulSoup(response, "html.parser") try: ingame_price = soup.find( "div", {"class": "data-buycost infobox-data infobox-col2"} ) children = ingame_price.findChildren("div") price_lambda = list(filter(lambda x: ("aUEC" in x.text), children)) ingame_price = price_lambda[0].text except Exception: ingame_price = "No in-game price available" pledge_price = soup.find( "div", {"class": "data-pledgecost infobox-data infobox-col4"} ) children = pledge_price.findChildren("div") real_money_price = list(filter(lambda x: ("$" in x.text), children)) embed = discord.Embed( description="-------", color=discord.Color.teal(), type="rich" ) embed.set_thumbnail(url=ship_picture) embed.set_author(name="Star Citizen API Info about the %s" % ship["name"]) embed.add_field(name="**Ingame Price**", value=ingame_price, inline=False) embed.add_field( name="**Pledge Price**", value=real_money_price[0].text, inline=False ) embed.add_field(name="**Description**", value=ship["description"], inline=False) embed.add_field( name="**Cargo Capacity**", value="%s SCU" % ship["cargocapacity"], inline=True ) embed.add_field(name="**Crew Size**", value=ship["max_crew"], inline=True) return embed