65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
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/"
|
|
|
|
try:
|
|
ship = await Ship(name=ship_name).get_ships_pages_async()
|
|
ship = ship[0]
|
|
except IndexError:
|
|
embed = discord.Embed(description="❌", color=discord.Color.red(), type="rich")
|
|
embed.add_field(
|
|
name="**Could not find that ship**", value="You gave me %s. Did you spell it right? (Its also possible my shitty code isnt working right)" % ship_name, inline=True
|
|
)
|
|
return embed
|
|
|
|
# prints for debug
|
|
# 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=True)
|
|
embed.add_field(
|
|
name="**Pledge Price**", value=real_money_price[0].text, inline=True
|
|
)
|
|
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
|