-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
264 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# My Selenium Bots | ||
|
||
A collection of my bots. | ||
Quickly hacked and poorly tested. | ||
Use at your own risk. | ||
|
||
## Python | ||
|
||
Install [Python 3](https://www.python.org/downloads/) and Selenium. | ||
|
||
``` | ||
pip install selenium | ||
``` | ||
|
||
## Firefox | ||
|
||
Copy `geckodriver.exe` ([Download](https://github.com/mozilla/geckodriver/releases)) to `C:\Users\Nils\AppData\Local\Programs\Python\Python38-32`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
https://twitter.com/ApprisiaSAP/status/1293057948621713409 | ||
https://twitter.com/Accelynws/status/1293404553505837056 | ||
https://twitter.com/TADigitalInc/status/1294423598971719683 | ||
https://twitter.com/vivgaur/status/1291241811873161217 | ||
https://twitter.com/fruity1510/status/1293160638298984449 | ||
https://twitter.com/fruity1510/status/1292704294789996546 | ||
https://twitter.com/fruity1510/status/1292702895796674562 | ||
https://twitter.com/fruity1510/status/1293905126466322442 | ||
https://twitter.com/fruity1510/status/1293088220490559488 | ||
https://twitter.com/fruity1510/status/1293362252007972864 | ||
https://twitter.com/r3consultingltd/status/1294194489926602753 | ||
https://twitter.com/r3consultingltd/status/1294194492854218752 | ||
https://twitter.com/cloudfirstsol/status/1293208136346722305 | ||
https://twitter.com/sunera_tech/status/1293434552690659329 | ||
https://twitter.com/sap_aws/status/1230188852679184386 | ||
https://twitter.com/ZaproDigital/status/1222640569266118656 | ||
https://twitter.com/BoobBoo/status/1212763238900912128 | ||
https://twitter.com/VYelluri/status/1212770788610322434 | ||
https://twitter.com/itpc_group/status/1272465828101926913 | ||
https://twitter.com/dilip_nathani/status/1255042277384138752 | ||
https://twitter.com/realCyclenerd/status/1294591437028368385 | ||
https://twitter.com/dvankempen/status/1246004254327832576 | ||
https://twitter.com/RanajitN/status/1272990860154597377 | ||
https://twitter.com/dvankempen/status/1291652415339585536 | ||
https://twitter.com/sapongoogle/status/1289603086919450624 | ||
https://twitter.com/InfraBeatTech/status/1239414522609168384 | ||
https://twitter.com/IvanFemia/status/1217638338162638848 | ||
https://twitter.com/thahirsap/status/1255244952784822272 | ||
https://twitter.com/sapongoogle/status/1288090409936322560 | ||
https://twitter.com/PeteHumble/status/1210594199936086016 | ||
https://twitter.com/EpSoftech/status/1222934150564368386 | ||
https://twitter.com/devopsdotcom/status/1273572430582288385 | ||
https://twitter.com/simplex_infotek/status/1214064301171974144 | ||
https://twitter.com/linkeit/status/1204777856578019329 | ||
https://twitter.com/OwlRelease/status/1266328046023241731 | ||
https://twitter.com/ApprisiaSAP/status/1239798336518909952 | ||
https://twitter.com/BottomleyBec/status/1223350271708815360 | ||
https://twitter.com/Course_club/status/1258495582429163521 | ||
https://twitter.com/ApprisiaSAP/status/1272776994208591873 | ||
https://twitter.com/HaydnSallmann/status/1265874467265413120 | ||
https://twitter.com/SavantisLLC/status/1242020828037951489 | ||
https://twitter.com/sunera_tech/status/1292732351571795969 | ||
https://twitter.com/ApprisiaSAP/status/1283634828081074176 | ||
https://twitter.com/SAPEDU/status/1218160043234877440 | ||
https://twitter.com/SAPUserGroup/status/1229709648904802304 | ||
https://twitter.com/JKTechnosoft/status/1221699060345659392 | ||
https://twitter.com/tweet_niranjan/status/1280834816762503171 | ||
https://twitter.com/ivldsp/status/1205346945872449538 | ||
https://twitter.com/simplex_infotek/status/1208262068530503680 | ||
https://twitter.com/ContainerBlog/status/1273677279428780038 | ||
https://twitter.com/infocient/status/1260151242623459328 | ||
https://twitter.com/Visual_BI/status/1265939248361897984 | ||
https://twitter.com/VANTAiO/status/1222045227210485766 | ||
https://twitter.com/infocient/status/1255477758861467649 | ||
https://twitter.com/DrSebWagner/status/1260106678856531968 | ||
https://twitter.com/EvoraIT/status/1268836545651408898 | ||
https://twitter.com/zyplesoftware/status/1202526628930154496 | ||
https://twitter.com/FioriTracker/status/1225042340643057669 | ||
https://twitter.com/gamer_risen/status/1286392429759799296 | ||
https://twitter.com/Visual_BI/status/1294254818773667840 | ||
https://twitter.com/rhsofttech/status/1293567430938238976 | ||
https://twitter.com/ccarter1969/status/1270072603898638336 | ||
https://twitter.com/GingerGatling/status/1211744279728492544 | ||
https://twitter.com/PivoxLabs/status/1255001448447787009 | ||
https://twitter.com/Approyo/status/1271125217860083724 | ||
https://twitter.com/InsideSAP/status/1265842756523626497 | ||
https://twitter.com/cloudfirstsol/status/1247913982155001859 | ||
https://twitter.com/ITRadiant/status/1257289000684937217 | ||
https://twitter.com/JKTechnosoft/status/1224309471519764480 | ||
https://twitter.com/ContainerBlog/status/1273601814664003585 | ||
https://twitter.com/prakash13t/status/1283279470665891840 | ||
https://twitter.com/ngibietis/status/1291387038521077763 | ||
https://twitter.com/ValerieLeLay/status/1288802917089185793 | ||
https://twitter.com/4most_erp_group/status/1285488199167598592 | ||
https://twitter.com/MicropoleBeLux/status/1275822460831744004 | ||
https://twitter.com/AnitaRiegel/status/1275343964837740546 | ||
https://twitter.com/G3Gnews/status/1273178965436489733 | ||
https://twitter.com/aagraber/status/1232334629144793088 | ||
https://twitter.com/sysfinpro/status/1245592048624779271 | ||
https://twitter.com/EWiegner/status/1271648322726629376 | ||
https://twitter.com/G3Gnews/status/1270634477509804032 | ||
https://twitter.com/Stelliuminc/status/1229344009492910080 | ||
https://twitter.com/seb_brun/status/1234390636276658176 | ||
https://twitter.com/Acuiti__Labs/status/1232236546570379265 | ||
https://twitter.com/SageTech_SAP/status/1271393230068658181 | ||
https://twitter.com/SageTech_SAP/status/1271393231750627328 | ||
https://twitter.com/singhsanjeev/status/1268027350504968194 | ||
https://twitter.com/VANTAiO/status/1218248826370347008 | ||
https://twitter.com/SageTech_SAP/status/1265590923372584962 | ||
https://twitter.com/SageTech_SAP/status/1265590925520064512 | ||
https://twitter.com/qmacro/status/1214271429665001472 | ||
https://twitter.com/ccmehil/status/1194927962774110208 | ||
https://twitter.com/ccmehil/status/1192153334179934209 | ||
https://twitter.com/JuerMueller/status/1196819477205340160 | ||
https://twitter.com/grk3/status/1194480250752663554 | ||
https://twitter.com/kati_nonhebel/status/1194639987309891584 | ||
https://twitter.com/RichHeilman/status/1195245946608578561 | ||
https://twitter.com/gangadharansind/status/1194488953262362624 | ||
https://twitter.com/SBUCloud/status/1209445114252128257 | ||
https://twitter.com/ipec/status/1195231752526000128 | ||
https://twitter.com/TechNative/status/1219913341868490752 | ||
https://twitter.com/bentley_josh/status/1194878837663776768 | ||
https://twitter.com/grassl/status/1194487343924645888 | ||
https://twitter.com/maxstreifeneder/status/1196343179404034048 | ||
https://twitter.com/RavneetKSethi/status/1198541510943182848 | ||
https://twitter.com/bentley_josh/status/1195233237762621440 | ||
https://twitter.com/mado0803/status/1219540447066034176 | ||
https://twitter.com/TechNative/status/1232357338494853120 | ||
https://twitter.com/nabheet/status/1198847543448227840 | ||
https://twitter.com/BeGanz/status/1195210593927483393 | ||
https://twitter.com/Seppllang/status/1195018300352159744 | ||
https://twitter.com/dhinchcliffe/status/1211629300924977157 | ||
https://twitter.com/ipec/status/1195224277672284161 | ||
https://twitter.com/mlhassett/status/1194823207628337154 | ||
https://twitter.com/MynynaChau/status/1195334342488268802 | ||
https://twitter.com/gangadharansind/status/1194490769177890816 | ||
https://twitter.com/ithain/status/1197796099618222080 | ||
https://twitter.com/dvankempen/status/1293525411608043523 | ||
https://twitter.com/NeptSoft/status/1192043206516576256 | ||
https://twitter.com/Lalithmanokar/status/1194511750286082049 | ||
https://twitter.com/Ronald_vanLoon/status/1210596953811062784 | ||
https://twitter.com/TechDriven/status/1293284865937420288 | ||
https://twitter.com/maxstreifeneder/status/1195343408555909120 | ||
https://twitter.com/sveabecker3112/status/1195591011872886784 | ||
https://twitter.com/Hibaalam11/status/1194980938989613058 | ||
https://twitter.com/ibm_in/status/1195224599006347264 | ||
https://twitter.com/AlxLingg/status/1194553065250140160 | ||
https://twitter.com/Ronald_vanLoon/status/1211679084448755712 | ||
https://twitter.com/ChobeUtsav/status/1195457507126202368 | ||
https://twitter.com/gauravdey28/status/1195244671489851392 | ||
https://twitter.com/tiga1002/status/1237499100745981952 | ||
https://twitter.com/AviadRivlin/status/1195333674541162498 | ||
https://twitter.com/ChrisKuehne/status/1194564280307216384 | ||
https://twitter.com/hegdeviv/status/1194845004784533504 | ||
https://twitter.com/AviadRivlin/status/1195215884672995328 | ||
https://twitter.com/Gopal__Anand/status/1195280779967782912 | ||
https://twitter.com/seshsreenivas/status/1194842870974308352 | ||
https://twitter.com/nabheet/status/1267843540123451394 | ||
https://twitter.com/swathishetty215/status/1194606486254522368 | ||
https://twitter.com/ideacone/status/1194472468804587520 | ||
https://twitter.com/qmacro/status/1211952630999736320 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
import sys | ||
import time | ||
import random | ||
import re | ||
import argparse | ||
from selenium import webdriver | ||
from selenium.webdriver.common.keys import Keys | ||
|
||
class TwitterBot: | ||
def __init__(self, email, password, hashtag, since): | ||
self.email = email | ||
self.password = password | ||
self.hashtag = hashtag | ||
self.since = since | ||
profile = webdriver.FirefoxProfile() | ||
profile.set_preference('permissions.default.image', 2) # disable images | ||
self.bot = webdriver.Firefox(profile) | ||
self.bot.fullscreen_window() # fullscreen | ||
self.tweets = {} | ||
|
||
def login(self): | ||
print("LOGIN") | ||
bot = self.bot | ||
bot.get('https://twitter.com/login') # open url | ||
time.sleep( random.randrange(3, 10) ) # wait | ||
email = bot.find_element_by_name('session[username_or_email]') # find element | ||
password = bot.find_element_by_name('session[password]') | ||
email.clear() | ||
password.clear() | ||
email.send_keys(self.email) | ||
password.send_keys(self.password) | ||
password.send_keys(Keys.RETURN) | ||
time.sleep( random.randrange(6, 12) ) | ||
|
||
def farm(self): | ||
print("FARMING") | ||
bot = self.bot | ||
bot.get('https://twitter.com/search?q=%23'+ self.hashtag +'%20lang%3Aen%20since%3A'+ self.since +'%20-filter%3Areplies&src=typed_query') | ||
time.sleep( random.randrange(3, 10) ) | ||
# scroll x times down to load more content | ||
for i in range(1,15): | ||
print(i) | ||
bot.execute_script('window.scrollTo(0, document.body.scrollHeight)') | ||
time.sleep( random.randrange(3, 10) ) | ||
links = bot.find_elements_by_tag_name('a') | ||
for link in links: | ||
url = link.get_attribute('href') | ||
# filter usernames | ||
if re.search('/realCyclenerd/', url): continue # skip own tweets | ||
if re.search('/GCPcloud/', url): continue | ||
if re.search('/SAP', url, re.IGNORECASE): continue | ||
if re.search('/Google', url, re.IGNORECASE): continue | ||
# save tweet url | ||
if re.search('/status/\d*$', url): self.tweets[url] = url | ||
for tweet in self.tweets: | ||
print("Found: {tweet}".format(tweet = tweet)) | ||
|
||
def like(self): | ||
print("LIKE") | ||
bot = self.bot | ||
for tweet in self.tweets: | ||
try: | ||
f = open("liked.txt", "r") | ||
if tweet in f.read(): | ||
print("Already liked: {tweet} ".format(tweet = tweet)) | ||
continue | ||
except FileNotFoundError: | ||
print('File does not exist') | ||
except: | ||
print('Something with the file went wrong') | ||
print("Like: {tweet} ".format(tweet = tweet)) | ||
bot.get(tweet) | ||
time.sleep( random.randrange(3, 30) ) | ||
bot.execute_script('window.scrollTo(0, screen.height/4.5)') # scroll down to see the heart icon | ||
time.sleep( random.randrange(2, 4) ) | ||
try: | ||
heart = bot.find_element_by_css_selector('[data-testid="like"]').click() | ||
f = open("liked.txt", "a") | ||
f.write(tweet + '\n') | ||
f.close() | ||
time.sleep( random.randrange(3, 10) ) | ||
except: | ||
print("Error") | ||
|
||
def profile(self): | ||
print("DONE") | ||
bot = self.bot | ||
bot.get("https://twitter.com/home") | ||
profile = bot.find_element_by_css_selector('[aria-label="Profile"]').click() | ||
|
||
# get command line parameters | ||
parser = argparse.ArgumentParser( | ||
description='Twitter Bot : Spread a few hearts for tweets with your chosen hashtag', | ||
epilog="Powered by Selenium with Python") | ||
parser.add_argument('--email', required=True, help='Twitter username or email') | ||
parser.add_argument('--password', required=True, help='Twitter password') | ||
parser.add_argument('--hashtag', required=True, help='Hashtag without #') | ||
parser.add_argument('--since', required=True, help='YYYY-MM-DD') | ||
args = parser.parse_args() | ||
|
||
# start twitter bot | ||
marvin = TwitterBot(args.email, args.password, args.hashtag, args.since) | ||
marvin.login() | ||
marvin.farm() | ||
marvin.like() | ||
marvin.profile() |