forked from kostrin/BingMiningBot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BingMine.py
124 lines (102 loc) · 4.43 KB
/
BingMine.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import argparse, time, sys
from random import randint
from BingAuth import BingAuth
from BingRewards import BingRewards
from BingRequests import BingRequests
class BingMine(object):
def __init__(self,mobileAttempts=10,pcAttempts=15, upperWait=5, lowerWait=3):
self.mobileAttempts=mobileAttempts
self.pcAttempts=pcAttempts
self.upperWait=upperWait
self.lowerWait=lowerWait
self.parseArgs()
self.bingAuth = BingAuth()
self.bingRewards = BingRewards(self.creds, self.rewardsHistoryFile)
self.bingRequests = BingRequests()
def parseArgs(self):
parser = argparse.ArgumentParser(prog='Mine Bing Rewards', description='Will mine your Bing rewards for the day.', add_help=True)
parser.add_argument('-c', '--credsFile', type=str, help='credentials to mine', default='credentials.txt')
parser.add_argument('-r', '--rewardsFile', type=str, help='rewards History file', default='rewardsHistory.txt')
args = parser.parse_args()
self.rewardsHistoryFile=args.rewardsFile
self.creds=self.getCreds(args.credsFile)
def getRewards(self):
if not self.creds:
print "No valid credentials!"
return
print time.strftime("%c")
for accountList in self.creds:
try:
user=accountList[0]
passwd=accountList[1]
accType=accountList[2]
except:
print "Invalid credentials file formatting!"
sys.exit()
self.browser=None
print 'Running on account: %s'% (user)
userAgent=self.bingRequests.getPCUserAgent()
browser=self.bingAuth.login(user, passwd, userAgent, accType.lower())
pcCountNeeded, mobileCountNeed = self.bingRewards.getRewardCounts(self.pcAttempts, self.mobileAttempts, browser);
self.bingRewards.getExtraRewards(browser)
while pcCountNeeded>0 or mobileCountNeed>0:
#Make PC requests
if pcCountNeeded>0:
self.makeAllRequests(pcCountNeeded, browser)
browser.quit()
#Make Mobile Request
if mobileCountNeed>0:
userAgent=self.bingRequests.getMobileUserAgent()
browser=self.bingAuth.login(user, passwd, userAgent, accType.lower())
self.makeAllRequests(mobileCountNeed, browser)
browser.quit()
#Check if done
userAgent=self.bingRequests.getPCUserAgent()
browser=self.bingAuth.login(user, passwd, userAgent, accType.lower())
pcCountNeeded, mobileCountNeed = self.bingRewards.getRewardCounts(self.pcAttempts, self.mobileAttempts, browser);
#Print final rewards
self.bingRewards.printCurrentRewards(browser)
browser.quit()
def cashReward(self):
for accountList in self.creds:
try:
user=accountList[0]
passwd=accountList[1]
accType=accountList[2]
except:
print "Invalid credentials file formatting!"
sys.exit()
self.browser=None
userAgent=self.bingRequests.getPCUserAgent()
browser=self.bingAuth.login(user, passwd, userAgent, accType.lower())
if self.bingRewards.cashInRewards(browser, user):
browser.quit()
break
browser.quit()
def makeAllRequests(self, attempts, browser):
inc=0
while(inc<attempts):
self.bingRequests.makeRequest(browser)
time.sleep(randint(self.lowerWait,self.upperWait))
inc+=1
def getCreds(self, credsFile):
#USAGE: USER PASS Type
#NOTE: 1 user per line
creds=[]
try:
with open(credsFile) as f:
credsX=[]
for line in f:
if line[0]=='#':
pass
else:
data=line.split()
creds.append(data)
return creds
except:
print "Invalid credentials file formatting!"
sys.exit()
if __name__ == "__main__":
b = BingMine()
b.getRewards()
#b.cashReward() #NOT FUNCTIONING YET.