Esempio n. 1
0
def profile_in_inbox(session, profile_id, inbox=True):
    """Отправка сообщения

    Keyword arguments:
    session -- сессия залогиненого аккаунта
    profile_id -- ID профиля которого мы ищем в Inbox
    """
    # Ищем в Inbox сообщение профиля
    data = {"filterID": profile_id, "filterPPage": "20"}
    if inbox:
        link = "https://www.natashaclub.com/inbox.php"
    else:
        link = "https://www.natashaclub.com/outbox.php"
    response = send_request(session=session,
                            method="POST",
                            link=link,
                            data=data)

    inbox_page = get_parsed_page(response)
    numbers = [
        int(number.text)
        for number in inbox_page.find("td", class_="panel").find_all("b")
    ]
    # Эта переменная показывает общее количество сообщений от профиля,
    # что мы искали в инбоксе
    total_messages_in_inbox_from_profile = numbers[0]
    # Здесь показывается количетсво новых сообщений от этого профиля
    new_messages_in_inbox_from_profile = numbers[1]

    return total_messages_in_inbox_from_profile, \
           new_messages_in_inbox_from_profile
Esempio n. 2
0
def get_message_text(session, message_url: str):
    # get message text from link
    response = send_request(session=session,
                            method="POST",
                            link="https://www.natashaclub.com/" + message_url)
    message_page = get_parsed_page(response)
    message_text = message_page.find('td', class_='table').text
    message_text = text_format(message_text)
    return message_text
Esempio n. 3
0
def dialog_page_upload(current_profile_session,
                       data: dict,
                       page: int,
                       open_msg_count: int,
                       chat_id: bytes,
                       sender_id: str,
                       inbox: bool,
                       download_new: bool = False):
    data['page'] = page

    if inbox:
        link = "https://www.natashaclub.com/inbox.php"
    else:
        link = "https://www.natashaclub.com/outbox.php"
    response = send_request(session=current_profile_session,
                            method="GET",
                            link=link + "?page={page}&"
                            "filterID={filterID}&"
                            "filterPPage={filterPPage}".format(**data))
    inbox_page = get_parsed_page(response)

    messages = [tr for tr in inbox_page.find_all('tr', class_='table')]
    messages = list(map(lambda x: [td for td in x.find_all('td')], messages))
    messages = [col for col in messages if len(col) == 5 - int(not inbox)]

    for i in range(len(messages)):
        # if need to download less messages than exists on page
        if i == open_msg_count:
            break
        text_time = messages[i][3 - int(not inbox)].text
        time = datetime.strptime(text_time, " %Y-%m-%d %H:%M:%S ")
        text_preview = messages[i][4 - int(not inbox)].text
        message_url = messages[i][4 - int(not inbox)].find('a')["href"]
        if inbox:
            viewed = not messages[i][1 - int(not inbox)].contents[1]['src'] \
                         == '/templates/tmpl_nc/images_nc/new.gif'
        elif download_new:
            viewed = True
        else:
            viewed = not messages[i][1 - int(not inbox)].text == '\nNot read'

        if viewed or download_new:
            text = get_message_text(session=current_profile_session,
                                    message_url=message_url)
        else:
            text = text_preview
        db_message_create(chat_id=chat_id,
                          send_time=time,
                          viewed=viewed,
                          sender=sender_id,
                          text=text)
Esempio n. 4
0
def limit_out(session, receiver_profile_id):
    """Бывает, что аккаунт который рассылает сообщения достигает лимита по
    рассылке. Это видно когда мы переходим
    на страницу какого-то профиля и нажимаем отправить бесплатное сообщение,
    тогда оно показывает что лимит исчерпан

    Keyword arguments:
    send_free_message_page -- страница, которая появляется при нажатии кнопи
    отправить сообщение
    """
    response = send_request(session=session,
                            method="GET",
                            link="https://www.natashaclub.com/compose.php?ID"
                            "=" + receiver_profile_id)
    send_free_message_page = get_parsed_page(response)
    text = send_free_message_page.find("div", id="ContentDiv").find(
        "td", class_="text").text
    if "Sorry, but you've reached your limit for today." in text:
        return True
    else:
        return False
Esempio n. 5
0
def first_letter_sent(session, profile_id) -> bool:
    """При нажатии на кнопку (отправить письмо), может перейти на страницу
    где написано
    You can write only 1 first letter. И данного профиля может не быть в
    Inbox и Outbox. Поэтому создана такая вот
    дополнительная проверка

    Keyword arguments:
    session -- сессия залогиненого аккаунта
    profile_id -- ID профиля которому будем отсылать письмо
    """
    response = send_request(session,
                            method="GET",
                            link="https://www.natashaclub.com/compose.php?ID"
                            "=" + profile_id)
    compose_new_message_page = get_parsed_page(response)
    text = compose_new_message_page.find("td", class_="text").text
    if text == "You can write only 1 first letter":
        return True

    return False