|
@@ -1,6 +1,7 @@
|
|
|
import requests
|
|
|
+from requests_html import HTMLSession
|
|
|
|
|
|
-from command_system import RollbotResponse, RollbotFailure, as_plugin
|
|
|
+from command_system import RollbotResponse, RollbotFailure, as_plugin, pop_arg
|
|
|
from config import API_KEY
|
|
|
from util import upload_image
|
|
|
|
|
@@ -79,3 +80,53 @@ flat\r\n\
|
|
|
failure_reason=RollbotFailure.SERVICE_DOWN,
|
|
|
failure_notes=result
|
|
|
)
|
|
|
+
|
|
|
+
|
|
|
+@as_plugin
|
|
|
+def scp(db, message):
|
|
|
+ number, _ = pop_arg(message.raw_args)
|
|
|
+ try:
|
|
|
+ number = int(number.strip())
|
|
|
+ except ValueError as e:
|
|
|
+ return RollbotResponse(
|
|
|
+ message,
|
|
|
+ failure_reason=RollbotFailure.INVALID_ARGUMENTS,
|
|
|
+ failure_notes={
|
|
|
+ "explain": "Could not parse argument %s into integer." % number,
|
|
|
+ "exception": e,
|
|
|
+ }
|
|
|
+ )
|
|
|
+
|
|
|
+ page_url = "http://www.scp-wiki.net/scp-%03d" % number
|
|
|
+ series_url = "http://www.scp-wiki.net/scp-series"
|
|
|
+ series = (number // 1000) + 1
|
|
|
+ if series != 1:
|
|
|
+ series_url += "-" + str(series)
|
|
|
+
|
|
|
+ sesh = HTMLSession()
|
|
|
+
|
|
|
+ r = sesh.get(page_url)
|
|
|
+ r2 = sesh.get(series_url)
|
|
|
+
|
|
|
+ ps = r.html.find("p")
|
|
|
+ lis = r2.html.find("li")
|
|
|
+
|
|
|
+ object_class = "Error retrieving object class!"
|
|
|
+ for p in ps:
|
|
|
+ if "Object Class" in p.text:
|
|
|
+ object_class = p.text
|
|
|
+ break
|
|
|
+
|
|
|
+ query = "SCP-%03d" % number
|
|
|
+ flavortext = "Error retrieving title!"
|
|
|
+ for li in lis:
|
|
|
+ if query in li.text:
|
|
|
+ flavortext = li.text.split("-", 2)[-1].strip()
|
|
|
+ break
|
|
|
+
|
|
|
+ response = "Item # %d\n" % number
|
|
|
+ response += object_class + "\n"
|
|
|
+ response += flavortext + "\n"
|
|
|
+ response += page_url
|
|
|
+
|
|
|
+ return RollbotResponse(message, txt=response)
|