Path: blob/main/onlyfans_scraper/api/messages.py
961 views
r"""1_ __2___ _ __ | | _ _ / _| __ _ _ __ ___ ___ ___ _ __ __ _ _ __ ___ _ __3/ _ \ | '_ \ | || | | || |_ / _` || '_ \ / __| _____ / __| / __|| '__| / _` || '_ \ / _ \| '__|4| (_) || | | || || |_| || _|| (_| || | | |\__ \|_____|\__ \| (__ | | | (_| || |_) || __/| |5\___/ |_| |_||_| \__, ||_| \__,_||_| |_||___/ |___/ \___||_| \__,_|| .__/ \___||_|6|___/ |_|7"""89import httpx1011from ..constants import messagesEP, messagesNextEP12from ..utils import auth131415def scrape_messages(headers, user_id, message_id=0) -> list:16ep = messagesNextEP if message_id else messagesEP17url = ep.format(user_id, message_id)1819with httpx.Client(http2=True, headers=headers) as c:20auth.add_cookies(c)21c.headers.update(auth.create_sign(url, headers))2223r = c.get(url, timeout=None)24if not r.is_error:25messages = r.json()['list']26if not messages:27return messages28messages += scrape_messages(headers, user_id, messages[-1]['id'])29return messages30r.raise_for_status()313233def parse_messages(messages: list, user_id):34messages_with_media = [(message['media'], message['createdAt'])35for message in messages if message['fromUser']['id'] == user_id and message['media']]3637messages_urls = []38for message in messages_with_media:39media, date = message40for m in media:41if m['canView']:42messages_urls.append((m['src'], date, m['id'], m['type']))4344return messages_urls454647