Esempio n. 1
0
def getLogin():
    username = input(dateInfo('Enter your username: '******'Enter your password: '******'username': base64.b64encode(bytes(username, 'utf-8')).decode('utf-8'),
        'password': base64.b64encode(bytes(password, 'utf-8')).decode('utf-8'),
    }

    return loginInfo
Esempio n. 2
0
def saveLogin(loginInfo):
    save = input(
        dateInfo('Would you like to save your username and password? (Y/N): '))

    loginInfo.update({'saveLogin': save.upper()})

    with open('login.json', 'w') as loginFile:
        loginFile.write(json.dumps(loginInfo))

    return loginInfo
Esempio n. 3
0
def readPosts(webpage):
    try:
        response = urllib.request.urlopen(webpage)
    except ValueError as e:
        print(dateInfo('Message: ' + str(e)))
        quit()

    html = response.read()

    soup = BeautifulSoup(html, 'html.parser')
    posts = soup.find_all('a', class_='board-topic-title')

    return posts
Esempio n. 4
0
def getUpvCounter(driver):
    driver.refresh()

    try:
        upvCounter = driver.find_element_by_xpath(
            '/html/body/div[2]/div[2]/table[2]/tbody/tr[2]/td[2]'
        ).get_attribute('innerHTML')
    except NoSuchElementException as e:
        print(dateInfo(str(e).strip('\n')))
        quit()

    upvCounter = upvCounter.split()

    return [int(num) for num in upvCounter if num.isdigit()]
Esempio n. 5
0
def login(loginInfo, driver):
    try:
        driver.get('https://uk.alienwarearena.com/login')
    except InvalidArgumentException as e:
        print(dateInfo(str(e).strip('\n')))
        quit()

    try:
        driver.find_element_by_id('_username').send_keys(
            base64.b64decode(loginInfo['username']).decode('utf-8'))

        driver.find_element_by_id('_password').send_keys(
            base64.b64decode(loginInfo['password']).decode('utf-8'))

        driver.find_element_by_name('_login').click()
    except NoSuchElementException as e:
        print(dateInfo(str(e).strip('\n')))
        quit()

    if driver.current_url == 'https://uk.alienwarearena.com/login':
        print(dateInfo('Incorrect login details.'))
        loginInfo = getLogin()
        saveLogin(loginInfo)
        login(loginInfo, driver)
Esempio n. 6
0
def upvote(driver, upvLinks):
    for link in upvLinks:
        print(
            dateInfo('Getting the {} post ({})...'.format(
                num2words((upvLinks.index(link)) + 1, to='ordinal'), link)))

        try:
            driver.get(link)
        except InvalidArgumentException as e:
            print(dateInfo(str(e).strip('\n')))
            continue

        try:
            upvChevron = driver.find_element_by_xpath(
                "//*[contains(@class, 'fa fa-chevron-up')]")

            if not upvChevron.get_attribute('style'):
                upvChevron.click()
                upvCounter = getUpvCounter(driver)
                print(
                    dateInfo('Upvoted! ({}/{})'.format(upvCounter[0],
                                                       upvCounter[1])))
            else:
                print(dateInfo('Already upvoted.'))

            upvCounter = getUpvCounter(driver)

            if upvCounter[0] == upvCounter[1]:
                print(dateInfo('Upvoting finished!'))

                driver.close()
                print(dateInfo('Terminated Firefox.'))
                quit()

        except NoSuchElementException as e:
            print(dateInfo(str(e).strip('\n')))
            continue
Esempio n. 7
0
def main(headless=True):
    # 1 Login
    loginInfo = login.getLoginInfo()

    print(dateInfo('Configuring Firefox...'))
    options = Options()
    options.headless = True

    print(dateInfo('Launching Firefox...'))
    driver = webdriver.Firefox(options=options if headless else None)

    print(dateInfo('Logging in...'))
    login.login(loginInfo, driver)

    # 2 Declare siteLinksIdx and upvCounter
    siteLinksIdx = 0
    upvCounter = upvote.getUpvCounter(driver)

    # 3 Check if upvotes == goal
    if upvCounter[0] == upvCounter[1]:
        print(dateInfo('Already upvoted 20 posts.'))

        driver.close()
        print(dateInfo('Terminated Firefox.'))

    # 4 Upvoting loop
    while upvCounter[0] < upvCounter[1]:
        print(dateInfo('Getting links...'))
        posts = getLinks.readPosts(getSiteLinks()[siteLinksIdx])
        posts = getLinks.filterPosts(posts)
        upvLinks = getLinks.getLinks(posts)

        upvote.upvote(driver, upvLinks)

        upvCounter = upvote.getUpvCounter(driver)
        siteLinksIdx += 1