Skip to content
This repository has been archived by the owner on Oct 23, 2019. It is now read-only.

New module, speccy.py #208

Open
wants to merge 43 commits into
base: gonzobot
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
7f19215
Add speccy module
Feb 12, 2018
e4adf75
Add XTU and Reviver
Feb 12, 2018
ef2487f
Fixed SMART formatting
Feb 12, 2018
3ed293c
tons of shit
Jessexd Feb 13, 2018
f46eabb
Formatting fixes
Feb 13, 2018
cec4812
Merge branch 'speccy' into speccy
Jessexd Feb 13, 2018
31aae3d
An actual commit
Jessexd Feb 15, 2018
f2d3c28
Fixed
Jessexd Feb 15, 2018
4245df6
Merge branch 'speccy' of https://github.com/Jessexd/CloudBot into speccy
Jessexd Feb 15, 2018
07e8a30
Merge pull request #2 from Jessexd/speccy
Feb 15, 2018
efceb1d
greatly optmized, much less CPU ussage, reformatted as per PEP8 requi…
Jessexd Feb 16, 2018
42e876d
Merge pull request #3 from Jessexd/speccy
Feb 17, 2018
dc2480a
code readability
Jessexd Feb 17, 2018
48d1711
:O
Jessexd Feb 18, 2018
bafcc32
fixed due to reviewers requested changes
Jessexd Feb 19, 2018
ee495da
added GPU_RE to the be with the other globally defined regex
Jessexd Feb 19, 2018
fb17d50
made variable names less vague and generic, disregardded pep8 line le…
Jessexd Feb 19, 2018
c977e3c
removed useless r in GPU_RE regex since others weren't like that.
Jessexd Feb 19, 2018
d49eb27
Changed Bad: to Badware: (makes it less generic of what "bad" is)
Jessexd Feb 19, 2018
601e599
removed "# -*- coding: utf-8 -*-"
Jessexd Feb 20, 2018
9d2d695
removed repeatedly calling __getitem__ on the list. (for drivespec)
Jessexd Feb 20, 2018
cadcfa4
added back "# -*- coding: utf-8 -*-" because I'm a moron
Jessexd Feb 20, 2018
efa4758
Ooops, removed the cloudbot hook on accident, WOW
Jessexd Feb 20, 2018
bf3cb84
removal of cached speccy.py file
Jessexd Feb 20, 2018
1ca2b0b
Merge pull request #5 from Jessexd/speccy
Feb 20, 2018
dc5a781
Update requirements.txt
Jessexd Feb 22, 2018
60cefc9
Implemented checks so it doesn't error out the plugin, added undersco…
Jessexd Feb 28, 2018
55bcc6c
Added checking ability, shouldn't return nothing in the chat upon err…
Jessexd Mar 1, 2018
1a2d613
small confusing naming I had going
Jessexd Mar 1, 2018
ec039fc
Merge pull request #6 from Jessexd/speccy
Mar 1, 2018
a0baf00
Badware checking was broken, fixed
Jessexd Mar 1, 2018
6ee430c
oops
Jessexd Mar 1, 2018
c211e9a
issue with when badware not found, blabla
Jessexd Mar 4, 2018
4725b3f
smalll wooopsy from the drivespec code (duplicated 2 variables with 1…
Jessexd Mar 4, 2018
288f03d
hmm, didn't sync
Jessexd Mar 4, 2018
b10c6b0
stupid gedit auto-backup
Jessexd Mar 4, 2018
9487894
small change to smartcheck
Jessexd Mar 4, 2018
196a1b5
Typo
Jessexd Mar 4, 2018
1b73957
Overhauled smartcheck, re-ordered output format, little bit more reda…
Jessexd Mar 7, 2018
241abb2
Merge remote-tracking branch 'upstream/speccy' into speccy
Jessexd Mar 7, 2018
77123d9
Merge branch 'gonzobot' into speccy
linuxdaemon Mar 12, 2018
2dcd32a
Merge branch 'gonzobot' into speccy
linuxdaemon Mar 24, 2018
a739caa
Merge branch 'gonzobot' into speccy
linuxdaemon Jun 7, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions plugins/speccy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# -*- 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):

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extraneous whitespace

Copy link
Author

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.

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.

with closing(requests.get(match.group(), )) as response:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extraneous comma and whitespace

Copy link
Author

Choose a reason for hiding this comment

The 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.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here I'm referring to the comma and space after match.group()

soup = BS(response.content, "lxml", from_encoding=response.encoding)

body = soup.body

data = []

osspec = body.find("div", text='Operating System')
if osspec:
data.append(
"\x02OS:\x02" + " " + osspec.next_sibling.next_sibling.text)

ramspec = body.find("div", text='RAM')
if ramspec:
data.append(
"\x02RAM:\x02" + " " + ramspec.next_sibling.next_sibling.text)

cpuspec = body.find("div", text='CPU')
if cpuspec:
data.append(
"\x02CPU:\x02" + " " + cpuspec.next_sibling.next_sibling.text)

gpufind = body.find("div", text='Graphics').next_sibling.next_sibling.text
gpuspec = ""
for gpustring in GPU_RE.finditer(gpufind):
gpuspec += gpustring.group()
if gpuspec:
data.append("\x02GPU:\x02" + " " + gpuspec)

picospec = body.find("div", text=PICO_RE)
if picospec:
data.append("\x02Badware:\x02" + " " + picospec.text)

kmsspec = body.find("div", text=KMS_RE)
if kmsspec:
data.append("\x02Badware:\x02" + " " + kmsspec.text)

boosterspec = body.find("div", text=BOOSTER_RE)
if boosterspec:
data.append("\x02Badware:\x02" + " " + boosterspec.text)

reviverspec = body.find("div", text=REVIVER_RE)
if reviverspec:
data.append("\x02Badware:\x02" + " " + reviverspec.text)

killerspec = body.find("div", text=KILLER_RE)
if killerspec:
data.append("\x02Badware:\x02" + " " + killerspec.text)

def smartcheck():
drivespec = body.find_all("div", text="05")
number_of_drives = len(drivespec)

values = []
for i in range(0, number_of_drives):
drives = drivespec[i].next_sibling.next_sibling.stripped_strings

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be replaced with

for i, spec in enumerate(drivespec):
    drives = spec.next_sibling.next_sibling.stripped_strings

Instead of repeatedly calling __getitem__ on the list.

SMART = list(drives)
rv_index = SMART.index("Raw Value:")
raw_value = SMART[rv_index + 1]
if raw_value != "0000000000":
values.append(str(i + 1))
return values

drives = smartcheck()
if drives:
for item in drives:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

drives will always be a string or None here, as you changed how smartcheck() works. If you want to get info for multiple drives, you'll need to change the logic in smartcheck()

data.append("\x02Bad Disk:\x02 #{}".format(item))

specout = re.sub(r"\s+", " ", ' ● '.join(data))

return specout
94 changes: 94 additions & 0 deletions plugins/speccy.py~
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# -*- coding: utf-8 -*-

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not include backup files in the PR.


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:
soup = BS(response.content, "lxml", from_encoding=response.encoding)

body = soup.body

data = []

osspec = body.find("div", text='Operating System')
if osspec:
data.append(
"\x02OS:\x02" + " " + osspec.next_sibling.next_sibling.text)

ramspec = body.find("div", text='RAM')
if ramspec:
data.append(
"\x02RAM:\x02" + " " + ramspec.next_sibling.next_sibling.text)

cpuspec = body.find("div", text='CPU')
if cpuspec:
data.append(
"\x02CPU:\x02" + " " + cpuspec.next_sibling.next_sibling.text)

gpufind = body.find("div", text='Graphics').next_sibling.next_sibling.text
gpuspec = ""
for gpustring in GPU_RE.finditer(gpufind):
gpuspec += gpustring.group()
if gpuspec:
data.append("\x02GPU:\x02" + " " + gpuspec)

picospec = body.find("div", text=PICO_RE)
if picospec:
data.append("\x02Bad:\x02" + " " + picospec.text)

kmsspec = body.find("div", text=KMS_RE)
if kmsspec:
data.append("\x02Bad:\x02" + " " + kmsspec.text)

boosterspec = body.find("div", text=BOOSTER_RE)
if boosterspec:
data.append("\x02Bad:\x02" + " " + boosterspec.text)

reviverspec = body.find("div", text=REVIVER_RE)
if reviverspec:
data.append("\x02Bad:\x02" + " " + reviverspec.text)

killerspec = body.find("div", text=KILLER_RE)
if killerspec:
data.append("\x02Bad:\x02" + " " + killerspec.text)

def smartcheck():
drivespec = body.find_all("div", text="05")
number_of_drives = len(drivespec)

values = []
for i in range(0, number_of_drives):
drives = drivespec[i].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":
values.append(str(i + 1))
return values

drives = smartcheck()
if drives:
for item in drives:
data.append("\x02Bad Disk:\x02 #{}".format(item))

specout = re.sub(r"\s+", " ", ' ● '.join(data))

return specout