Skip to content

Instantly share code, notes, and snippets.

@emre
Last active August 29, 2015 14:18
Show Gist options
  • Save emre/be5ca4c550df4e5d865f to your computer and use it in GitHub Desktop.
Save emre/be5ca4c550df4e5d865f to your computer and use it in GitHub Desktop.
cryptospots miner check
import requests
import re
from clint.textui import colored, puts, indent
import warnings
import sys
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
warnings.filterwarnings("ignore")
# EDIT BELOW.
CRYPTOSPOTS_USERNAME = "<CS_USERNAME>"
CRYPTOSPOTS_PASSWORD = "<CS_PASSWORD>"
# GMAIL INFO
GMAIL_USERNAME = "<GMAIL_USERNAME>"
GMAIL_PASS = "<GMAIL_PASSWORD>"
def get_header(text):
return colored.white(text, bold=True)
def send_email():
msg = MIMEMultipart()
msg['From'] = GMAIL_USERNAME
msg['To'] = GMAIL_USERNAME
msg['Subject'] = "Miners are stopped on cryptospots!"
body = "Check it out. You're losing money."
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(GMAIL_USERNAME, GMAIL_PASS)
server.sendmail(GMAIL_USERNAME, [GMAIL_USERNAME, ], msg.as_string())
server.quit()
def login(session):
data = {
"username": CRYPTOSPOTS_USERNAME,
"password": CRYPTOSPOTS_PASSWORD,
"doLogin": True,
}
r = session.post("https://cryptospot.me/auth/login", data=data, verify=False)
if not 'Earnings History' in r.text:
print("Login Failed.")
sys.exit(2)
strong_words = re.findall('<h4><strong>(.*?)</strong></h4>', r.text.strip())
hash_rate, bitcoins, cryptospots = strong_words[0:3]
with indent(2):
puts("- Logged in!")
with indent(4, quote=' >'):
puts("Total Hashrate: {} GH/s".format(hash_rate))
puts("BTC Balance: {}".format(bitcoins))
puts("CS Balance: {}".format(cryptospots))
def check_mining_rigs(session):
url = "https://cryptospot.me/account/{}/miners".format(CRYPTOSPOTS_USERNAME)
r = session.get(url, verify=False)
miners = re.findall('<td style="width: 45%">(.*?)</td>', r.text)
del miners[0]
statuses = re.findall('<td style="width: 20%">\n(.*?) </td>', r.text.strip(), flags=re.MULTILINE)
with indent(2):
puts("- Miners:")
for index, item in enumerate(statuses):
with indent(4, quote=' >'):
if not statuses[index] == "Hashing":
send_email()
puts("Miners are down. Email sent!")
break
puts("{}: {}".format(miners[index], statuses[index]))
def main():
session = requests.session()
login(session)
check_mining_rigs(session)
main()
import requests
import re
import warnings
import sys
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
warnings.filterwarnings("ignore")
# EDIT BELOW.
CRYPTOSPOTS_USERNAME = "<CS_USERNAME>"
CRYPTOSPOTS_PASSWORD = "<CS_PASSWORD>"
# GMAIL INFO
GMAIL_USERNAME = "<GMAIL_USERNAME>"
GMAIL_PASS = "<GMAIL_PASSWORD>"
# USER AGENT
USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"
HTTP_HEADERS = {
"User-Agent": USER_AGENT,
}
def get_header(text):
return colored.white(text, bold=True)
def send_email():
msg = MIMEMultipart()
msg['From'] = GMAIL_USERNAME
msg['To'] = GMAIL_USERNAME
msg['Subject'] = "Miners are stopped on cryptospots!"
body = "Check it out. You're losing money."
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(GMAIL_USERNAME, GMAIL_PASS)
server.sendmail(GMAIL_USERNAME, [GMAIL_USERNAME, ], msg.as_string())
server.quit()
def login(session):
data = {
"username": CRYPTOSPOTS_USERNAME,
"password": CRYPTOSPOTS_PASSWORD,
"doLogin": True,
}
r = session.post("https://cryptospot.me/auth/login", data=data, verify=False, headers=HTTP_HEADERS)
if not 'Earnings History' in r.text:
print "Login Failed."
sys.exit(2)
strong_words = re.findall('<h4><strong>(.*?)</strong></h4>', r.text.strip())
hash_rate, bitcoins, cryptospots = strong_words[0:3]
print "- Logged in!"
print "Total Hashrate: {0} GH/s".format(hash_rate)
print "BTC Balance: {0}".format(bitcoins)
print "CS Balance: {0}".format(cryptospots)
def check_mining_rigs(session):
url = "https://cryptospot.me/account/{0}/miners".format(CRYPTOSPOTS_USERNAME)
r = session.get(url, verify=False, headers=HTTP_HEADERS)
miners = re.findall('<td style="width: 45%">(.*?)</td>', r.text)
del miners[0]
statuses = re.findall('<td style="width: 20%">\n(.*?) </td>', r.text.strip(), flags=re.MULTILINE)
print "- Miners:"
for index, item in enumerate(statuses):
if not statuses[index] == "Hashing":
send_email()
print "Miners are down. Email sent!"
break
print "{0}: {1}".format(miners[index], statuses[index])
def main():
session = requests.session()
login(session)
check_mining_rigs(session)
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment