90 lines
4.3 KiB
Python
90 lines
4.3 KiB
Python
import time
|
|
import sys
|
|
from termcolor import colored
|
|
from classes.browser import Browser
|
|
from selenium.webdriver.common.by import By
|
|
|
|
SCRAPTF = ''
|
|
USERNAME = ''
|
|
COOKIE_DOMAIN = '.scrap.tf'
|
|
BASE_URL = 'https://scrap.tf'
|
|
RAFFLE_URL = '/raffles/'
|
|
PAGINATION_ATTEMPTS = 0
|
|
BROWSER = None
|
|
|
|
def load_arguments():
|
|
global SCRAPTF, USERNAME
|
|
SCRAPTF = sys.argv[1]
|
|
USERNAME = sys.argv[2]
|
|
|
|
def start_browser():
|
|
global BROWSER
|
|
try:
|
|
BROWSER = Browser()
|
|
except KeyboardInterrupt as e:
|
|
print(
|
|
colored(f"Received an interrupt signal (Ctrl+C) during browser instance creation, assuming panic and shutting down. {e}", "yellow"))
|
|
sys.exit()
|
|
except Exception as e:
|
|
print(
|
|
colored(f"Fatal error during browser instance creation: {e}", "red"))
|
|
|
|
def set_cookies():
|
|
global BROWSER
|
|
BROWSER.open(BASE_URL + RAFFLE_URL)
|
|
BROWSER.add_cookie('scraptf', SCRAPTF, COOKIE_DOMAIN, BASE_URL)
|
|
BROWSER.add_cookie('ncmp-cc', '', COOKIE_DOMAIN, BASE_URL)
|
|
BROWSER.add_cookie('ncmp', 'CP3FdEAP3FdEADyvJAENAeEgAP_gAEPgACiQg1NX_H__bX9v-Xr36ft0eY1f99j77sQxBhfJs-4FyLvW_JwX32EyNE26tqYKmRIEu3ZBIQFtHJnURVihaogVrzHsYkGcgTNKJ-BkgHMRa2dYCF5vmYtj-QKZ5_p_d3f52T_9_dv-3dzzz9Vnv3e9fmdlcKida59tH_n_bRKb-7Ie9_7-_4v09N_rk2_eTVv_9evv71-u_t____9_9__AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEQamr_j__tr-3_L179P26PMav--x992IYgwvk2fcC5F3rfk4L77CZGibdW1MFTIkCXbsgkIC2jkzqIqxQtUQK15j2MSDOQJmlE_AyQDmItbOsBC83zMWx_IFM8_0_u7v87J_-_u3_bu555-qz37vevzOyuFROtc-2j_z_tolN_dkPe_9_f8X6em_1ybfvJq3_-vX396_Xf2____-_-__gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACAA.YAAAAAAAAAAA', COOKIE_DOMAIN, BASE_URL)
|
|
|
|
def close_browser():
|
|
global BROWSER
|
|
if BROWSER:
|
|
BROWSER.quit()
|
|
|
|
def check_notifications():
|
|
global BROWSER
|
|
notices = BROWSER.get_element('.user-notices-count').text
|
|
if notices != '0':
|
|
print(colored('You have ' + notices + ' new notices!', 'red'))
|
|
|
|
def unentered_raffles():
|
|
global BROWSER
|
|
BROWSER.open(BASE_URL + RAFFLE_URL)
|
|
for x in range(0, PAGINATION_ATTEMPTS):
|
|
BROWSER.scroll_down()
|
|
if BROWSER.element_exists('.panel-body raffle-pagination-done'):
|
|
break
|
|
raffles = BROWSER.get_elements('#raffles-list .panel-raffle:not(.raffle-entered)')
|
|
raffle_list = []
|
|
for element in raffles:
|
|
link_element = element.find_element(By.CSS_SELECTOR, 'a')
|
|
relative_url = link_element.get_attribute('href').replace(BASE_URL, '').replace(RAFFLE_URL, '')
|
|
if relative_url:
|
|
raffle_list.append(relative_url)
|
|
print(colored('There are ' + str(len(raffle_list)) + ' raffles to enter for ' + USERNAME + '...', 'blue'))
|
|
check_notifications()
|
|
return raffle_list
|
|
|
|
def enter_raffle(raffle):
|
|
global BROWSER
|
|
BROWSER.open(BASE_URL + RAFFLE_URL + raffle)
|
|
result = BROWSER.click_element('button.btn-lg:not(#raffle-enter)')
|
|
if result:
|
|
if BROWSER.find_element('.raffle-entered-msg', True):
|
|
print(colored('Succesfully entered ' + BROWSER.get_element('title').text[:-19] + ' (' + raffle + ')!', 'green'))
|
|
time.sleep(5)
|
|
else:
|
|
print(colored('Couldn\'t enter ' + BROWSER.get_element('title').text[:-19] + ' (' + raffle + '), check the browser instance for Captcha!', 'red'))
|
|
input("Press Enter to continue...")
|
|
return result
|
|
|
|
def enter_raffles():
|
|
raffles = unentered_raffles()
|
|
for raffle in raffles:
|
|
enter_raffle(raffle)
|
|
|
|
load_arguments()
|
|
start_browser()
|
|
set_cookies()
|
|
enter_raffles()
|
|
close_browser() |