import re from selenium.webdriver.common.by import By import misc from credentials import pda users = {} topics = ( 191879, # Инвайты на закрытые ресурсы ) misc.count_is_null('pda') for topic in topics: driver = misc.web_surfing() driver.get(f"{pda['url']}/forum/index.php?showtopic={topic}") pages = int( re.findall('\d+', driver.find_element(By.CLASS_NAME, 'pagelink').text)[0]) * 20 for page in range(0, pages, 20): driver.get(f"{pda['url']}/forum/index.php?showtopic={topic}&st={page}") all = driver.find_elements(By.XPATH, '//*[@class="normalname"]/a') for user in all: # Словарь {id: имя пользователя} users[re.findall('\d{2,}', user.get_attribute("href"))[0]] = user.text misc.saving_users('pda', users) misc.count_is_null('pda')
'invitesmag', # Купля-Продажа обмен инвайтами (приглашениями) 'flac_music', # Waffles.CH & What.CD (Apollo.rip & Redacted.ch) 'jpopsuki', # Jpopsuki 'btinvite', # БитТОРРЕНТ трекеры – обмен инвайтами, помощь 'club3111532', # Soulseek 'deepbassnine', # deepbassnine.com (db9) 'club9680876' # karagarga ] for item in [group for group in api.get_groups(groups)]: for i in item.get_members(): if i.can_write_private_message is True and i.is_friend is False: users.add((i.id, i.first_name, i.last_name)) table = 'vk' users_db = sqlite3.connect('users.db') users_db.executemany( f""" INSERT OR IGNORE INTO {table} ( id, first_name, last_name ) values(?, ?, ?) """, users) users_db.commit() misc.count_is_null(table)
system_msg = 'Сообщение не может быть отправлено, так как вы разослали слишком много сообщений за последнее время' while True: user_id = misc.select_one_user_to_send('vk') driver.get(f"{vk['url']}/id{user_id}") time.sleep(5) try: send = driver.find_element(By.CLASS_NAME, 'FlatButton__content') if send.text.startswith('Написать сообщение') is True: send.click() time.sleep(5) driver.find_element(By.ID, 'mail_box_editable').send_keys(misc.message_ru) time.sleep(5) driver.find_element(By.CLASS_NAME, 'FlatButton__content').click() time.sleep(5) if driver.find_element( By.ID, 'system_msg').text.startswith(system_msg) is True: print(user_id, "break") break else: misc.successfully_sent('vk', user_id) time.sleep(60) elif send.text.startswith('Отправить подарок') is True: misc.sending_error('vk', user_id) except NoSuchElementException: misc.sending_error('vk', user_id) misc.count_is_null('vk')
import time from selenium.webdriver.common.by import By from selenium.common.exceptions import ElementNotInteractableException import misc from credentials import funkysouls # Заполняем форму авторизации driver = misc.web_surfing(tor=True) driver.get(f"{funkysouls['url']}/login") driver.find_element(By.ID, 'username').send_keys(f"{funkysouls['login']}") driver.find_element(By.ID, 'password').send_keys(f"{funkysouls['password']}") driver.find_element(By.CSS_SELECTOR, '.controls > button:nth-child(1)').click() while True: user_id = misc.select_one_user_to_send('funkysouls') driver.get(f"{funkysouls['url']}/u/{user_id}/pm") # Заполнение формы отправки сообщения try: driver.find_element(By.NAME, 'msg_title').send_keys('Частные торрент-трекеры') driver.find_element(By.ID, 'answer_form').send_keys(misc.message_ru) driver.find_element(By.ID, 'add_tracking').click() driver.find_element(By.NAME, 'submit').click() misc.successfully_sent('funkysouls', user_id) misc.count_is_null('funkysouls') # Ожидание time.sleep(10) # Закрытие попапа о новом сообщении, который прерывает отправку except ElementNotInteractableException: driver.find_element(By.CLASS_NAME, 'close').click()
driver.find_element(By.XPATH, password).send_keys(f"{rutracker['password']}") driver.find_element(By.CLASS_NAME, 'bold.long').click() # Отправляем сообщения в цикле, заполняем send в базе while True: user_id = misc.select_one_user_to_send('rutracker') driver.get(f"{rutracker['url']}/forum/privmsg.php?mode=post&u={user_id}") # Заполнение формы отправки сообщения try: driver.find_element( By.ID, 'post-msg-subj').send_keys("Частные торрент-трекеры") driver.find_element(By.ID, 'post-textarea').send_keys(misc.message_ru) driver.find_element(By.ID, 'post-submit-btn').click() # Ваше сообщение было отправлено \ Вы превысили лимит количества исходящих сообщений (20) # Учитываются ЛС \ Исходящие if driver.find_element(By.CLASS_NAME, 'mrg_16').text.startswith( 'Вы превысили лимит количества исходящих сообщений') is True: print(user_id, "break") break else: misc.successfully_sent('rutracker', user_id) # Обрабатываем исключение если элемента нет # Возникает из-за того, что пользователю нельзя отправлять сообщения except NoSuchElementException: misc.sending_error('rutracker', user_id) # Ожидание time.sleep(60) misc.count_is_null('rutracker')