Skip to content

Commit

Permalink
selenium
Browse files Browse the repository at this point in the history
  • Loading branch information
Cyclenerd committed Aug 18, 2023
1 parent 44a5f03 commit 22dc530
Show file tree
Hide file tree
Showing 3 changed files with 264 additions and 0 deletions.
17 changes: 17 additions & 0 deletions selenium-bots/README.md
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`.
141 changes: 141 additions & 0 deletions selenium-bots/liked.txt
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
106 changes: 106 additions & 0 deletions selenium-bots/twitter-bot.py
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()

0 comments on commit 22dc530

Please sign in to comment.