Тестовая тема, отвечать не надо

Vershitel_sudeb

Пользователь
Пользователь
Мар 17, 2021
42
9
8
Пишу программу форума, проверяю работу ответов
 

Vershitel_sudeb

Пользователь
Пользователь
Мар 17, 2021
42
9
8
Что ж, первая версия программы связи с форумом готова
Пока можно войти на форум, открыть тему (по ссылке), посмотреть ее заголовок и текст, ответить
Смотреть ответы пока нельзя

Python:
import requests as rq
import os.path as path
from bs4 import BeautifulSoup as bs
import pickle


def get_data(code, action):
    if str(type(code)) != "<class 'bs4.BeautifulSoup'>":
        code = bs(code, 'lxml')
    return dict((i.get('name'), i.get('value')) for i in code.find('form', action=action).find_all('input'))


def get_lap():
    login = input('Login: ')
    password = input('Password: ')
    return login, password


def login():
    session = rq.Session()
    if not path.isfile('cookies.bin'):
        html = bs(session.get('https://itfy.org/login/login').content, 'lxml')
        login, password = get_lap()
        data = get_data(html, '/login/login')
        data['login'] = login
        data['password'] = password
        session.post('https://itfy.org/login/login', data=data)
        cookies = [
            {'domain': key.domain, 'name': key.name, 'path': key.path, 'value': key.value}
            for key in ses.cookies
        ]
        with open('cookies.bin', 'wb') as file:
            pickle.dump(cookies, file)
    else:
        with open('cookies.bin', 'rb') as file:
            cookies = pickle.load(file)
        for cook in cookies:
            session.cookies.set(**cook)
    return session


class Them:
    def __init__(self, link, session):
        self.link = link
        self.ses = session
        self.name = self.link.replace('https://itfy.org/threads/', '')[:-1]
        self.html = bs(self.ses.get(self.link).content, 'lxml')
        self.title = self.html.find('h1', class_='p-title-value').text
        self.text = self.html.find('div', class_='bbWrapper').text

    def post_message(self, text=None):
        them_data = get_data(self.html, f'/threads/{self.name}/add-reply')
        if text is None:
            text = input()
        them_data['message'] = text
        self.ses.post(f'https://itfy.org/threads/{self.name}/add-reply', data=them_data)
        self.update()

    def update(self):
        self.html = bs(self.ses.get(self.link).content, 'lxml')


ses = login()
 

Вложения

  • 919 байт Просмотры: 0

Форум IT Специалистов