Rewrote OSRC to use HTML scraping because the API has been changed
This commit is contained in:
parent
c7d2535098
commit
807cbf3f07
|
@ -3,7 +3,6 @@ from bs4 import BeautifulSoup
|
||||||
from util import hook, http, web
|
from util import hook, http, web
|
||||||
|
|
||||||
|
|
||||||
api_url = "http://osrc.dfm.io/{}/stats"
|
|
||||||
user_url = "http://osrc.dfm.io/{}"
|
user_url = "http://osrc.dfm.io/{}"
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,18 +11,19 @@ def osrc(inp):
|
||||||
"""osrc <github user> -- Gets an Open Source Report Card for <github user>"""
|
"""osrc <github user> -- Gets an Open Source Report Card for <github user>"""
|
||||||
|
|
||||||
user_nick = inp.strip()
|
user_nick = inp.strip()
|
||||||
url = api_url.format(user_nick)
|
url = user_url.format(user_nick)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = http.get_json(url)
|
soup = http.get_soup(url)
|
||||||
except (http.HTTPError, http.URLError):
|
except (http.HTTPError, http.URLError):
|
||||||
return "Couldn't find any stats for this user."
|
return "Couldn't find any stats for this user."
|
||||||
|
|
||||||
response["nick"] = user_nick
|
report = soup.find("div", {"id": "description"}).find("p").get_text()
|
||||||
soup = BeautifulSoup(response["summary"])
|
|
||||||
response["work_time"] = soup.find("a", {"href": "#day"}).contents[0]
|
|
||||||
|
|
||||||
response["short_url"] = web.try_isgd(user_url.format(user_nick))
|
# Split and join to remove all the excess whitespace, slice the
|
||||||
|
# string to remove the trailing full stop.
|
||||||
|
report = " ".join(report.split())[:-1]
|
||||||
|
|
||||||
return "{nick} is a {lang_user}. {nick} is a {hacker_type} " \
|
short_url = web.try_isgd(url)
|
||||||
"who seems to {work_time} - {short_url}".format(**response)
|
|
||||||
|
return "{} - {}".format(report, short_url)
|
||||||
|
|
|
@ -24,6 +24,4 @@ def suggest(inp):
|
||||||
soup = BeautifulSoup(out)
|
soup = BeautifulSoup(out)
|
||||||
out = soup.get_text()
|
out = soup.get_text()
|
||||||
|
|
||||||
out = text.truncate_str(out, 200)
|
return text.truncate_str(out, 200)
|
||||||
|
|
||||||
return out
|
|
||||||
|
|
|
@ -144,7 +144,9 @@ def truncate_words(content, length=10, suffix='...'):
|
||||||
|
|
||||||
# from <http://stackoverflow.com/questions/250357/smart-truncate-in-python>
|
# from <http://stackoverflow.com/questions/250357/smart-truncate-in-python>
|
||||||
def truncate_str(content, length=100, suffix='...'):
|
def truncate_str(content, length=100, suffix='...'):
|
||||||
"""Truncates a string after a certain number of chars."""
|
"""Truncates a string after a certain number of chars.
|
||||||
|
@rtype : str
|
||||||
|
"""
|
||||||
if len(content) <= length:
|
if len(content) <= length:
|
||||||
return content
|
return content
|
||||||
else:
|
else:
|
||||||
|
|
Reference in New Issue