-
Notifications
You must be signed in to change notification settings - Fork 52
New module, speccy.py #208
base: gonzobot
Are you sure you want to change the base?
Changes from 34 commits
7f19215
e4adf75
ef2487f
3ed293c
f46eabb
cec4812
31aae3d
f2d3c28
4245df6
07e8a30
efceb1d
42e876d
dc2480a
48d1711
bafcc32
ee495da
fb17d50
c977e3c
d49eb27
601e599
9d2d695
cadcfa4
efa4758
bf3cb84
1ca2b0b
dc5a781
60cefc9
55bcc6c
1a2d613
ec039fc
a0baf00
6ee430c
c211e9a
4725b3f
288f03d
b10c6b0
9487894
196a1b5
1b73957
241abb2
77123d9
2dcd32a
a739caa
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
# -*- coding: utf-8 -*- | ||
|
||
from cloudbot import hook | ||
|
||
import re | ||
import requests | ||
|
||
from bs4 import BeautifulSoup as BS | ||
from contextlib import closing | ||
|
||
url_re = re.compile('https?:\/\/speccy\.piriform\.com\/results\/[a-zA-Z0-9]+', re.I) | ||
|
||
GPU_RE = re.compile('.*(amd|radeon|intel|integrated|nvidia|geforce|gtx).*\n.*', re.I) | ||
PICO_RE = re.compile('.*pico', re.I) | ||
KMS_RE = re.compile('.*kms', re.I) | ||
BOOSTER_RE = re.compile('.*booster', re.I) | ||
REVIVER_RE = re.compile('.*reviver', re.I) | ||
KILLER_RE = re.compile('.*killer.+service', re.I) | ||
|
||
|
||
@hook.regex(url_re) | ||
def get_speccy_url(match): | ||
|
||
with closing(requests.get(match.group(), )) as response: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Extraneous comma and whitespace There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not sure what you're referring to, these 4 lines have been the same since many reviewed (by you) revisions ago. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Here I'm referring to the comma and space after |
||
soup = BS(response.content, "lxml", from_encoding=response.encoding) | ||
|
||
body = soup.body | ||
|
||
data = [] | ||
|
||
os_spec = body.find("div", text='Operating System') | ||
if os_spec is not None: | ||
data.append( | ||
"\x02OS:\x02" + " " + os_spec.next_sibling.next_sibling.text) | ||
|
||
def cspace(): | ||
c_space_spec = body.find("div", class_="datavalue", text='C:') | ||
if c_space_spec is not None: | ||
c_space_spec_found = c_space_spec.parent.parent | ||
c_space_data = c_space_spec_found.find("div", text='Free Space:\xA0', class_="datakey").parent | ||
return c_space_data.find(class_="datavalue").text | ||
|
||
c_space_spec = cspace() | ||
if c_space_spec is not None: | ||
data.append("\x02Space Left (C:\):\x02" + " " + c_space_spec) | ||
|
||
ram_spec = body.find("div", text='RAM') | ||
if ram_spec is not None: | ||
data.append( | ||
"\x02RAM:\x02" + " " + ram_spec.next_sibling.next_sibling.text) | ||
|
||
def ramusg(): | ||
ram_usg_spec = body.find("div", class_="blue clear", text='Physical Memory') | ||
if ram_usg_spec is not None: | ||
ram_usg_spec_found = ram_usg_spec.next_sibling.next_sibling | ||
ram_usg_data = ram_usg_spec_found.find("div", text='Memory Usage:\xA0', class_="datakey").parent | ||
return ram_usg_data.find(class_="datavalue").text | ||
|
||
ram_usg_spec = ramusg() | ||
if ram_usg_spec is not None: | ||
data.append("\x02RAM USG:\x02" + " " + ram_usg_spec) | ||
|
||
cpu_spec = body.find("div", text='CPU') | ||
if cpu_spec is not None: | ||
data.append( | ||
"\x02CPU:\x02" + " " + cpu_spec.next_sibling.next_sibling.text) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. These three There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'll compress that too. |
||
|
||
def gpuspec(): | ||
gpu_find = body.find("div", text='Graphics') | ||
if gpu_find is not None: | ||
gpu_find = gpu_find.next_sibling.next_sibling.text | ||
gpu_spec = "" | ||
for gpu_string in GPU_RE.finditer(gpu_find): | ||
gpu_spec += gpu_string.group() | ||
return gpu_spec | ||
|
||
gpu_spec = gpuspec() | ||
if gpu_spec is not None: | ||
data.append("\x02GPU:\x02" + " " + gpu_spec) | ||
|
||
badware_patterns = [KILLER_RE, REVIVER_RE, BOOSTER_RE, KMS_RE, PICO_RE] | ||
badware = body.find_all("div", text=badware_patterns) | ||
if badware: | ||
for tag in badware: | ||
data.append("\x02Badware:\x02" + " " + tag.text) | ||
else: | ||
data.append("\x02No Badware\x02") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Might be easier to just set a variable like |
||
|
||
def smartcheck(): | ||
drive_spec = body.find_all("div", class_="blue clear", text="05") | ||
if drive_spec is not None: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
for i, found in enumerate(drive_spec): | ||
drives = found.next_sibling.next_sibling.stripped_strings | ||
SMART = list(drives) | ||
rv_index = SMART.index("Raw Value:") | ||
raw_value = SMART[rv_index + 1] | ||
if raw_value != "0000000000": | ||
raw_value = (str(i + 1)) | ||
return raw_value | ||
|
||
drives = smartcheck() | ||
if drives is not None: | ||
for item in drives: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
data.append("\x02Bad Disk:\x02 #{}".format(item)) | ||
else: | ||
data.append("\x02Disks Healthy\x02") | ||
|
||
spec_out = re.sub(r"\s+", " ", ' ● '.join(data)) | ||
|
||
return spec_out |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Extraneous whitespace
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can't pinpoint what you see, as again, it's since been the same many revisions ago.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I mean the extra line after the
def
line. I just didn't catch it in earlier reviews.