# rvsnapchat

A functional Python client that reverse-engineers the Snapchat Web frontend to programmatically retrieve public user profiles, stories, and highlights. 

Due to the heavy encryption, certificate pinning, and gRPC implementations on Snapchat's mobile apps, a pure HTTP Python API is frequently rate-limited or blocked. This tool uses `playwright` (a headless browser) to seamlessly bypass TLS fingerprinting and extract structured JSON directly from Snapchat's internal `__NEXT_DATA__` state.

## Setup

1. Create a virtual environment and install the requirements:
```bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
playwright install chromium
```

## Usage

You can use the `SnapchatClient` to extract data.

```python
from client import SnapchatClient

client = SnapchatClient(headless=True)
data = client.get_full_data("kyliejenner")

print(data['profile']['username'])
print(data['profile']['subscriberCount'])

# Get active stories
print(len(data['story'].get('snapList', [])))

# Get highlights
print(len(data['curatedHighlights']))
print(len(data['spotlightHighlights']))
```

## Testing
Run the test suite using `unittest`:
```bash
python -m unittest test_snapchat.py
```
